git.delta.rocks / unique-network / refs/commits / 7aaf8c512505

difftreelog

bench and contract added

PraetorP2022-10-21parent: #7bd00bb.patch.diff
in: master

20 files changed

addedbin/tests/src/eth/evmToSubstrate/EvmToSubstrate.abidiffbeforeafterboth
--- /dev/null
+++ b/bin/tests/src/eth/evmToSubstrate/EvmToSubstrate.abi
@@ -0,0 +1 @@
+[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_toEth","type":"address"},{"indexed":false,"internalType":"uint256","name":"_toSub","type":"uint256"},{"indexed":false,"internalType":"address","name":"_collection","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MintToSub","type":"event"},{"inputs":[{"internalType":"address","name":"_collection","type":"address"},{"internalType":"uint256","name":"_substrateReceiver","type":"uint256"}],"name":"mintToSubstrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collection","type":"address"},{"internalType":"uint256","name":"_substrateReceiver","type":"uint256"},{"components":[{"internalType":"string","name":"field_0","type":"string"},{"internalType":"bytes","name":"field_1","type":"bytes"}],"internalType":"struct Tuple21[]","name":"_properties","type":"tuple[]"}],"name":"mintToSubstrateBulkProperty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collection","type":"address"},{"internalType":"uint256","name":"_substrateReceiver","type":"uint256"},{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct Property[]","name":"properties","type":"tuple[]"}],"name":"mintToSubstrateWithProperty","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
addedbin/tests/src/eth/evmToSubstrate/EvmToSubstrate.bindiffbeforeafterboth
--- /dev/null
+++ b/bin/tests/src/eth/evmToSubstrate/EvmToSubstrate.bin
@@ -0,0 +1 @@
+608060405234801561001057600080fd5b506111d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633a0dbb1a14610046578063440dff9d1461005b5780637a8d97861461006e575b600080fd5b610059610054366004610d6f565b610081565b005b610059610069366004610d6f565b610472565b61005961007c366004610dc9565b6109fb565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156100c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ed9190610df3565b6101125760405162461bcd60e51b815260040161010990610e1c565b60405180910390fd5b82806101555760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa15801561019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c29190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201156104165760408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b81523060048201528a906001600160a01b03821690636a627842906024016020604051808303816000875af11580156102a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c69190610f4c565b604051630a769d3760e11b81529092506001600160a01b038216906314ed3a6e906102f99085908d908d90600401610fd4565b600060405180830381600087803b15801561031357600080fd5b505af1158015610327573d6000803e3d6000fd5b5050604080518082018252308152600060208083018290528351808501855291825281018f9052915163d5cf430b60e01b81526001600160a01b038616945063d5cf430b935061037c92908790600401611088565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b5050505050610416565b60405162461bcd60e51b815260206004820152603160248201527f57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c6044820152701e481dda5d1a08139195081bdc88149195607a1b6064820152608401610109565b6040805160008152602081018b90526001600160a01b038c16818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050505050565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104de9190610df3565b6104fa5760405162461bcd60e51b815260040161010990610e1c565b828061053d5760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105aa9190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b29582016108065760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106669190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d39190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c85818110610701576107016110c1565b905060200281019061071391906110d7565b61071d90806110f7565b8e8e8781811061072f5761072f6110c1565b905060200281019061074191906110d7565b61074f9060208101906110f7565b6040518663ffffffff1660e01b815260040161076f95949392919061113e565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050806107ab90611177565b90506106d7565b50604080518082018252308152600060208083018290528351808501855291825281018d9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b9261037c929091908790600401611088565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b45760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af9190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c8581811061094a5761094a6110c1565b905060200281019061095c91906110d7565b61096690806110f7565b8e8e87818110610978576109786110c1565b905060200281019061098a91906110d7565b6109989060208101906110f7565b6040518663ffffffff1660e01b81526004016109b895949392919061113e565b600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b50505050806109f490611177565b9050610920565b604051639811b0c760e01b8152336004820152829081906001600160a01b03821690639811b0c790602401602060405180830381865afa158015610a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a679190610df3565b610a835760405162461bcd60e51b815260040161010990610e1c565b60008490506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af09190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201610c3e576040516335313c2160e11b815230600482015287906001600160a01b03821690636a627842906024015b6020604051808303816000875af1158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb29190610f4c565b604080518082018252308152600060208083018290528351808501855291825281018b9052915163d5cf430b60e01b81529294506001600160a01b0384169263d5cf430b92610c0692918790600401611088565b600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b5050505050610cae565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b815230600482015287906001600160a01b03821690636a62784290602401610b6f565b6040805160008152602081018890526001600160a01b038916818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050565b80356001600160a01b0381168114610d1e57600080fd5b919050565b60008083601f840112610d3557600080fd5b50813567ffffffffffffffff811115610d4d57600080fd5b6020830191508360208260051b8501011115610d6857600080fd5b9250929050565b60008060008060608587031215610d8557600080fd5b610d8e85610d07565b935060208501359250604085013567ffffffffffffffff811115610db157600080fd5b610dbd87828801610d23565b95989497509550505050565b60008060408385031215610ddc57600080fd5b610de583610d07565b946020939093013593505050565b600060208284031215610e0557600080fd5b81518015158114610e1557600080fd5b9392505050565b60208082526030908201527f4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2060408201526f18d85b1b081d1a1a5cc81b595d1a1bd960821b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610e9557600080fd5b825167ffffffffffffffff80821115610ead57600080fd5b818501915085601f830112610ec157600080fd5b815181811115610ed357610ed3610e6c565b604051601f8201601f19908116603f01168101908382118183101715610efb57610efb610e6c565b816040528281528886848701011115610f1357600080fd5b600093505b82841015610f355784840186015181850187015292850192610f18565b600086848301015280965050505050505092915050565b600060208284031215610f5e57600080fd5b5051919050565b6000808335601e19843603018112610f7c57600080fd5b830160208101925035905067ffffffffffffffff811115610f9c57600080fd5b803603821315610d6857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006040808301868452602082818601528186835260608601905060608760051b8701019250876000805b8981101561107857888603605f190184528235368c9003603e19018112611024578283fd5b8b016110308180610f65565b8989526110408a8a018284610fab565b91505061104f87830183610f65565b9250888203888a0152611063828483610fab565b98505050938501935091840191600101610fff565b50939a9950505050505050505050565b83516001600160a01b03908116825260209485015185830152835116604082015291909201516060820152608081019190915260a00190565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126110ed57600080fd5b9190910192915050565b6000808335601e1984360301811261110e57600080fd5b83018035915067ffffffffffffffff82111561112957600080fd5b602001915036819003821315610d6857600080fd5b858152606060208201526000611158606083018688610fab565b828103604084015261116b818587610fab565b98975050505050505050565b60006001820161119757634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212206fee43cab49543809f191e238525b8a47306c665c42f86e318153d2b9e9d1de064736f6c63430008110033
\ No newline at end of file
addedbin/tests/src/eth/evmToSubstrate/EvmToSubstrate.jsondiffbeforeafterboth
--- /dev/null
+++ b/bin/tests/src/eth/evmToSubstrate/EvmToSubstrate.json
@@ -0,0 +1,7415 @@
+{
+    "contractName": "EvmToSubstrate",
+    "abi": [
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "_toEth",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "_toSub",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "_collection",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "_tokenId",
+                    "type": "uint256"
+                }
+            ],
+            "name": "MintToSub",
+            "type": "event"
+        },
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "_collection",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_substrateReceiver",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mintToSubstrate",
+            "outputs": [],
+            "stateMutability": "nonpayable",
+            "type": "function"
+        },
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "_collection",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_substrateReceiver",
+                    "type": "uint256"
+                },
+                {
+                    "components": [
+                        {
+                            "internalType": "string",
+                            "name": "field_0",
+                            "type": "string"
+                        },
+                        {
+                            "internalType": "bytes",
+                            "name": "field_1",
+                            "type": "bytes"
+                        }
+                    ],
+                    "internalType": "struct Tuple21[]",
+                    "name": "_properties",
+                    "type": "tuple[]"
+                }
+            ],
+            "name": "mintToSubstrateBulkProperty",
+            "outputs": [],
+            "stateMutability": "nonpayable",
+            "type": "function"
+        },
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "_collection",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_substrateReceiver",
+                    "type": "uint256"
+                },
+                {
+                    "components": [
+                        {
+                            "internalType": "string",
+                            "name": "key",
+                            "type": "string"
+                        },
+                        {
+                            "internalType": "bytes",
+                            "name": "value",
+                            "type": "bytes"
+                        }
+                    ],
+                    "internalType": "struct Property[]",
+                    "name": "properties",
+                    "type": "tuple[]"
+                }
+            ],
+            "name": "mintToSubstrateWithProperty",
+            "outputs": [],
+            "stateMutability": "nonpayable",
+            "type": "function"
+        }
+    ],
+    "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_toEth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toSub\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MintToSub\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_substrateReceiver\",\"type\":\"uint256\"}],\"name\":\"mintToSubstrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_substrateReceiver\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple21[]\",\"name\":\"_properties\",\"type\":\"tuple[]\"}],\"name\":\"mintToSubstrateBulkProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_substrateReceiver\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"internalType\":\"struct Property[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"mintToSubstrateWithProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"MintToSub(address,uint256,address,uint256)\":{\"details\":\"This emits when a mint to a substrate address has been made.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol\":\"EvmToSubstrate\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":{\"keccak256\":\"0x7ded5e99243528ed63a0986417ad670c277ad42d348bf06f407fd06a12cc08a3\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://43a6299b0510c8feb55800153cee0ea845f7b06a4002bb122d99c6cc938f93c2\",\"dweb:/ipfs/QmPcgPtBkeyMe6LkTYcT6xD5WJhw8nLGaCrbEu2kUHGjgu\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":{\"keccak256\":\"0xbf6cbc8921b46aceef74fcb0218f8af41a5c1c8c09278cd29b055d39af4ba06c\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://cb309a7e806ab15bf7db1469c70ce547e358783a8be709d48632062600bbdf58\",\"dweb:/ipfs/QmcUViezUamzuLB9Pp5AjwNbSNLdVqnrSbvrRMkHoEb5DY\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol\":{\"keccak256\":\"0x36f13dcad1a598bad13e4019319da9ca6161782448bd7fc698c1e265140e5460\",\"license\":\"Apache License\",\"urls\":[\"bzz-raw://2e32be5bdb8265a44cbdb50306ea53fb56c52dbbe7b8d742af30f46e48133e13\",\"dweb:/ipfs/QmZfaDgiXDvyERJvYuvGXWT5FeRpPSdH5UuGgDnDxP5RVk\"]}},\"version\":1}",
+    "bytecode": "608060405234801561001057600080fd5b506111d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633a0dbb1a14610046578063440dff9d1461005b5780637a8d97861461006e575b600080fd5b610059610054366004610d6f565b610081565b005b610059610069366004610d6f565b610472565b61005961007c366004610dc9565b6109fb565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156100c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ed9190610df3565b6101125760405162461bcd60e51b815260040161010990610e1c565b60405180910390fd5b82806101555760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa15801561019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c29190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201156104165760408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b81523060048201528a906001600160a01b03821690636a627842906024016020604051808303816000875af11580156102a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c69190610f4c565b604051630a769d3760e11b81529092506001600160a01b038216906314ed3a6e906102f99085908d908d90600401610fd4565b600060405180830381600087803b15801561031357600080fd5b505af1158015610327573d6000803e3d6000fd5b5050604080518082018252308152600060208083018290528351808501855291825281018f9052915163d5cf430b60e01b81526001600160a01b038616945063d5cf430b935061037c92908790600401611088565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b5050505050610416565b60405162461bcd60e51b815260206004820152603160248201527f57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c6044820152701e481dda5d1a08139195081bdc88149195607a1b6064820152608401610109565b6040805160008152602081018b90526001600160a01b038c16818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050505050565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104de9190610df3565b6104fa5760405162461bcd60e51b815260040161010990610e1c565b828061053d5760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105aa9190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b29582016108065760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106669190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d39190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c85818110610701576107016110c1565b905060200281019061071391906110d7565b61071d90806110f7565b8e8e8781811061072f5761072f6110c1565b905060200281019061074191906110d7565b61074f9060208101906110f7565b6040518663ffffffff1660e01b815260040161076f95949392919061113e565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050806107ab90611177565b90506106d7565b50604080518082018252308152600060208083018290528351808501855291825281018d9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b9261037c929091908790600401611088565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b45760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af9190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c8581811061094a5761094a6110c1565b905060200281019061095c91906110d7565b61096690806110f7565b8e8e87818110610978576109786110c1565b905060200281019061098a91906110d7565b6109989060208101906110f7565b6040518663ffffffff1660e01b81526004016109b895949392919061113e565b600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b50505050806109f490611177565b9050610920565b604051639811b0c760e01b8152336004820152829081906001600160a01b03821690639811b0c790602401602060405180830381865afa158015610a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a679190610df3565b610a835760405162461bcd60e51b815260040161010990610e1c565b60008490506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af09190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201610c3e576040516335313c2160e11b815230600482015287906001600160a01b03821690636a627842906024015b6020604051808303816000875af1158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb29190610f4c565b604080518082018252308152600060208083018290528351808501855291825281018b9052915163d5cf430b60e01b81529294506001600160a01b0384169263d5cf430b92610c0692918790600401611088565b600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b5050505050610cae565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b815230600482015287906001600160a01b03821690636a62784290602401610b6f565b6040805160008152602081018890526001600160a01b038916818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050565b80356001600160a01b0381168114610d1e57600080fd5b919050565b60008083601f840112610d3557600080fd5b50813567ffffffffffffffff811115610d4d57600080fd5b6020830191508360208260051b8501011115610d6857600080fd5b9250929050565b60008060008060608587031215610d8557600080fd5b610d8e85610d07565b935060208501359250604085013567ffffffffffffffff811115610db157600080fd5b610dbd87828801610d23565b95989497509550505050565b60008060408385031215610ddc57600080fd5b610de583610d07565b946020939093013593505050565b600060208284031215610e0557600080fd5b81518015158114610e1557600080fd5b9392505050565b60208082526030908201527f4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2060408201526f18d85b1b081d1a1a5cc81b595d1a1bd960821b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610e9557600080fd5b825167ffffffffffffffff80821115610ead57600080fd5b818501915085601f830112610ec157600080fd5b815181811115610ed357610ed3610e6c565b604051601f8201601f19908116603f01168101908382118183101715610efb57610efb610e6c565b816040528281528886848701011115610f1357600080fd5b600093505b82841015610f355784840186015181850187015292850192610f18565b600086848301015280965050505050505092915050565b600060208284031215610f5e57600080fd5b5051919050565b6000808335601e19843603018112610f7c57600080fd5b830160208101925035905067ffffffffffffffff811115610f9c57600080fd5b803603821315610d6857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006040808301868452602082818601528186835260608601905060608760051b8701019250876000805b8981101561107857888603605f190184528235368c9003603e19018112611024578283fd5b8b016110308180610f65565b8989526110408a8a018284610fab565b91505061104f87830183610f65565b9250888203888a0152611063828483610fab565b98505050938501935091840191600101610fff565b50939a9950505050505050505050565b83516001600160a01b03908116825260209485015185830152835116604082015291909201516060820152608081019190915260a00190565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126110ed57600080fd5b9190910192915050565b6000808335601e1984360301811261110e57600080fd5b83018035915067ffffffffffffffff82111561112957600080fd5b602001915036819003821315610d6857600080fd5b858152606060208201526000611158606083018688610fab565b828103604084015261116b818587610fab565b98975050505050505050565b60006001820161119757634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212206fee43cab49543809f191e238525b8a47306c665c42f86e318153d2b9e9d1de064736f6c63430008110033",
+    "deployedBytecode": "608060405234801561001057600080fd5b50600436106100415760003560e01c80633a0dbb1a14610046578063440dff9d1461005b5780637a8d97861461006e575b600080fd5b610059610054366004610d6f565b610081565b005b610059610069366004610d6f565b610472565b61005961007c366004610dc9565b6109fb565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156100c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ed9190610df3565b6101125760405162461bcd60e51b815260040161010990610e1c565b60405180910390fd5b82806101555760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa15801561019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c29190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201156104165760408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b81523060048201528a906001600160a01b03821690636a627842906024016020604051808303816000875af11580156102a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c69190610f4c565b604051630a769d3760e11b81529092506001600160a01b038216906314ed3a6e906102f99085908d908d90600401610fd4565b600060405180830381600087803b15801561031357600080fd5b505af1158015610327573d6000803e3d6000fd5b5050604080518082018252308152600060208083018290528351808501855291825281018f9052915163d5cf430b60e01b81526001600160a01b038616945063d5cf430b935061037c92908790600401611088565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b5050505050610416565b60405162461bcd60e51b815260206004820152603160248201527f57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c6044820152701e481dda5d1a08139195081bdc88149195607a1b6064820152608401610109565b6040805160008152602081018b90526001600160a01b038c16818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050505050565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104de9190610df3565b6104fa5760405162461bcd60e51b815260040161010990610e1c565b828061053d5760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105aa9190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b29582016108065760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106669190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d39190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c85818110610701576107016110c1565b905060200281019061071391906110d7565b61071d90806110f7565b8e8e8781811061072f5761072f6110c1565b905060200281019061074191906110d7565b61074f9060208101906110f7565b6040518663ffffffff1660e01b815260040161076f95949392919061113e565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050806107ab90611177565b90506106d7565b50604080518082018252308152600060208083018290528351808501855291825281018d9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b9261037c929091908790600401611088565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b45760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af9190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c8581811061094a5761094a6110c1565b905060200281019061095c91906110d7565b61096690806110f7565b8e8e87818110610978576109786110c1565b905060200281019061098a91906110d7565b6109989060208101906110f7565b6040518663ffffffff1660e01b81526004016109b895949392919061113e565b600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b50505050806109f490611177565b9050610920565b604051639811b0c760e01b8152336004820152829081906001600160a01b03821690639811b0c790602401602060405180830381865afa158015610a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a679190610df3565b610a835760405162461bcd60e51b815260040161010990610e1c565b60008490506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af09190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201610c3e576040516335313c2160e11b815230600482015287906001600160a01b03821690636a627842906024015b6020604051808303816000875af1158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb29190610f4c565b604080518082018252308152600060208083018290528351808501855291825281018b9052915163d5cf430b60e01b81529294506001600160a01b0384169263d5cf430b92610c0692918790600401611088565b600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b5050505050610cae565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b815230600482015287906001600160a01b03821690636a62784290602401610b6f565b6040805160008152602081018890526001600160a01b038916818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050565b80356001600160a01b0381168114610d1e57600080fd5b919050565b60008083601f840112610d3557600080fd5b50813567ffffffffffffffff811115610d4d57600080fd5b6020830191508360208260051b8501011115610d6857600080fd5b9250929050565b60008060008060608587031215610d8557600080fd5b610d8e85610d07565b935060208501359250604085013567ffffffffffffffff811115610db157600080fd5b610dbd87828801610d23565b95989497509550505050565b60008060408385031215610ddc57600080fd5b610de583610d07565b946020939093013593505050565b600060208284031215610e0557600080fd5b81518015158114610e1557600080fd5b9392505050565b60208082526030908201527f4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2060408201526f18d85b1b081d1a1a5cc81b595d1a1bd960821b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610e9557600080fd5b825167ffffffffffffffff80821115610ead57600080fd5b818501915085601f830112610ec157600080fd5b815181811115610ed357610ed3610e6c565b604051601f8201601f19908116603f01168101908382118183101715610efb57610efb610e6c565b816040528281528886848701011115610f1357600080fd5b600093505b82841015610f355784840186015181850187015292850192610f18565b600086848301015280965050505050505092915050565b600060208284031215610f5e57600080fd5b5051919050565b6000808335601e19843603018112610f7c57600080fd5b830160208101925035905067ffffffffffffffff811115610f9c57600080fd5b803603821315610d6857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006040808301868452602082818601528186835260608601905060608760051b8701019250876000805b8981101561107857888603605f190184528235368c9003603e19018112611024578283fd5b8b016110308180610f65565b8989526110408a8a018284610fab565b91505061104f87830183610f65565b9250888203888a0152611063828483610fab565b98505050938501935091840191600101610fff565b50939a9950505050505050505050565b83516001600160a01b03908116825260209485015185830152835116604082015291909201516060820152608081019190915260a00190565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126110ed57600080fd5b9190910192915050565b6000808335601e1984360301811261110e57600080fd5b83018035915067ffffffffffffffff82111561112957600080fd5b602001915036819003821315610d6857600080fd5b858152606060208201526000611158606083018688610fab565b828103604084015261116b818587610fab565b98975050505050505050565b60006001820161119757634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212206fee43cab49543809f191e238525b8a47306c665c42f86e318153d2b9e9d1de064736f6c63430008110033",
+    "sourceMap": "673:5833:5:-:0;;;;;;;;;;;;;;;;;;;",
+    "deployedSourceMap": "673:5833:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5448:1056;;;;;;:::i;:::-;;:::i;:::-;;3688:1757;;;;;;:::i;:::-;;:::i;2212:1473::-;;;;;;:::i;:::-;;:::i;5448:1056::-;1226:41;;-1:-1:-1;;;1226:41:5;;1256:10;1226:41;;;2239:51:6;5606:11:5;;;;-1:-1:-1;;;;;1226:29:5;;;;;2212:18:6;;1226:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1218:102;;;;-1:-1:-1;;;1218:102:5;;;;;;;:::i;:::-;;;;;;;;;5650:11;5680:20;5672:51:::1;;;::::0;-1:-1:-1;;;5672:51:5;;3202:2:6;5672:51:5::1;::::0;::::1;3184:21:6::0;3241:2;3221:18;;;3214:30;-1:-1:-1;;;3260:18:6;;;3253:48;3318:18;;5672:51:5::1;3000:342:6::0;5672:51:5::1;5728:25;5767:11;5728:51;;5783:22;5824:14;-1:-1:-1::0;;;;;5824:35:5::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5824:37:5::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;5808:55:::0;;::::1;::::0;;::::1;::::0;756:19:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;756:19:5;::::1;::::0;;;;5808:55;-1:-1:-1;5867:15:5::1;5891:44:::0;;;5887:541;::::1;;836:12;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;836:12:5::1;::::0;;::::1;::::0;5949:45;;;5945:483:::1;;6109:33;::::0;-1:-1:-1;;;6109:33:5;;6136:4:::1;6109:33;::::0;::::1;2239:51:6::0;6037:11:5;;-1:-1:-1;;;;;6109:18:5;::::1;::::0;::::1;::::0;2212::6;;6109:33:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6148:49;::::0;-1:-1:-1;;;6148:49:5;;6099:43;;-1:-1:-1;;;;;;6148:27:5;::::1;::::0;::::1;::::0;:49:::1;::::0;6099:43;;6185:11;;;;6148:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6240:35:5::1;::::0;;;;::::1;::::0;;6266:4:::1;6240:35:::0;;-1:-1:-1;6240:35:5::1;::::0;;::::1;::::0;;;6281:49;;;;::::1;::::0;;;;;;::::1;::::0;;;6203:145;;-1:-1:-1;;;6203:145:5;;-1:-1:-1;;;;;6203:31:5;::::1;::::0;-1:-1:-1;6203:31:5::1;::::0;-1:-1:-1;6203:145:5::1;::::0;6281:49;6336:7;;6203:145:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5996:357;5945:483;;;6364:59;::::0;-1:-1:-1;;;6364:59:5;;7944:2:6;6364:59:5::1;::::0;::::1;7926:21:6::0;7983:2;7963:18;;;7956:30;8022:34;8002:18;;;7995:62;-1:-1:-1;;;8073:18:6;;;8066:47;8130:19;;6364:59:5::1;7742:413:6::0;5945:483:5::1;6437:63;::::0;;6455:1:::1;8429:34:6::0;;8494:2;8479:18;;8472:34;;;-1:-1:-1;;;;;8542:15:6;;8522:18;;;8515:43;8589:2;8574:18;;8567:34;;;6437:63:5;;::::1;::::0;;;;8378:3:6;6437:63:5;;::::1;5619:885;;;;1159:889:::0;5448:1056;;;;;:::o;3688:1757::-;1226:41;;-1:-1:-1;;;1226:41:5;;1256:10;1226:41;;;2239:51:6;3842:11:5;;;;-1:-1:-1;;;;;1226:29:5;;;;;2212:18:6;;1226:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1218:102;;;;-1:-1:-1;;;1218:102:5;;;;;;;:::i;:::-;4035:10;4064:20;4056:51:::1;;;::::0;-1:-1:-1;;;4056:51:5;;3202:2:6;4056:51:5::1;::::0;::::1;3184:21:6::0;3241:2;3221:18;;;3214:30;-1:-1:-1;;;3260:18:6;;;3253:48;3318:18;;4056:51:5::1;3000:342:6::0;4056:51:5::1;4112:25;4151:11;4112:51;;4167:22;4208:14;-1:-1:-1::0;;;;;4208:35:5::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;4208:37:5::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;4192:55:::0;;::::1;::::0;;::::1;::::0;756:19:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;756:19:5;::::1;::::0;;;;4192:55;-1:-1:-1;4251:15:5::1;4275:44:::0;;;4271:1046:::1;;4326:30;4376:11;4326:62;;4403:13;-1:-1:-1::0;;;;;4403:25:5::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4435:33;::::0;-1:-1:-1;;;4435:33:5;;4462:4:::1;4435:33;::::0;::::1;2239:51:6::0;4393:37:5;;-1:-1:-1;;;;;;4435:18:5;::::1;::::0;::::1;::::0;2212::6;;4435:33:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4478:9;4473:133;4497:16;4493:1;:20;4473:133;;;4526:13;-1:-1:-1::0;;;;;4526:25:5::1;;4552:7;4561:10;;4572:1;4561:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:17;::::0;;::::1;:::i;:::-;4580:10;;4591:1;4580:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;4526:74;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4515:3;;;;:::i;:::-;;;4473:133;;;-1:-1:-1::0;4647:35:5::1;::::0;;;;::::1;::::0;;4673:4:::1;4647:35:::0;;-1:-1:-1;4647:35:5::1;::::0;;::::1;::::0;;;4688:49;;;;::::1;::::0;;;;;;::::1;::::0;;;4610:145;;-1:-1:-1;;;4610:145:5;;-1:-1:-1;;;;;4610:31:5;::::1;::::0;::::1;::::0;:145:::1;::::0;4647:35;;4688:49;4743:7;;4610:145:::1;;;:::i;4271:1046::-;836:12;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;836:12:5::1;::::0;;::::1;::::0;4770:45;;;4766:551:::1;;4822:23;4858:11;4822:48;;4885:13;-1:-1:-1::0;;;;;4885:25:5::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4917:33;::::0;-1:-1:-1;;;4917:33:5;;4944:4:::1;4917:33;::::0;::::1;2239:51:6::0;4875:37:5;;-1:-1:-1;;;;;;4917:18:5;::::1;::::0;::::1;::::0;2212::6;;4917:33:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4960:9;4955:133;4979:16;4975:1;:20;4955:133;;;5008:13;-1:-1:-1::0;;;;;5008:25:5::1;;5034:7;5043:10;;5054:1;5043:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:17;::::0;;::::1;:::i;:::-;5062:10;;5073:1;5062:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;5008:74;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4997:3;;;;:::i;:::-;;;4955:133;;2212:1473:::0;1226:41;;-1:-1:-1;;;1226:41:5;;1256:10;1226:41;;;2239:51:6;2313:11:5;;;;-1:-1:-1;;;;;1226:29:5;;;;;2212:18:6;;1226:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1218:102;;;;-1:-1:-1;;;1218:102:5;;;;;;;:::i;:::-;2476:25:::1;2515:11;2476:51;;2531:22;2572:14;-1:-1:-1::0;;;;;2572:35:5::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;2572:37:5::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;2556:55:::0;;::::1;::::0;;::::1;::::0;756:19:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;756:19:5;::::1;::::0;;;;2556:55;-1:-1:-1;2615:15:5::1;2639:44:::0;;;2635:759:::1;;2771:33;::::0;-1:-1:-1;;;2771:33:5;;2798:4:::1;2771:33;::::0;::::1;2239:51:6::0;2740:11:5;;-1:-1:-1;;;;;2771:18:5;::::1;::::0;::::1;::::0;2212::6;;2771:33:5::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2847:35;::::0;;;;::::1;::::0;;2873:4:::1;2847:35:::0;;-1:-1:-1;2847:35:5::1;::::0;;::::1;::::0;;;2888:49;;;;::::1;::::0;;;;;;::::1;::::0;;;2810:145;;-1:-1:-1;;;2810:145:5;;2761:43;;-1:-1:-1;;;;;;2810:31:5;::::1;::::0;::::1;::::0;:145:::1;::::0;2847:35;2761:43;;2810:145:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2685:275;2635:759;;;836:12;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;836:12:5::1;::::0;;::::1;::::0;2970:45;;;2966:428:::1;;3130:33;::::0;-1:-1:-1;;;3130:33:5;;3157:4:::1;3130:33;::::0;::::1;2239:51:6::0;3058:11:5;;-1:-1:-1;;;;;3130:18:5;::::1;::::0;::::1;::::0;2212::6;;3130:33:5::1;2093:203:6::0;2966:428:5::1;3618:63;::::0;;3636:1:::1;8429:34:6::0;;8494:2;8479:18;;8472:34;;;-1:-1:-1;;;;;8542:15:6;;8522:18;;;8515:43;8589:2;8574:18;;8567:34;;;3618:63:5;;::::1;::::0;;;;8378:3:6;3618:63:5;;::::1;2326:1359;;;1159:889:::0;2212:1473;;;:::o;14:173:6:-;82:20;;-1:-1:-1;;;;;131:31:6;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:383::-;271:8;281:6;335:3;328:4;320:6;316:17;312:27;302:55;;353:1;350;343:12;302:55;-1:-1:-1;376:20:6;;419:18;408:30;;405:50;;;451:1;448;441:12;405:50;488:4;480:6;476:17;464:29;;548:3;541:4;531:6;528:1;524:14;516:6;512:27;508:38;505:47;502:67;;;565:1;562;555:12;502:67;192:383;;;;;:::o;580:621::-;710:6;718;726;734;787:2;775:9;766:7;762:23;758:32;755:52;;;803:1;800;793:12;755:52;826:29;845:9;826:29;:::i;:::-;816:39;;902:2;891:9;887:18;874:32;864:42;;957:2;946:9;942:18;929:32;984:18;976:6;973:30;970:50;;;1016:1;1013;1006:12;970:50;1055:86;1133:7;1124:6;1113:9;1109:22;1055:86;:::i;:::-;580:621;;;;-1:-1:-1;1160:8:6;-1:-1:-1;;;;580:621:6:o;1834:254::-;1902:6;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2002:29;2021:9;2002:29;:::i;:::-;1992:39;2078:2;2063:18;;;;2050:32;;-1:-1:-1;;;1834:254:6:o;2301:277::-;2368:6;2421:2;2409:9;2400:7;2396:23;2392:32;2389:52;;;2437:1;2434;2427:12;2389:52;2469:9;2463:16;2522:5;2515:13;2508:21;2501:5;2498:32;2488:60;;2544:1;2541;2534:12;2488:60;2567:5;2301:277;-1:-1:-1;;;2301:277:6:o;2583:412::-;2785:2;2767:21;;;2824:2;2804:18;;;2797:30;2863:34;2858:2;2843:18;;2836:62;-1:-1:-1;;;2929:2:6;2914:18;;2907:46;2985:3;2970:19;;2583:412::o;3347:127::-;3408:10;3403:3;3399:20;3396:1;3389:31;3439:4;3436:1;3429:15;3463:4;3460:1;3453:15;3479:1042;3559:6;3590:2;3633;3621:9;3612:7;3608:23;3604:32;3601:52;;;3649:1;3646;3639:12;3601:52;3682:9;3676:16;3711:18;3752:2;3744:6;3741:14;3738:34;;;3768:1;3765;3758:12;3738:34;3806:6;3795:9;3791:22;3781:32;;3851:7;3844:4;3840:2;3836:13;3832:27;3822:55;;3873:1;3870;3863:12;3822:55;3902:2;3896:9;3924:2;3920;3917:10;3914:36;;;3930:18;;:::i;:::-;4005:2;3999:9;3973:2;4059:13;;-1:-1:-1;;4055:22:6;;;4079:2;4051:31;4047:40;4035:53;;;4103:18;;;4123:22;;;4100:46;4097:72;;;4149:18;;:::i;:::-;4189:10;4185:2;4178:22;4224:2;4216:6;4209:18;4264:7;4259:2;4254;4250;4246:11;4242:20;4239:33;4236:53;;;4285:1;4282;4275:12;4236:53;4307:1;4298:10;;4317:129;4331:2;4328:1;4325:9;4317:129;;;4419:10;;;4415:19;;4409:26;4388:14;;;4384:23;;4377:59;4342:10;;;;4317:129;;;4488:1;4483:2;4478;4470:6;4466:15;4462:24;4455:35;4509:6;4499:16;;;;;;;;3479:1042;;;;:::o;4526:184::-;4596:6;4649:2;4637:9;4628:7;4624:23;4620:32;4617:52;;;4665:1;4662;4655:12;4617:52;-1:-1:-1;4688:16:6;;4526:184;-1:-1:-1;4526:184:6:o;4715:501::-;4774:5;4781:6;4841:3;4828:17;4927:2;4923:7;4912:8;4896:14;4892:29;4888:43;4868:18;4864:68;4854:96;;4946:1;4943;4936:12;4854:96;4974:33;;5078:4;5065:18;;;-1:-1:-1;5026:21:6;;-1:-1:-1;5106:18:6;5095:30;;5092:50;;;5138:1;5135;5128:12;5092:50;5185:6;5169:14;5165:27;5158:5;5154:39;5151:59;;;5206:1;5203;5196:12;5221:267;5310:6;5305:3;5298:19;5362:6;5355:5;5348:4;5343:3;5339:14;5326:43;-1:-1:-1;5414:1:6;5389:16;;;5407:4;5385:27;;;5378:38;;;;5470:2;5449:15;;;-1:-1:-1;;5445:29:6;5436:39;;;5432:50;;5221:267::o;5493:1549::-;5723:4;5752:2;5792;5781:9;5777:18;5822:6;5811:9;5804:25;5848:2;5886;5881;5870:9;5866:18;5859:30;5909:6;5939;5931;5924:22;5977:2;5966:9;5962:18;5955:25;;6039:2;6029:6;6026:1;6022:14;6011:9;6007:30;6003:39;5989:53;;6065:6;6089:1;6110;6120:893;6136:6;6131:3;6128:15;6120:893;;;6205:22;;;-1:-1:-1;;6201:36:6;6189:49;;6277:20;;6352:14;6348:27;;;-1:-1:-1;;6344:41:6;6320:66;;6310:94;;6400:1;6397;6390:12;6310:94;6430:31;;6508:45;6430:31;;6508:45;:::i;:::-;6581:2;6573:6;6566:18;6611:71;6678:2;6670:6;6666:15;6652:12;6638;6611:71;:::i;:::-;6597:85;;;6733:54;6783:2;6776:5;6772:14;6765:5;6733:54;:::i;:::-;6695:92;;6836:6;6828;6824:19;6819:2;6811:6;6807:15;6800:44;6867:66;6926:6;6910:14;6894;6867:66;:::i;:::-;6857:76;-1:-1:-1;;;6991:12:6;;;;-1:-1:-1;6956:15:6;;;;6162:1;6153:11;6120:893;;;-1:-1:-1;7030:6:6;;5493:1549;-1:-1:-1;;;;;;;;;;5493:1549:6:o;7234:503::-;7132:12;;-1:-1:-1;;;;;7128:38:6;;;7116:51;;7216:4;7205:16;;;7199:23;7183:14;;;7176:47;7132:12;;7128:38;7683:2;7668:18;;7116:51;7205:16;;;;7199:23;7183:14;;;7176:47;7718:3;7703:19;;7696:35;;;;7552:3;7537:19;;7234:503::o;8612:127::-;8673:10;8668:3;8664:20;8661:1;8654:31;8704:4;8701:1;8694:15;8728:4;8725:1;8718:15;8744:325;8838:4;8896:11;8883:25;8990:2;8986:7;8975:8;8959:14;8955:29;8951:43;8931:18;8927:68;8917:96;;9009:1;9006;8999:12;8917:96;9030:33;;;;;8744:325;-1:-1:-1;;8744:325:6:o;9074:522::-;9152:4;9158:6;9218:11;9205:25;9312:2;9308:7;9297:8;9281:14;9277:29;9273:43;9253:18;9249:68;9239:96;;9331:1;9328;9321:12;9239:96;9358:33;;9410:20;;;-1:-1:-1;9453:18:6;9442:30;;9439:50;;;9485:1;9482;9475:12;9439:50;9518:4;9506:17;;-1:-1:-1;9549:14:6;9545:27;;;9535:38;;9532:58;;;9586:1;9583;9576:12;10127:506;10370:6;10359:9;10352:25;10413:2;10408;10397:9;10393:18;10386:30;10333:4;10439:62;10497:2;10486:9;10482:18;10474:6;10466;10439:62;:::i;:::-;10549:9;10541:6;10537:22;10532:2;10521:9;10517:18;10510:50;10577;10620:6;10612;10604;10577:50;:::i;:::-;10569:58;10127:506;-1:-1:-1;;;;;;;;10127:506:6:o;10638:232::-;10677:3;10698:17;;;10695:140;;10757:10;10752:3;10748:20;10745:1;10738:31;10792:4;10789:1;10782:15;10820:4;10817:1;10810:15;10695:140;-1:-1:-1;10862:1:6;10851:13;;10638:232::o",
+    "sourcePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol",
+    "compiler": {
+        "name": "solc",
+        "version": "0.8.17+commit.8df45f5f"
+    },
+    "ast": {
+        "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol",
+        "exportedSymbols": {
+            "Collection": [
+                1248
+            ],
+            "CollectionHelpers": [
+                99
+            ],
+            "ContractHelpers": [
+                282
+            ],
+            "EvmToSubstrate": [
+                2269
+            ],
+            "NftCrossAccountId": [
+                610
+            ],
+            "NftProperty": [
+                620
+            ],
+            "Property": [
+                1762
+            ],
+            "RftCrossAccountId": [
+                1253
+            ],
+            "RftProperties": [
+                1263
+            ],
+            "TokenProperties": [
+                357
+            ],
+            "UniqueNFT": [
+                930
+            ],
+            "UniqueRefungible": [
+                1572
+            ],
+            "UniqueRefungibleToken": [
+                1739
+            ]
+        },
+        "id": 2270,
+        "license": "Apache License",
+        "nodeType": "SourceUnit",
+        "nodes": [
+            {
+                "id": 1741,
+                "literals": [
+                    "solidity",
+                    ">=",
+                    "0.8",
+                    ".0"
+                ],
+                "nodeType": "PragmaDirective",
+                "src": "44:24:5"
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol",
+                "file": "../api/CollectionHelpers.sol",
+                "id": 1743,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2270,
+                "sourceUnit": 100,
+                "src": "69:63:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1742,
+                            "name": "CollectionHelpers",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 99,
+                            "src": "77:17:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol",
+                "file": "../api/ContractHelpers.sol",
+                "id": 1745,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2270,
+                "sourceUnit": 288,
+                "src": "133:59:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1744,
+                            "name": "ContractHelpers",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 282,
+                            "src": "141:15:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol",
+                "file": "../api/UniqueRefungibleToken.sol",
+                "id": 1747,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2270,
+                "sourceUnit": 1740,
+                "src": "193:71:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1746,
+                            "name": "UniqueRefungibleToken",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1739,
+                            "src": "201:21:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol",
+                "file": "../api/UniqueRefungible.sol",
+                "id": 1752,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2270,
+                "sourceUnit": 1573,
+                "src": "265:137:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1748,
+                            "name": "UniqueRefungible",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1572,
+                            "src": "273:16:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1749,
+                            "name": "Collection",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1248,
+                            "src": "291:10:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1750,
+                            "name": "EthCrossAccount",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1253,
+                            "src": "303:15:5",
+                            "typeDescriptions": {}
+                        },
+                        "local": "RftCrossAccountId",
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1751,
+                            "name": "Tuple20",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1263,
+                            "src": "341:7:5",
+                            "typeDescriptions": {}
+                        },
+                        "local": "RftProperties",
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol",
+                "file": "../api/UniqueNFT.sol",
+                "id": 1757,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2270,
+                "sourceUnit": 931,
+                "src": "403:126:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1753,
+                            "name": "UniqueNFT",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 930,
+                            "src": "411:9:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1754,
+                            "name": "EthCrossAccount",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 610,
+                            "src": "422:15:5",
+                            "typeDescriptions": {}
+                        },
+                        "local": "NftCrossAccountId",
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1755,
+                            "name": "Tuple21",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 620,
+                            "src": "460:7:5",
+                            "typeDescriptions": {}
+                        },
+                        "local": "NftProperty",
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1756,
+                            "name": "TokenProperties",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 357,
+                            "src": "484:15:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "canonicalName": "Property",
+                "id": 1762,
+                "members": [
+                    {
+                        "constant": false,
+                        "id": 1759,
+                        "mutability": "mutable",
+                        "name": "key",
+                        "nameLocation": "557:3:5",
+                        "nodeType": "VariableDeclaration",
+                        "scope": 1762,
+                        "src": "550:10:5",
+                        "stateVariable": false,
+                        "storageLocation": "default",
+                        "typeDescriptions": {
+                            "typeIdentifier": "t_string_storage_ptr",
+                            "typeString": "string"
+                        },
+                        "typeName": {
+                            "id": 1758,
+                            "name": "string",
+                            "nodeType": "ElementaryTypeName",
+                            "src": "550:6:5",
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_string_storage_ptr",
+                                "typeString": "string"
+                            }
+                        },
+                        "visibility": "internal"
+                    },
+                    {
+                        "constant": false,
+                        "id": 1761,
+                        "mutability": "mutable",
+                        "name": "value",
+                        "nameLocation": "569:5:5",
+                        "nodeType": "VariableDeclaration",
+                        "scope": 1762,
+                        "src": "563:11:5",
+                        "stateVariable": false,
+                        "storageLocation": "default",
+                        "typeDescriptions": {
+                            "typeIdentifier": "t_bytes_storage_ptr",
+                            "typeString": "bytes"
+                        },
+                        "typeName": {
+                            "id": 1760,
+                            "name": "bytes",
+                            "nodeType": "ElementaryTypeName",
+                            "src": "563:5:5",
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes_storage_ptr",
+                                "typeString": "bytes"
+                            }
+                        },
+                        "visibility": "internal"
+                    }
+                ],
+                "name": "Property",
+                "nameLocation": "538:8:5",
+                "nodeType": "StructDefinition",
+                "scope": 2270,
+                "src": "531:46:5",
+                "visibility": "public"
+            },
+            {
+                "abstract": false,
+                "baseContracts": [],
+                "canonicalName": "EvmToSubstrate",
+                "contractDependencies": [],
+                "contractKind": "contract",
+                "fullyImplemented": true,
+                "id": 2269,
+                "linearizedBaseContracts": [
+                    2269
+                ],
+                "name": "EvmToSubstrate",
+                "nameLocation": "682:14:5",
+                "nodeType": "ContractDefinition",
+                "nodes": [
+                    {
+                        "constant": true,
+                        "id": 1770,
+                        "mutability": "constant",
+                        "name": "REFUNGIBLE_COLLECTION_TYPE",
+                        "nameLocation": "717:26:5",
+                        "nodeType": "VariableDeclaration",
+                        "scope": 2269,
+                        "src": "700:76:5",
+                        "stateVariable": true,
+                        "storageLocation": "default",
+                        "typeDescriptions": {
+                            "typeIdentifier": "t_bytes32",
+                            "typeString": "bytes32"
+                        },
+                        "typeName": {
+                            "id": 1763,
+                            "name": "bytes32",
+                            "nodeType": "ElementaryTypeName",
+                            "src": "700:7:5",
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes32",
+                                "typeString": "bytes32"
+                            }
+                        },
+                        "value": {
+                            "arguments": [
+                                {
+                                    "arguments": [
+                                        {
+                                            "hexValue": "526546756e6769626c65",
+                                            "id": 1767,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": true,
+                                            "kind": "string",
+                                            "lValueRequested": false,
+                                            "nodeType": "Literal",
+                                            "src": "762:12:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_stringliteral_cdb72fd4e1d0d6d4eebd7ab142113ec2b4b06ddb24324db5c287ef01ab484d6b",
+                                                "typeString": "literal_string \"ReFungible\""
+                                            },
+                                            "value": "ReFungible"
+                                        }
+                                    ],
+                                    "expression": {
+                                        "argumentTypes": [
+                                            {
+                                                "typeIdentifier": "t_stringliteral_cdb72fd4e1d0d6d4eebd7ab142113ec2b4b06ddb24324db5c287ef01ab484d6b",
+                                                "typeString": "literal_string \"ReFungible\""
+                                            }
+                                        ],
+                                        "id": 1766,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": true,
+                                        "lValueRequested": false,
+                                        "nodeType": "ElementaryTypeNameExpression",
+                                        "src": "756:5:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                            "typeString": "type(bytes storage pointer)"
+                                        },
+                                        "typeName": {
+                                            "id": 1765,
+                                            "name": "bytes",
+                                            "nodeType": "ElementaryTypeName",
+                                            "src": "756:5:5",
+                                            "typeDescriptions": {}
+                                        }
+                                    },
+                                    "id": 1768,
+                                    "isConstant": false,
+                                    "isLValue": false,
+                                    "isPure": true,
+                                    "kind": "typeConversion",
+                                    "lValueRequested": false,
+                                    "nameLocations": [],
+                                    "names": [],
+                                    "nodeType": "FunctionCall",
+                                    "src": "756:19:5",
+                                    "tryCall": false,
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes_memory_ptr",
+                                        "typeString": "bytes memory"
+                                    }
+                                }
+                            ],
+                            "expression": {
+                                "argumentTypes": [
+                                    {
+                                        "typeIdentifier": "t_bytes_memory_ptr",
+                                        "typeString": "bytes memory"
+                                    }
+                                ],
+                                "id": 1764,
+                                "name": "keccak256",
+                                "nodeType": "Identifier",
+                                "overloadedDeclarations": [],
+                                "referencedDeclaration": 4294967288,
+                                "src": "746:9:5",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                    "typeString": "function (bytes memory) pure returns (bytes32)"
+                                }
+                            },
+                            "id": 1769,
+                            "isConstant": false,
+                            "isLValue": false,
+                            "isPure": true,
+                            "kind": "functionCall",
+                            "lValueRequested": false,
+                            "nameLocations": [],
+                            "names": [],
+                            "nodeType": "FunctionCall",
+                            "src": "746:30:5",
+                            "tryCall": false,
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes32",
+                                "typeString": "bytes32"
+                            }
+                        },
+                        "visibility": "internal"
+                    },
+                    {
+                        "constant": true,
+                        "id": 1778,
+                        "mutability": "constant",
+                        "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                        "nameLocation": "796:27:5",
+                        "nodeType": "VariableDeclaration",
+                        "scope": 2269,
+                        "src": "779:70:5",
+                        "stateVariable": true,
+                        "storageLocation": "default",
+                        "typeDescriptions": {
+                            "typeIdentifier": "t_bytes32",
+                            "typeString": "bytes32"
+                        },
+                        "typeName": {
+                            "id": 1771,
+                            "name": "bytes32",
+                            "nodeType": "ElementaryTypeName",
+                            "src": "779:7:5",
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes32",
+                                "typeString": "bytes32"
+                            }
+                        },
+                        "value": {
+                            "arguments": [
+                                {
+                                    "arguments": [
+                                        {
+                                            "hexValue": "4e4654",
+                                            "id": 1775,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": true,
+                                            "kind": "string",
+                                            "lValueRequested": false,
+                                            "nodeType": "Literal",
+                                            "src": "842:5:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_stringliteral_9c4138cd0a1311e4748f70d0fe3dc55f0f5f75e0f20db731225cbc3b8914016a",
+                                                "typeString": "literal_string \"NFT\""
+                                            },
+                                            "value": "NFT"
+                                        }
+                                    ],
+                                    "expression": {
+                                        "argumentTypes": [
+                                            {
+                                                "typeIdentifier": "t_stringliteral_9c4138cd0a1311e4748f70d0fe3dc55f0f5f75e0f20db731225cbc3b8914016a",
+                                                "typeString": "literal_string \"NFT\""
+                                            }
+                                        ],
+                                        "id": 1774,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": true,
+                                        "lValueRequested": false,
+                                        "nodeType": "ElementaryTypeNameExpression",
+                                        "src": "836:5:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                            "typeString": "type(bytes storage pointer)"
+                                        },
+                                        "typeName": {
+                                            "id": 1773,
+                                            "name": "bytes",
+                                            "nodeType": "ElementaryTypeName",
+                                            "src": "836:5:5",
+                                            "typeDescriptions": {}
+                                        }
+                                    },
+                                    "id": 1776,
+                                    "isConstant": false,
+                                    "isLValue": false,
+                                    "isPure": true,
+                                    "kind": "typeConversion",
+                                    "lValueRequested": false,
+                                    "nameLocations": [],
+                                    "names": [],
+                                    "nodeType": "FunctionCall",
+                                    "src": "836:12:5",
+                                    "tryCall": false,
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes_memory_ptr",
+                                        "typeString": "bytes memory"
+                                    }
+                                }
+                            ],
+                            "expression": {
+                                "argumentTypes": [
+                                    {
+                                        "typeIdentifier": "t_bytes_memory_ptr",
+                                        "typeString": "bytes memory"
+                                    }
+                                ],
+                                "id": 1772,
+                                "name": "keccak256",
+                                "nodeType": "Identifier",
+                                "overloadedDeclarations": [],
+                                "referencedDeclaration": 4294967288,
+                                "src": "826:9:5",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                    "typeString": "function (bytes memory) pure returns (bytes32)"
+                                }
+                            },
+                            "id": 1777,
+                            "isConstant": false,
+                            "isLValue": false,
+                            "isPure": true,
+                            "kind": "functionCall",
+                            "lValueRequested": false,
+                            "nameLocations": [],
+                            "names": [],
+                            "nodeType": "FunctionCall",
+                            "src": "826:23:5",
+                            "tryCall": false,
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes32",
+                                "typeString": "bytes32"
+                            }
+                        },
+                        "visibility": "internal"
+                    },
+                    {
+                        "body": {
+                            "id": 1799,
+                            "nodeType": "Block",
+                            "src": "1159:889:5",
+                            "statements": [
+                                {
+                                    "assignments": [
+                                        1784
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1784,
+                                            "mutability": "mutable",
+                                            "name": "commonContract",
+                                            "nameLocation": "1174:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1799,
+                                            "src": "1163:25:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_contract$_Collection_$1248",
+                                                "typeString": "contract Collection"
+                                            },
+                                            "typeName": {
+                                                "id": 1783,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1782,
+                                                    "name": "Collection",
+                                                    "nameLocations": [
+                                                        "1163:10:5"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1248,
+                                                    "src": "1163:10:5"
+                                                },
+                                                "referencedDeclaration": 1248,
+                                                "src": "1163:10:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1788,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "id": 1786,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1780,
+                                                "src": "1202:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            ],
+                                            "id": 1785,
+                                            "name": "Collection",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1248,
+                                            "src": "1191:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_type$_t_contract$_Collection_$1248_$",
+                                                "typeString": "type(contract Collection)"
+                                            }
+                                        },
+                                        "id": 1787,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "typeConversion",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "1191:23:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                            "typeString": "contract Collection"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "1163:51:5"
+                                },
+                                {
+                                    "expression": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "expression": {
+                                                            "id": 1792,
+                                                            "name": "msg",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 4294967281,
+                                                            "src": "1256:3:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_magic_message",
+                                                                "typeString": "msg"
+                                                            }
+                                                        },
+                                                        "id": 1793,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "1260:6:5",
+                                                        "memberName": "sender",
+                                                        "nodeType": "MemberAccess",
+                                                        "src": "1256:10:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "id": 1790,
+                                                        "name": "commonContract",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1784,
+                                                        "src": "1226:14:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                                            "typeString": "contract Collection"
+                                                        }
+                                                    },
+                                                    "id": 1791,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "memberLocation": "1241:14:5",
+                                                    "memberName": "isOwnerOrAdmin",
+                                                    "nodeType": "MemberAccess",
+                                                    "referencedDeclaration": 1204,
+                                                    "src": "1226:29:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
+                                                        "typeString": "function (address) view external returns (bool)"
+                                                    }
+                                                },
+                                                "id": 1794,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "1226:41:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            {
+                                                "hexValue": "4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2063616c6c2074686973206d6574686f64",
+                                                "id": 1795,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "string",
+                                                "lValueRequested": false,
+                                                "nodeType": "Literal",
+                                                "src": "1269:50:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3",
+                                                    "typeString": "literal_string \"Only collection admin/owner can call this method\""
+                                                },
+                                                "value": "Only collection admin/owner can call this method"
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3",
+                                                    "typeString": "literal_string \"Only collection admin/owner can call this method\""
+                                                }
+                                            ],
+                                            "id": 1789,
+                                            "name": "require",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [
+                                                4294967278,
+                                                4294967278
+                                            ],
+                                            "referencedDeclaration": 4294967278,
+                                            "src": "1218:7:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+                                                "typeString": "function (bool,string memory) pure"
+                                            }
+                                        },
+                                        "id": 1796,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "1218:102:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 1797,
+                                    "nodeType": "ExpressionStatement",
+                                    "src": "1218:102:5"
+                                },
+                                {
+                                    "id": 1798,
+                                    "nodeType": "PlaceholderStatement",
+                                    "src": "2043:1:5"
+                                }
+                            ]
+                        },
+                        "id": 1800,
+                        "name": "checkRestrictions",
+                        "nameLocation": "1120:17:5",
+                        "nodeType": "ModifierDefinition",
+                        "parameters": {
+                            "id": 1781,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 1780,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "1146:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1800,
+                                    "src": "1138:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1779,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "1138:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "1137:21:5"
+                        },
+                        "src": "1111:937:5",
+                        "virtual": false,
+                        "visibility": "internal"
+                    },
+                    {
+                        "anonymous": false,
+                        "documentation": {
+                            "id": 1801,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "2051:69:5",
+                            "text": "@dev This emits when a mint to a substrate address has been made."
+                        },
+                        "eventSelector": "fb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb7535",
+                        "id": 1811,
+                        "name": "MintToSub",
+                        "nameLocation": "2128:9:5",
+                        "nodeType": "EventDefinition",
+                        "parameters": {
+                            "id": 1810,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 1803,
+                                    "indexed": false,
+                                    "mutability": "mutable",
+                                    "name": "_toEth",
+                                    "nameLocation": "2146:6:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1811,
+                                    "src": "2138:14:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1802,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2138:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1805,
+                                    "indexed": false,
+                                    "mutability": "mutable",
+                                    "name": "_toSub",
+                                    "nameLocation": "2162:6:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1811,
+                                    "src": "2154:14:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 1804,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2154:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1807,
+                                    "indexed": false,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "2178:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1811,
+                                    "src": "2170:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1806,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2170:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1809,
+                                    "indexed": false,
+                                    "mutability": "mutable",
+                                    "name": "_tokenId",
+                                    "nameLocation": "2199:8:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1811,
+                                    "src": "2191:16:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 1808,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2191:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "2137:71:5"
+                        },
+                        "src": "2122:87:5"
+                    },
+                    {
+                        "body": {
+                            "id": 1941,
+                            "nodeType": "Block",
+                            "src": "2326:1359:5",
+                            "statements": [
+                                {
+                                    "assignments": [
+                                        1823
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1823,
+                                            "mutability": "mutable",
+                                            "name": "commonContract",
+                                            "nameLocation": "2487:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1941,
+                                            "src": "2476:25:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_contract$_Collection_$1248",
+                                                "typeString": "contract Collection"
+                                            },
+                                            "typeName": {
+                                                "id": 1822,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1821,
+                                                    "name": "Collection",
+                                                    "nameLocations": [
+                                                        "2476:10:5"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1248,
+                                                    "src": "2476:10:5"
+                                                },
+                                                "referencedDeclaration": 1248,
+                                                "src": "2476:10:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1827,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "id": 1825,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1813,
+                                                "src": "2515:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            ],
+                                            "id": 1824,
+                                            "name": "Collection",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1248,
+                                            "src": "2504:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_type$_t_contract$_Collection_$1248_$",
+                                                "typeString": "type(contract Collection)"
+                                            }
+                                        },
+                                        "id": 1826,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "typeConversion",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "2504:23:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                            "typeString": "contract Collection"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "2476:51:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1829
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1829,
+                                            "mutability": "mutable",
+                                            "name": "collectionType",
+                                            "nameLocation": "2539:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1941,
+                                            "src": "2531:22:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "typeName": {
+                                                "id": 1828,
+                                                "name": "bytes32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2531:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1838,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [],
+                                                        "expression": {
+                                                            "argumentTypes": [],
+                                                            "expression": {
+                                                                "id": 1833,
+                                                                "name": "commonContract",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1823,
+                                                                "src": "2572:14:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                                    "typeString": "contract Collection"
+                                                                }
+                                                            },
+                                                            "id": 1834,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "2587:20:5",
+                                                            "memberName": "uniqueCollectionType",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1219,
+                                                            "src": "2572:35:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
+                                                                "typeString": "function () view external returns (string memory)"
+                                                            }
+                                                        },
+                                                        "id": 1835,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "2572:37:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    ],
+                                                    "id": 1832,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "2566:5:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                        "typeString": "type(bytes storage pointer)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1831,
+                                                        "name": "bytes",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "2566:5:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 1836,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "2566:44:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            ],
+                                            "id": 1830,
+                                            "name": "keccak256",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 4294967288,
+                                            "src": "2556:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                                "typeString": "function (bytes memory) pure returns (bytes32)"
+                                            }
+                                        },
+                                        "id": 1837,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "2556:55:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "2531:80:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1840
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1840,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "2623:7:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1941,
+                                            "src": "2615:15:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1839,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2615:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1841,
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "2615:15:5"
+                                },
+                                {
+                                    "condition": {
+                                        "commonType": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        },
+                                        "id": 1844,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "lValueRequested": false,
+                                        "leftExpression": {
+                                            "id": 1842,
+                                            "name": "collectionType",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1829,
+                                            "src": "2639:14:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "nodeType": "BinaryOperation",
+                                        "operator": "==",
+                                        "rightExpression": {
+                                            "id": 1843,
+                                            "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1770,
+                                            "src": "2657:26:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "src": "2639:44:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bool",
+                                            "typeString": "bool"
+                                        }
+                                    },
+                                    "falseBody": {
+                                        "condition": {
+                                            "commonType": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "id": 1885,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": false,
+                                            "lValueRequested": false,
+                                            "leftExpression": {
+                                                "id": 1883,
+                                                "name": "collectionType",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1829,
+                                                "src": "2970:14:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "nodeType": "BinaryOperation",
+                                            "operator": "==",
+                                            "rightExpression": {
+                                                "id": 1884,
+                                                "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1778,
+                                                "src": "2988:27:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "src": "2970:45:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            }
+                                        },
+                                        "falseBody": {
+                                            "id": 1928,
+                                            "nodeType": "Block",
+                                            "src": "3325:69:5",
+                                            "statements": [
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c792077697468204e4654206f7220524654",
+                                                                "id": 1925,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "string",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "3337:51:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                },
+                                                                "value": "Wrong collection type. Works only with NFT or RFT"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                }
+                                                            ],
+                                                            "id": 1924,
+                                                            "name": "revert",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [
+                                                                4294967277,
+                                                                4294967277
+                                                            ],
+                                                            "referencedDeclaration": 4294967277,
+                                                            "src": "3330:6:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+                                                                "typeString": "function (string memory) pure"
+                                                            }
+                                                        },
+                                                        "id": 1926,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3330:59:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 1927,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "3330:59:5"
+                                                }
+                                            ]
+                                        },
+                                        "id": 1929,
+                                        "nodeType": "IfStatement",
+                                        "src": "2966:428:5",
+                                        "trueBody": {
+                                            "id": 1923,
+                                            "nodeType": "Block",
+                                            "src": "3017:302:5",
+                                            "statements": [
+                                                {
+                                                    "assignments": [
+                                                        1888
+                                                    ],
+                                                    "declarations": [
+                                                        {
+                                                            "constant": false,
+                                                            "id": 1888,
+                                                            "mutability": "mutable",
+                                                            "name": "nftCollection",
+                                                            "nameLocation": "3032:13:5",
+                                                            "nodeType": "VariableDeclaration",
+                                                            "scope": 1923,
+                                                            "src": "3022:23:5",
+                                                            "stateVariable": false,
+                                                            "storageLocation": "default",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                "typeString": "contract UniqueNFT"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 1887,
+                                                                "nodeType": "UserDefinedTypeName",
+                                                                "pathNode": {
+                                                                    "id": 1886,
+                                                                    "name": "UniqueNFT",
+                                                                    "nameLocations": [
+                                                                        "3022:9:5"
+                                                                    ],
+                                                                    "nodeType": "IdentifierPath",
+                                                                    "referencedDeclaration": 930,
+                                                                    "src": "3022:9:5"
+                                                                },
+                                                                "referencedDeclaration": 930,
+                                                                "src": "3022:9:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "visibility": "internal"
+                                                        }
+                                                    ],
+                                                    "id": 1892,
+                                                    "initialValue": {
+                                                        "arguments": [
+                                                            {
+                                                                "id": 1890,
+                                                                "name": "_collection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1813,
+                                                                "src": "3058:11:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            ],
+                                                            "id": 1889,
+                                                            "name": "UniqueNFT",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 930,
+                                                            "src": "3048:9:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_contract$_UniqueNFT_$930_$",
+                                                                "typeString": "type(contract UniqueNFT)"
+                                                            }
+                                                        },
+                                                        "id": 1891,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3048:22:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                            "typeString": "contract UniqueNFT"
+                                                        }
+                                                    },
+                                                    "nodeType": "VariableDeclarationStatement",
+                                                    "src": "3022:48:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "id": 1901,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftHandSide": {
+                                                            "id": 1893,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1840,
+                                                            "src": "3120:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "Assignment",
+                                                        "operator": "=",
+                                                        "rightHandSide": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 1898,
+                                                                            "name": "this",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 4294967268,
+                                                                            "src": "3157:4:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1897,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "3149:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 1896,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "3149:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 1899,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "3149:13:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "id": 1894,
+                                                                    "name": "nftCollection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1888,
+                                                                    "src": "3130:13:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                        "typeString": "contract UniqueNFT"
+                                                                    }
+                                                                },
+                                                                "id": 1895,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "3144:4:5",
+                                                                "memberName": "mint",
+                                                                "nodeType": "MemberAccess",
+                                                                "referencedDeclaration": 671,
+                                                                "src": "3130:18:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                    "typeString": "function (address) external returns (uint256)"
+                                                                }
+                                                            },
+                                                            "id": 1900,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "functionCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "3130:33:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "src": "3120:43:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "id": 1902,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "3120:43:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "id": 1909,
+                                                                                "name": "this",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 4294967268,
+                                                                                "src": "3232:4:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            ],
+                                                                            "id": 1908,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "3224:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 1907,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "3224:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 1910,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "3224:13:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "hexValue": "30",
+                                                                        "id": 1911,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "number",
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "Literal",
+                                                                        "src": "3239:1:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        },
+                                                                        "value": "0"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        }
+                                                                    ],
+                                                                    "id": 1906,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 610,
+                                                                    "src": "3206:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                        "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 1912,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "3206:35:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "hexValue": "30",
+                                                                                "id": 1916,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "number",
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "Literal",
+                                                                                "src": "3273:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                },
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                }
+                                                                            ],
+                                                                            "id": 1915,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "3265:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 1914,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "3265:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 1917,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "3265:10:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 1918,
+                                                                        "name": "_substrateReceiver",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1815,
+                                                                        "src": "3277:18:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    ],
+                                                                    "id": 1913,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 610,
+                                                                    "src": "3247:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                        "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 1919,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "3247:49:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "id": 1920,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1840,
+                                                                "src": "3302:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 1903,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1888,
+                                                                "src": "3169:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 1905,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "3183:17:5",
+                                                            "memberName": "transferFromCross",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 734,
+                                                            "src": "3169:31:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_uint256_$returns$__$",
+                                                                "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                            }
+                                                        },
+                                                        "id": 1921,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3169:145:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 1922,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "3169:145:5"
+                                                }
+                                            ]
+                                        }
+                                    },
+                                    "id": 1930,
+                                    "nodeType": "IfStatement",
+                                    "src": "2635:759:5",
+                                    "trueBody": {
+                                        "id": 1882,
+                                        "nodeType": "Block",
+                                        "src": "2685:275:5",
+                                        "statements": [
+                                            {
+                                                "assignments": [
+                                                    1847
+                                                ],
+                                                "declarations": [
+                                                    {
+                                                        "constant": false,
+                                                        "id": 1847,
+                                                        "mutability": "mutable",
+                                                        "name": "rftCollection",
+                                                        "nameLocation": "2707:13:5",
+                                                        "nodeType": "VariableDeclaration",
+                                                        "scope": 1882,
+                                                        "src": "2690:30:5",
+                                                        "stateVariable": false,
+                                                        "storageLocation": "default",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                            "typeString": "contract UniqueRefungible"
+                                                        },
+                                                        "typeName": {
+                                                            "id": 1846,
+                                                            "nodeType": "UserDefinedTypeName",
+                                                            "pathNode": {
+                                                                "id": 1845,
+                                                                "name": "UniqueRefungible",
+                                                                "nameLocations": [
+                                                                    "2690:16:5"
+                                                                ],
+                                                                "nodeType": "IdentifierPath",
+                                                                "referencedDeclaration": 1572,
+                                                                "src": "2690:16:5"
+                                                            },
+                                                            "referencedDeclaration": 1572,
+                                                            "src": "2690:16:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "visibility": "internal"
+                                                    }
+                                                ],
+                                                "id": 1851,
+                                                "initialValue": {
+                                                    "arguments": [
+                                                        {
+                                                            "id": 1849,
+                                                            "name": "_collection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1813,
+                                                            "src": "2740:11:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        ],
+                                                        "id": 1848,
+                                                        "name": "UniqueRefungible",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1572,
+                                                        "src": "2723:16:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_type$_t_contract$_UniqueRefungible_$1572_$",
+                                                            "typeString": "type(contract UniqueRefungible)"
+                                                        }
+                                                    },
+                                                    "id": 1850,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "typeConversion",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "2723:29:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                        "typeString": "contract UniqueRefungible"
+                                                    }
+                                                },
+                                                "nodeType": "VariableDeclarationStatement",
+                                                "src": "2690:62:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "id": 1860,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftHandSide": {
+                                                        "id": 1852,
+                                                        "name": "tokenId",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1840,
+                                                        "src": "2761:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "nodeType": "Assignment",
+                                                    "operator": "=",
+                                                    "rightHandSide": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 1857,
+                                                                        "name": "this",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 4294967268,
+                                                                        "src": "2798:4:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                            "typeString": "contract EvmToSubstrate"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                            "typeString": "contract EvmToSubstrate"
+                                                                        }
+                                                                    ],
+                                                                    "id": 1856,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                    "src": "2790:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                        "typeString": "type(address)"
+                                                                    },
+                                                                    "typeName": {
+                                                                        "id": 1855,
+                                                                        "name": "address",
+                                                                        "nodeType": "ElementaryTypeName",
+                                                                        "src": "2790:7:5",
+                                                                        "typeDescriptions": {}
+                                                                    }
+                                                                },
+                                                                "id": 1858,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "typeConversion",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "2790:13:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 1853,
+                                                                "name": "rftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1847,
+                                                                "src": "2771:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                    "typeString": "contract UniqueRefungible"
+                                                                }
+                                                            },
+                                                            "id": 1854,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "2785:4:5",
+                                                            "memberName": "mint",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1314,
+                                                            "src": "2771:18:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                "typeString": "function (address) external returns (uint256)"
+                                                            }
+                                                        },
+                                                        "id": 1859,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "2771:33:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "src": "2761:43:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    }
+                                                },
+                                                "id": 1861,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "2761:43:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "arguments": [
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 1868,
+                                                                            "name": "this",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 4294967268,
+                                                                            "src": "2873:4:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1867,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "2865:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 1866,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "2865:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 1869,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "2865:13:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "hexValue": "30",
+                                                                    "id": 1870,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "number",
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "Literal",
+                                                                    "src": "2880:1:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    },
+                                                                    "value": "0"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    }
+                                                                ],
+                                                                "id": 1865,
+                                                                "name": "RftCrossAccountId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1253,
+                                                                "src": "2847:17:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$1253_storage_ptr_$",
+                                                                    "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                }
+                                                            },
+                                                            "id": 1871,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "structConstructorCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "2847:35:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                "typeString": "struct EthCrossAccount memory"
+                                                            }
+                                                        },
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "hexValue": "30",
+                                                                            "id": 1875,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "kind": "number",
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "Literal",
+                                                                            "src": "2914:1:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            },
+                                                                            "value": "0"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1874,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "2906:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 1873,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "2906:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 1876,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "2906:10:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "id": 1877,
+                                                                    "name": "_substrateReceiver",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1815,
+                                                                    "src": "2918:18:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                ],
+                                                                "id": 1872,
+                                                                "name": "RftCrossAccountId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1253,
+                                                                "src": "2888:17:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$1253_storage_ptr_$",
+                                                                    "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                }
+                                                            },
+                                                            "id": 1878,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "structConstructorCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "2888:49:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                "typeString": "struct EthCrossAccount memory"
+                                                            }
+                                                        },
+                                                        {
+                                                            "id": 1879,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1840,
+                                                            "src": "2943:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                "typeString": "struct EthCrossAccount memory"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                "typeString": "struct EthCrossAccount memory"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "id": 1862,
+                                                            "name": "rftCollection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1847,
+                                                            "src": "2810:13:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "id": 1864,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "2824:17:5",
+                                                        "memberName": "transferFromCross",
+                                                        "nodeType": "MemberAccess",
+                                                        "referencedDeclaration": 1368,
+                                                        "src": "2810:31:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$1253_memory_ptr_$_t_struct$_EthCrossAccount_$1253_memory_ptr_$_t_uint256_$returns$__$",
+                                                            "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                        }
+                                                    },
+                                                    "id": 1880,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "functionCall",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "2810:145:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_tuple$__$",
+                                                        "typeString": "tuple()"
+                                                    }
+                                                },
+                                                "id": 1881,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "2810:145:5"
+                                            }
+                                        ]
+                                    }
+                                },
+                                {
+                                    "eventCall": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "hexValue": "30",
+                                                        "id": 1934,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "number",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "3636:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        },
+                                                        "value": "0"
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        }
+                                                    ],
+                                                    "id": 1933,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "3628:7:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                        "typeString": "type(address)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1932,
+                                                        "name": "address",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "3628:7:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 1935,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "3628:10:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 1936,
+                                                "name": "_substrateReceiver",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1815,
+                                                "src": "3640:18:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            {
+                                                "id": 1937,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1813,
+                                                "src": "3660:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 1938,
+                                                "name": "tokenId",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1840,
+                                                "src": "3673:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            ],
+                                            "id": 1931,
+                                            "name": "MintToSub",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1811,
+                                            "src": "3618:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+                                                "typeString": "function (address,uint256,address,uint256)"
+                                            }
+                                        },
+                                        "id": 1939,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "3618:63:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 1940,
+                                    "nodeType": "EmitStatement",
+                                    "src": "3613:68:5"
+                                }
+                            ]
+                        },
+                        "functionSelector": "7a8d9786",
+                        "id": 1942,
+                        "implemented": true,
+                        "kind": "function",
+                        "modifiers": [
+                            {
+                                "arguments": [
+                                    {
+                                        "id": 1818,
+                                        "name": "_collection",
+                                        "nodeType": "Identifier",
+                                        "overloadedDeclarations": [],
+                                        "referencedDeclaration": 1813,
+                                        "src": "2313:11:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    }
+                                ],
+                                "id": 1819,
+                                "kind": "modifierInvocation",
+                                "modifierName": {
+                                    "id": 1817,
+                                    "name": "checkRestrictions",
+                                    "nameLocations": [
+                                        "2295:17:5"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1800,
+                                    "src": "2295:17:5"
+                                },
+                                "nodeType": "ModifierInvocation",
+                                "src": "2295:30:5"
+                            }
+                        ],
+                        "name": "mintToSubstrate",
+                        "nameLocation": "2221:15:5",
+                        "nodeType": "FunctionDefinition",
+                        "parameters": {
+                            "id": 1816,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 1813,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "2245:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1942,
+                                    "src": "2237:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1812,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2237:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1815,
+                                    "mutability": "mutable",
+                                    "name": "_substrateReceiver",
+                                    "nameLocation": "2266:18:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1942,
+                                    "src": "2258:26:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 1814,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2258:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "2236:49:5"
+                        },
+                        "returnParameters": {
+                            "id": 1820,
+                            "nodeType": "ParameterList",
+                            "parameters": [],
+                            "src": "2326:0:5"
+                        },
+                        "scope": 2269,
+                        "src": "2212:1473:5",
+                        "stateMutability": "nonpayable",
+                        "virtual": false,
+                        "visibility": "external"
+                    },
+                    {
+                        "body": {
+                            "id": 2150,
+                            "nodeType": "Block",
+                            "src": "3855:1590:5",
+                            "statements": [
+                                {
+                                    "assignments": [
+                                        1957
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1957,
+                                            "mutability": "mutable",
+                                            "name": "propertiesLength",
+                                            "nameLocation": "4016:16:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2150,
+                                            "src": "4008:24:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1956,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4008:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1960,
+                                    "initialValue": {
+                                        "expression": {
+                                            "id": 1958,
+                                            "name": "properties",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1950,
+                                            "src": "4035:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                "typeString": "struct Property calldata[] calldata"
+                                            }
+                                        },
+                                        "id": 1959,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "lValueRequested": false,
+                                        "memberLocation": "4046:6:5",
+                                        "memberName": "length",
+                                        "nodeType": "MemberAccess",
+                                        "src": "4035:17:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "4008:44:5"
+                                },
+                                {
+                                    "expression": {
+                                        "arguments": [
+                                            {
+                                                "commonType": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                },
+                                                "id": 1964,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "lValueRequested": false,
+                                                "leftExpression": {
+                                                    "id": 1962,
+                                                    "name": "propertiesLength",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1957,
+                                                    "src": "4064:16:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    }
+                                                },
+                                                "nodeType": "BinaryOperation",
+                                                "operator": ">",
+                                                "rightExpression": {
+                                                    "hexValue": "30",
+                                                    "id": 1963,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "kind": "number",
+                                                    "lValueRequested": false,
+                                                    "nodeType": "Literal",
+                                                    "src": "4083:1:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                        "typeString": "int_const 0"
+                                                    },
+                                                    "value": "0"
+                                                },
+                                                "src": "4064:20:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            {
+                                                "hexValue": "50726f70657269657320697320656d707479",
+                                                "id": 1965,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "string",
+                                                "lValueRequested": false,
+                                                "nodeType": "Literal",
+                                                "src": "4086:20:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                    "typeString": "literal_string \"Properies is empty\""
+                                                },
+                                                "value": "Properies is empty"
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                    "typeString": "literal_string \"Properies is empty\""
+                                                }
+                                            ],
+                                            "id": 1961,
+                                            "name": "require",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [
+                                                4294967278,
+                                                4294967278
+                                            ],
+                                            "referencedDeclaration": 4294967278,
+                                            "src": "4056:7:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+                                                "typeString": "function (bool,string memory) pure"
+                                            }
+                                        },
+                                        "id": 1966,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "4056:51:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 1967,
+                                    "nodeType": "ExpressionStatement",
+                                    "src": "4056:51:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1970
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1970,
+                                            "mutability": "mutable",
+                                            "name": "commonContract",
+                                            "nameLocation": "4123:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2150,
+                                            "src": "4112:25:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_contract$_Collection_$1248",
+                                                "typeString": "contract Collection"
+                                            },
+                                            "typeName": {
+                                                "id": 1969,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1968,
+                                                    "name": "Collection",
+                                                    "nameLocations": [
+                                                        "4112:10:5"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1248,
+                                                    "src": "4112:10:5"
+                                                },
+                                                "referencedDeclaration": 1248,
+                                                "src": "4112:10:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1974,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "id": 1972,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1944,
+                                                "src": "4151:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            ],
+                                            "id": 1971,
+                                            "name": "Collection",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1248,
+                                            "src": "4140:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_type$_t_contract$_Collection_$1248_$",
+                                                "typeString": "type(contract Collection)"
+                                            }
+                                        },
+                                        "id": 1973,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "typeConversion",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "4140:23:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                            "typeString": "contract Collection"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "4112:51:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1976
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1976,
+                                            "mutability": "mutable",
+                                            "name": "collectionType",
+                                            "nameLocation": "4175:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2150,
+                                            "src": "4167:22:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "typeName": {
+                                                "id": 1975,
+                                                "name": "bytes32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4167:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1985,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [],
+                                                        "expression": {
+                                                            "argumentTypes": [],
+                                                            "expression": {
+                                                                "id": 1980,
+                                                                "name": "commonContract",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1970,
+                                                                "src": "4208:14:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                                    "typeString": "contract Collection"
+                                                                }
+                                                            },
+                                                            "id": 1981,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "4223:20:5",
+                                                            "memberName": "uniqueCollectionType",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1219,
+                                                            "src": "4208:35:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
+                                                                "typeString": "function () view external returns (string memory)"
+                                                            }
+                                                        },
+                                                        "id": 1982,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "4208:37:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    ],
+                                                    "id": 1979,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "4202:5:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                        "typeString": "type(bytes storage pointer)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1978,
+                                                        "name": "bytes",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "4202:5:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 1983,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "4202:44:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            ],
+                                            "id": 1977,
+                                            "name": "keccak256",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 4294967288,
+                                            "src": "4192:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                                "typeString": "function (bytes memory) pure returns (bytes32)"
+                                            }
+                                        },
+                                        "id": 1984,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "4192:55:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "4167:80:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1987
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1987,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "4259:7:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2150,
+                                            "src": "4251:15:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1986,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4251:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1988,
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "4251:15:5"
+                                },
+                                {
+                                    "condition": {
+                                        "commonType": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        },
+                                        "id": 1991,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "lValueRequested": false,
+                                        "leftExpression": {
+                                            "id": 1989,
+                                            "name": "collectionType",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1976,
+                                            "src": "4275:14:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "nodeType": "BinaryOperation",
+                                        "operator": "==",
+                                        "rightExpression": {
+                                            "id": 1990,
+                                            "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1770,
+                                            "src": "4293:26:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "src": "4275:44:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bool",
+                                            "typeString": "bool"
+                                        }
+                                    },
+                                    "falseBody": {
+                                        "condition": {
+                                            "commonType": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "id": 2063,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": false,
+                                            "lValueRequested": false,
+                                            "leftExpression": {
+                                                "id": 2061,
+                                                "name": "collectionType",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1976,
+                                                "src": "4770:14:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "nodeType": "BinaryOperation",
+                                            "operator": "==",
+                                            "rightExpression": {
+                                                "id": 2062,
+                                                "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1778,
+                                                "src": "4788:27:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "src": "4770:45:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            }
+                                        },
+                                        "falseBody": {
+                                            "id": 2137,
+                                            "nodeType": "Block",
+                                            "src": "5248:69:5",
+                                            "statements": [
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c792077697468204e4654206f7220524654",
+                                                                "id": 2134,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "string",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "5260:51:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                },
+                                                                "value": "Wrong collection type. Works only with NFT or RFT"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                }
+                                                            ],
+                                                            "id": 2133,
+                                                            "name": "revert",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [
+                                                                4294967277,
+                                                                4294967277
+                                                            ],
+                                                            "referencedDeclaration": 4294967277,
+                                                            "src": "5253:6:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+                                                                "typeString": "function (string memory) pure"
+                                                            }
+                                                        },
+                                                        "id": 2135,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5253:59:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 2136,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "5253:59:5"
+                                                }
+                                            ]
+                                        },
+                                        "id": 2138,
+                                        "nodeType": "IfStatement",
+                                        "src": "4766:551:5",
+                                        "trueBody": {
+                                            "id": 2132,
+                                            "nodeType": "Block",
+                                            "src": "4817:425:5",
+                                            "statements": [
+                                                {
+                                                    "assignments": [
+                                                        2066
+                                                    ],
+                                                    "declarations": [
+                                                        {
+                                                            "constant": false,
+                                                            "id": 2066,
+                                                            "mutability": "mutable",
+                                                            "name": "nftCollection",
+                                                            "nameLocation": "4832:13:5",
+                                                            "nodeType": "VariableDeclaration",
+                                                            "scope": 2132,
+                                                            "src": "4822:23:5",
+                                                            "stateVariable": false,
+                                                            "storageLocation": "default",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                "typeString": "contract UniqueNFT"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 2065,
+                                                                "nodeType": "UserDefinedTypeName",
+                                                                "pathNode": {
+                                                                    "id": 2064,
+                                                                    "name": "UniqueNFT",
+                                                                    "nameLocations": [
+                                                                        "4822:9:5"
+                                                                    ],
+                                                                    "nodeType": "IdentifierPath",
+                                                                    "referencedDeclaration": 930,
+                                                                    "src": "4822:9:5"
+                                                                },
+                                                                "referencedDeclaration": 930,
+                                                                "src": "4822:9:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "visibility": "internal"
+                                                        }
+                                                    ],
+                                                    "id": 2070,
+                                                    "initialValue": {
+                                                        "arguments": [
+                                                            {
+                                                                "id": 2068,
+                                                                "name": "_collection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1944,
+                                                                "src": "4858:11:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            ],
+                                                            "id": 2067,
+                                                            "name": "UniqueNFT",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 930,
+                                                            "src": "4848:9:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_contract$_UniqueNFT_$930_$",
+                                                                "typeString": "type(contract UniqueNFT)"
+                                                            }
+                                                        },
+                                                        "id": 2069,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "4848:22:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                            "typeString": "contract UniqueNFT"
+                                                        }
+                                                    },
+                                                    "nodeType": "VariableDeclarationStatement",
+                                                    "src": "4822:48:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "id": 2075,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftHandSide": {
+                                                            "id": 2071,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1987,
+                                                            "src": "4875:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "Assignment",
+                                                        "operator": "=",
+                                                        "rightHandSide": {
+                                                            "arguments": [],
+                                                            "expression": {
+                                                                "argumentTypes": [],
+                                                                "expression": {
+                                                                    "id": 2072,
+                                                                    "name": "nftCollection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 2066,
+                                                                    "src": "4885:13:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                        "typeString": "contract UniqueNFT"
+                                                                    }
+                                                                },
+                                                                "id": 2073,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "4899:11:5",
+                                                                "memberName": "nextTokenId",
+                                                                "nodeType": "MemberAccess",
+                                                                "referencedDeclaration": 757,
+                                                                "src": "4885:25:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+                                                                    "typeString": "function () view external returns (uint256)"
+                                                                }
+                                                            },
+                                                            "id": 2074,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "functionCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4885:27:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "src": "4875:37:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "id": 2076,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "4875:37:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 2082,
+                                                                        "name": "this",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 4294967268,
+                                                                        "src": "4944:4:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                            "typeString": "contract EvmToSubstrate"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                            "typeString": "contract EvmToSubstrate"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2081,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                    "src": "4936:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                        "typeString": "type(address)"
+                                                                    },
+                                                                    "typeName": {
+                                                                        "id": 2080,
+                                                                        "name": "address",
+                                                                        "nodeType": "ElementaryTypeName",
+                                                                        "src": "4936:7:5",
+                                                                        "typeDescriptions": {}
+                                                                    }
+                                                                },
+                                                                "id": 2083,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "typeConversion",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "4936:13:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 2077,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2066,
+                                                                "src": "4917:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 2079,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "4931:4:5",
+                                                            "memberName": "mint",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 671,
+                                                            "src": "4917:18:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                "typeString": "function (address) external returns (uint256)"
+                                                            }
+                                                        },
+                                                        "id": 2084,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "4917:33:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "id": 2085,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "4917:33:5"
+                                                },
+                                                {
+                                                    "body": {
+                                                        "id": 2110,
+                                                        "nodeType": "Block",
+                                                        "src": "5002:86:5",
+                                                        "statements": [
+                                                            {
+                                                                "expression": {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 2099,
+                                                                            "name": "tokenId",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 1987,
+                                                                            "src": "5034:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            }
+                                                                        },
+                                                                        {
+                                                                            "expression": {
+                                                                                "baseExpression": {
+                                                                                    "id": 2100,
+                                                                                    "name": "properties",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 1950,
+                                                                                    "src": "5043:10:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                                                        "typeString": "struct Property calldata[] calldata"
+                                                                                    }
+                                                                                },
+                                                                                "id": 2102,
+                                                                                "indexExpression": {
+                                                                                    "id": 2101,
+                                                                                    "name": "i",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 2087,
+                                                                                    "src": "5054:1:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_uint256",
+                                                                                        "typeString": "uint256"
+                                                                                    }
+                                                                                },
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "IndexAccess",
+                                                                                "src": "5043:13:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_struct$_Property_$1762_calldata_ptr",
+                                                                                    "typeString": "struct Property calldata"
+                                                                                }
+                                                                            },
+                                                                            "id": 2103,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "memberLocation": "5057:3:5",
+                                                                            "memberName": "key",
+                                                                            "nodeType": "MemberAccess",
+                                                                            "referencedDeclaration": 1759,
+                                                                            "src": "5043:17:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_string_calldata_ptr",
+                                                                                "typeString": "string calldata"
+                                                                            }
+                                                                        },
+                                                                        {
+                                                                            "expression": {
+                                                                                "baseExpression": {
+                                                                                    "id": 2104,
+                                                                                    "name": "properties",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 1950,
+                                                                                    "src": "5062:10:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                                                        "typeString": "struct Property calldata[] calldata"
+                                                                                    }
+                                                                                },
+                                                                                "id": 2106,
+                                                                                "indexExpression": {
+                                                                                    "id": 2105,
+                                                                                    "name": "i",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 2087,
+                                                                                    "src": "5073:1:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_uint256",
+                                                                                        "typeString": "uint256"
+                                                                                    }
+                                                                                },
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "IndexAccess",
+                                                                                "src": "5062:13:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_struct$_Property_$1762_calldata_ptr",
+                                                                                    "typeString": "struct Property calldata"
+                                                                                }
+                                                                            },
+                                                                            "id": 2107,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "memberLocation": "5076:5:5",
+                                                                            "memberName": "value",
+                                                                            "nodeType": "MemberAccess",
+                                                                            "referencedDeclaration": 1761,
+                                                                            "src": "5062:19:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                                "typeString": "bytes calldata"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            },
+                                                                            {
+                                                                                "typeIdentifier": "t_string_calldata_ptr",
+                                                                                "typeString": "string calldata"
+                                                                            },
+                                                                            {
+                                                                                "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                                "typeString": "bytes calldata"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "id": 2096,
+                                                                            "name": "nftCollection",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 2066,
+                                                                            "src": "5008:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                                "typeString": "contract UniqueNFT"
+                                                                            }
+                                                                        },
+                                                                        "id": 2098,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "5022:11:5",
+                                                                        "memberName": "setProperty",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 328,
+                                                                        "src": "5008:25:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
+                                                                            "typeString": "function (uint256,string memory,bytes memory) external"
+                                                                        }
+                                                                    },
+                                                                    "id": 2108,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "functionCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "5008:74:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_tuple$__$",
+                                                                        "typeString": "tuple()"
+                                                                    }
+                                                                },
+                                                                "id": 2109,
+                                                                "nodeType": "ExpressionStatement",
+                                                                "src": "5008:74:5"
+                                                            }
+                                                        ]
+                                                    },
+                                                    "condition": {
+                                                        "commonType": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        },
+                                                        "id": 2092,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftExpression": {
+                                                            "id": 2090,
+                                                            "name": "i",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 2087,
+                                                            "src": "4975:1:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "BinaryOperation",
+                                                        "operator": "<",
+                                                        "rightExpression": {
+                                                            "id": 2091,
+                                                            "name": "propertiesLength",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1957,
+                                                            "src": "4979:16:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "src": "4975:20:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        }
+                                                    },
+                                                    "id": 2111,
+                                                    "initializationExpression": {
+                                                        "assignments": [
+                                                            2087
+                                                        ],
+                                                        "declarations": [
+                                                            {
+                                                                "constant": false,
+                                                                "id": 2087,
+                                                                "mutability": "mutable",
+                                                                "name": "i",
+                                                                "nameLocation": "4968:1:5",
+                                                                "nodeType": "VariableDeclaration",
+                                                                "scope": 2111,
+                                                                "src": "4960:9:5",
+                                                                "stateVariable": false,
+                                                                "storageLocation": "default",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                },
+                                                                "typeName": {
+                                                                    "id": 2086,
+                                                                    "name": "uint256",
+                                                                    "nodeType": "ElementaryTypeName",
+                                                                    "src": "4960:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "visibility": "internal"
+                                                            }
+                                                        ],
+                                                        "id": 2089,
+                                                        "initialValue": {
+                                                            "hexValue": "30",
+                                                            "id": 2088,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "kind": "number",
+                                                            "lValueRequested": false,
+                                                            "nodeType": "Literal",
+                                                            "src": "4972:1:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                "typeString": "int_const 0"
+                                                            },
+                                                            "value": "0"
+                                                        },
+                                                        "nodeType": "VariableDeclarationStatement",
+                                                        "src": "4960:13:5"
+                                                    },
+                                                    "loopExpression": {
+                                                        "expression": {
+                                                            "id": 2094,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "nodeType": "UnaryOperation",
+                                                            "operator": "++",
+                                                            "prefix": true,
+                                                            "src": "4997:3:5",
+                                                            "subExpression": {
+                                                                "id": 2093,
+                                                                "name": "i",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2087,
+                                                                "src": "4999:1:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "id": 2095,
+                                                        "nodeType": "ExpressionStatement",
+                                                        "src": "4997:3:5"
+                                                    },
+                                                    "nodeType": "ForStatement",
+                                                    "src": "4955:133:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "id": 2118,
+                                                                                "name": "this",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 4294967268,
+                                                                                "src": "5155:4:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2117,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "5147:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 2116,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "5147:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 2119,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "5147:13:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "hexValue": "30",
+                                                                        "id": 2120,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "number",
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "Literal",
+                                                                        "src": "5162:1:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        },
+                                                                        "value": "0"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2115,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 610,
+                                                                    "src": "5129:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                        "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 2121,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "5129:35:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "hexValue": "30",
+                                                                                "id": 2125,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "number",
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "Literal",
+                                                                                "src": "5196:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                },
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2124,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "5188:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 2123,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "5188:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 2126,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "5188:10:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 2127,
+                                                                        "name": "_substrateReceiver",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1946,
+                                                                        "src": "5200:18:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2122,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 610,
+                                                                    "src": "5170:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                        "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 2128,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "5170:49:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "id": 2129,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1987,
+                                                                "src": "5225:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 2112,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2066,
+                                                                "src": "5092:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 2114,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "5106:17:5",
+                                                            "memberName": "transferFromCross",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 734,
+                                                            "src": "5092:31:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_uint256_$returns$__$",
+                                                                "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                            }
+                                                        },
+                                                        "id": 2130,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5092:145:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 2131,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "5092:145:5"
+                                                }
+                                            ]
+                                        }
+                                    },
+                                    "id": 2139,
+                                    "nodeType": "IfStatement",
+                                    "src": "4271:1046:5",
+                                    "trueBody": {
+                                        "id": 2060,
+                                        "nodeType": "Block",
+                                        "src": "4321:439:5",
+                                        "statements": [
+                                            {
+                                                "assignments": [
+                                                    1994
+                                                ],
+                                                "declarations": [
+                                                    {
+                                                        "constant": false,
+                                                        "id": 1994,
+                                                        "mutability": "mutable",
+                                                        "name": "rftCollection",
+                                                        "nameLocation": "4343:13:5",
+                                                        "nodeType": "VariableDeclaration",
+                                                        "scope": 2060,
+                                                        "src": "4326:30:5",
+                                                        "stateVariable": false,
+                                                        "storageLocation": "default",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                            "typeString": "contract UniqueRefungible"
+                                                        },
+                                                        "typeName": {
+                                                            "id": 1993,
+                                                            "nodeType": "UserDefinedTypeName",
+                                                            "pathNode": {
+                                                                "id": 1992,
+                                                                "name": "UniqueRefungible",
+                                                                "nameLocations": [
+                                                                    "4326:16:5"
+                                                                ],
+                                                                "nodeType": "IdentifierPath",
+                                                                "referencedDeclaration": 1572,
+                                                                "src": "4326:16:5"
+                                                            },
+                                                            "referencedDeclaration": 1572,
+                                                            "src": "4326:16:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "visibility": "internal"
+                                                    }
+                                                ],
+                                                "id": 1998,
+                                                "initialValue": {
+                                                    "arguments": [
+                                                        {
+                                                            "id": 1996,
+                                                            "name": "_collection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1944,
+                                                            "src": "4376:11:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        ],
+                                                        "id": 1995,
+                                                        "name": "UniqueRefungible",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1572,
+                                                        "src": "4359:16:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_type$_t_contract$_UniqueRefungible_$1572_$",
+                                                            "typeString": "type(contract UniqueRefungible)"
+                                                        }
+                                                    },
+                                                    "id": 1997,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "typeConversion",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "4359:29:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                        "typeString": "contract UniqueRefungible"
+                                                    }
+                                                },
+                                                "nodeType": "VariableDeclarationStatement",
+                                                "src": "4326:62:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "id": 2003,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftHandSide": {
+                                                        "id": 1999,
+                                                        "name": "tokenId",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1987,
+                                                        "src": "4393:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "nodeType": "Assignment",
+                                                    "operator": "=",
+                                                    "rightHandSide": {
+                                                        "arguments": [],
+                                                        "expression": {
+                                                            "argumentTypes": [],
+                                                            "expression": {
+                                                                "id": 2000,
+                                                                "name": "rftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1994,
+                                                                "src": "4403:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                    "typeString": "contract UniqueRefungible"
+                                                                }
+                                                            },
+                                                            "id": 2001,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "4417:11:5",
+                                                            "memberName": "nextTokenId",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1391,
+                                                            "src": "4403:25:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+                                                                "typeString": "function () view external returns (uint256)"
+                                                            }
+                                                        },
+                                                        "id": 2002,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "4403:27:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "src": "4393:37:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    }
+                                                },
+                                                "id": 2004,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "4393:37:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "arguments": [
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "id": 2010,
+                                                                    "name": "this",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 4294967268,
+                                                                    "src": "4462:4:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                        "typeString": "contract EvmToSubstrate"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                        "typeString": "contract EvmToSubstrate"
+                                                                    }
+                                                                ],
+                                                                "id": 2009,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "lValueRequested": false,
+                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                "src": "4454:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                    "typeString": "type(address)"
+                                                                },
+                                                                "typeName": {
+                                                                    "id": 2008,
+                                                                    "name": "address",
+                                                                    "nodeType": "ElementaryTypeName",
+                                                                    "src": "4454:7:5",
+                                                                    "typeDescriptions": {}
+                                                                }
+                                                            },
+                                                            "id": 2011,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "typeConversion",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4454:13:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "id": 2005,
+                                                            "name": "rftCollection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1994,
+                                                            "src": "4435:13:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "id": 2007,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "4449:4:5",
+                                                        "memberName": "mint",
+                                                        "nodeType": "MemberAccess",
+                                                        "referencedDeclaration": 1314,
+                                                        "src": "4435:18:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                            "typeString": "function (address) external returns (uint256)"
+                                                        }
+                                                    },
+                                                    "id": 2012,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "functionCall",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "4435:33:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    }
+                                                },
+                                                "id": 2013,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "4435:33:5"
+                                            },
+                                            {
+                                                "body": {
+                                                    "id": 2038,
+                                                    "nodeType": "Block",
+                                                    "src": "4520:86:5",
+                                                    "statements": [
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 2027,
+                                                                        "name": "tokenId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1987,
+                                                                        "src": "4552:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "expression": {
+                                                                            "baseExpression": {
+                                                                                "id": 2028,
+                                                                                "name": "properties",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1950,
+                                                                                "src": "4561:10:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                                                    "typeString": "struct Property calldata[] calldata"
+                                                                                }
+                                                                            },
+                                                                            "id": 2030,
+                                                                            "indexExpression": {
+                                                                                "id": 2029,
+                                                                                "name": "i",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 2015,
+                                                                                "src": "4572:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            },
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "IndexAccess",
+                                                                            "src": "4561:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_struct$_Property_$1762_calldata_ptr",
+                                                                                "typeString": "struct Property calldata"
+                                                                            }
+                                                                        },
+                                                                        "id": 2031,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "4575:3:5",
+                                                                        "memberName": "key",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 1759,
+                                                                        "src": "4561:17:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_string_calldata_ptr",
+                                                                            "typeString": "string calldata"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "expression": {
+                                                                            "baseExpression": {
+                                                                                "id": 2032,
+                                                                                "name": "properties",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1950,
+                                                                                "src": "4580:10:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                                                    "typeString": "struct Property calldata[] calldata"
+                                                                                }
+                                                                            },
+                                                                            "id": 2034,
+                                                                            "indexExpression": {
+                                                                                "id": 2033,
+                                                                                "name": "i",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 2015,
+                                                                                "src": "4591:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            },
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "IndexAccess",
+                                                                            "src": "4580:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_struct$_Property_$1762_calldata_ptr",
+                                                                                "typeString": "struct Property calldata"
+                                                                            }
+                                                                        },
+                                                                        "id": 2035,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "4594:5:5",
+                                                                        "memberName": "value",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 1761,
+                                                                        "src": "4580:19:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                            "typeString": "bytes calldata"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_string_calldata_ptr",
+                                                                            "typeString": "string calldata"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                            "typeString": "bytes calldata"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "id": 2024,
+                                                                        "name": "rftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1994,
+                                                                        "src": "4526:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                            "typeString": "contract UniqueRefungible"
+                                                                        }
+                                                                    },
+                                                                    "id": 2026,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "4540:11:5",
+                                                                    "memberName": "setProperty",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 971,
+                                                                    "src": "4526:25:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
+                                                                        "typeString": "function (uint256,string memory,bytes memory) external"
+                                                                    }
+                                                                },
+                                                                "id": 2036,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "4526:74:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 2037,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "4526:74:5"
+                                                        }
+                                                    ]
+                                                },
+                                                "condition": {
+                                                    "commonType": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    },
+                                                    "id": 2020,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftExpression": {
+                                                        "id": 2018,
+                                                        "name": "i",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 2015,
+                                                        "src": "4493:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "nodeType": "BinaryOperation",
+                                                    "operator": "<",
+                                                    "rightExpression": {
+                                                        "id": 2019,
+                                                        "name": "propertiesLength",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1957,
+                                                        "src": "4497:16:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "src": "4493:20:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bool",
+                                                        "typeString": "bool"
+                                                    }
+                                                },
+                                                "id": 2039,
+                                                "initializationExpression": {
+                                                    "assignments": [
+                                                        2015
+                                                    ],
+                                                    "declarations": [
+                                                        {
+                                                            "constant": false,
+                                                            "id": 2015,
+                                                            "mutability": "mutable",
+                                                            "name": "i",
+                                                            "nameLocation": "4486:1:5",
+                                                            "nodeType": "VariableDeclaration",
+                                                            "scope": 2039,
+                                                            "src": "4478:9:5",
+                                                            "stateVariable": false,
+                                                            "storageLocation": "default",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 2014,
+                                                                "name": "uint256",
+                                                                "nodeType": "ElementaryTypeName",
+                                                                "src": "4478:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "visibility": "internal"
+                                                        }
+                                                    ],
+                                                    "id": 2017,
+                                                    "initialValue": {
+                                                        "hexValue": "30",
+                                                        "id": 2016,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "number",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "4490:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        },
+                                                        "value": "0"
+                                                    },
+                                                    "nodeType": "VariableDeclarationStatement",
+                                                    "src": "4478:13:5"
+                                                },
+                                                "loopExpression": {
+                                                    "expression": {
+                                                        "id": 2022,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "nodeType": "UnaryOperation",
+                                                        "operator": "++",
+                                                        "prefix": true,
+                                                        "src": "4515:3:5",
+                                                        "subExpression": {
+                                                            "id": 2021,
+                                                            "name": "i",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 2015,
+                                                            "src": "4517:1:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "id": 2023,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "4515:3:5"
+                                                },
+                                                "nodeType": "ForStatement",
+                                                "src": "4473:133:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "arguments": [
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 2046,
+                                                                            "name": "this",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 4294967268,
+                                                                            "src": "4673:4:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        ],
+                                                                        "id": 2045,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "4665:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 2044,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "4665:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 2047,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "4665:13:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "hexValue": "30",
+                                                                    "id": 2048,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "number",
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "Literal",
+                                                                    "src": "4680:1:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    },
+                                                                    "value": "0"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    }
+                                                                ],
+                                                                "id": 2043,
+                                                                "name": "RftCrossAccountId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1253,
+                                                                "src": "4647:17:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$1253_storage_ptr_$",
+                                                                    "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                }
+                                                            },
+                                                            "id": 2049,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "structConstructorCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4647:35:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                "typeString": "struct EthCrossAccount memory"
+                                                            }
+                                                        },
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "hexValue": "30",
+                                                                            "id": 2053,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "kind": "number",
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "Literal",
+                                                                            "src": "4714:1:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            },
+                                                                            "value": "0"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            }
+                                                                        ],
+                                                                        "id": 2052,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "4706:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 2051,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "4706:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 2054,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "4706:10:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "id": 2055,
+                                                                    "name": "_substrateReceiver",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1946,
+                                                                    "src": "4718:18:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                ],
+                                                                "id": 2050,
+                                                                "name": "RftCrossAccountId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1253,
+                                                                "src": "4688:17:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$1253_storage_ptr_$",
+                                                                    "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                }
+                                                            },
+                                                            "id": 2056,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "structConstructorCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4688:49:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                "typeString": "struct EthCrossAccount memory"
+                                                            }
+                                                        },
+                                                        {
+                                                            "id": 2057,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1987,
+                                                            "src": "4743:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                "typeString": "struct EthCrossAccount memory"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                "typeString": "struct EthCrossAccount memory"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "id": 2040,
+                                                            "name": "rftCollection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1994,
+                                                            "src": "4610:13:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "id": 2042,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "4624:17:5",
+                                                        "memberName": "transferFromCross",
+                                                        "nodeType": "MemberAccess",
+                                                        "referencedDeclaration": 1368,
+                                                        "src": "4610:31:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$1253_memory_ptr_$_t_struct$_EthCrossAccount_$1253_memory_ptr_$_t_uint256_$returns$__$",
+                                                            "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                        }
+                                                    },
+                                                    "id": 2058,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "functionCall",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "4610:145:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_tuple$__$",
+                                                        "typeString": "tuple()"
+                                                    }
+                                                },
+                                                "id": 2059,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "4610:145:5"
+                                            }
+                                        ]
+                                    }
+                                },
+                                {
+                                    "eventCall": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "hexValue": "30",
+                                                        "id": 2143,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "number",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "5396:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        },
+                                                        "value": "0"
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        }
+                                                    ],
+                                                    "id": 2142,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "5388:7:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                        "typeString": "type(address)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 2141,
+                                                        "name": "address",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "5388:7:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 2144,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "5388:10:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 2145,
+                                                "name": "_substrateReceiver",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1946,
+                                                "src": "5400:18:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            {
+                                                "id": 2146,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1944,
+                                                "src": "5420:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 2147,
+                                                "name": "tokenId",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1987,
+                                                "src": "5433:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            ],
+                                            "id": 2140,
+                                            "name": "MintToSub",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1811,
+                                            "src": "5378:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+                                                "typeString": "function (address,uint256,address,uint256)"
+                                            }
+                                        },
+                                        "id": 2148,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "5378:63:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 2149,
+                                    "nodeType": "EmitStatement",
+                                    "src": "5373:68:5"
+                                }
+                            ]
+                        },
+                        "functionSelector": "440dff9d",
+                        "id": 2151,
+                        "implemented": true,
+                        "kind": "function",
+                        "modifiers": [
+                            {
+                                "arguments": [
+                                    {
+                                        "id": 1953,
+                                        "name": "_collection",
+                                        "nodeType": "Identifier",
+                                        "overloadedDeclarations": [],
+                                        "referencedDeclaration": 1944,
+                                        "src": "3842:11:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    }
+                                ],
+                                "id": 1954,
+                                "kind": "modifierInvocation",
+                                "modifierName": {
+                                    "id": 1952,
+                                    "name": "checkRestrictions",
+                                    "nameLocations": [
+                                        "3824:17:5"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1800,
+                                    "src": "3824:17:5"
+                                },
+                                "nodeType": "ModifierInvocation",
+                                "src": "3824:30:5"
+                            }
+                        ],
+                        "name": "mintToSubstrateWithProperty",
+                        "nameLocation": "3697:27:5",
+                        "nodeType": "FunctionDefinition",
+                        "parameters": {
+                            "id": 1951,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 1944,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "3736:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2151,
+                                    "src": "3728:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1943,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "3728:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1946,
+                                    "mutability": "mutable",
+                                    "name": "_substrateReceiver",
+                                    "nameLocation": "3759:18:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2151,
+                                    "src": "3751:26:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 1945,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "3751:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1950,
+                                    "mutability": "mutable",
+                                    "name": "properties",
+                                    "nameLocation": "3801:10:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2151,
+                                    "src": "3781:30:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "calldata",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                        "typeString": "struct Property[]"
+                                    },
+                                    "typeName": {
+                                        "baseType": {
+                                            "id": 1948,
+                                            "nodeType": "UserDefinedTypeName",
+                                            "pathNode": {
+                                                "id": 1947,
+                                                "name": "Property",
+                                                "nameLocations": [
+                                                    "3781:8:5"
+                                                ],
+                                                "nodeType": "IdentifierPath",
+                                                "referencedDeclaration": 1762,
+                                                "src": "3781:8:5"
+                                            },
+                                            "referencedDeclaration": 1762,
+                                            "src": "3781:8:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_Property_$1762_storage_ptr",
+                                                "typeString": "struct Property"
+                                            }
+                                        },
+                                        "id": 1949,
+                                        "nodeType": "ArrayTypeName",
+                                        "src": "3781:10:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_array$_t_struct$_Property_$1762_storage_$dyn_storage_ptr",
+                                            "typeString": "struct Property[]"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "3724:90:5"
+                        },
+                        "returnParameters": {
+                            "id": 1955,
+                            "nodeType": "ParameterList",
+                            "parameters": [],
+                            "src": "3855:0:5"
+                        },
+                        "scope": 2269,
+                        "src": "3688:1757:5",
+                        "stateMutability": "nonpayable",
+                        "virtual": false,
+                        "visibility": "external"
+                    },
+                    {
+                        "body": {
+                            "id": 2267,
+                            "nodeType": "Block",
+                            "src": "5619:885:5",
+                            "statements": [
+                                {
+                                    "assignments": [
+                                        2166
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 2166,
+                                            "mutability": "mutable",
+                                            "name": "propertiesLength",
+                                            "nameLocation": "5631:16:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2267,
+                                            "src": "5623:24:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 2165,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5623:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 2169,
+                                    "initialValue": {
+                                        "expression": {
+                                            "id": 2167,
+                                            "name": "_properties",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 2159,
+                                            "src": "5650:11:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                                "typeString": "struct Tuple21 calldata[] calldata"
+                                            }
+                                        },
+                                        "id": 2168,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "lValueRequested": false,
+                                        "memberLocation": "5662:6:5",
+                                        "memberName": "length",
+                                        "nodeType": "MemberAccess",
+                                        "src": "5650:18:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "5623:45:5"
+                                },
+                                {
+                                    "expression": {
+                                        "arguments": [
+                                            {
+                                                "commonType": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                },
+                                                "id": 2173,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "lValueRequested": false,
+                                                "leftExpression": {
+                                                    "id": 2171,
+                                                    "name": "propertiesLength",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 2166,
+                                                    "src": "5680:16:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    }
+                                                },
+                                                "nodeType": "BinaryOperation",
+                                                "operator": ">",
+                                                "rightExpression": {
+                                                    "hexValue": "30",
+                                                    "id": 2172,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "kind": "number",
+                                                    "lValueRequested": false,
+                                                    "nodeType": "Literal",
+                                                    "src": "5699:1:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                        "typeString": "int_const 0"
+                                                    },
+                                                    "value": "0"
+                                                },
+                                                "src": "5680:20:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            {
+                                                "hexValue": "50726f70657269657320697320656d707479",
+                                                "id": 2174,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "string",
+                                                "lValueRequested": false,
+                                                "nodeType": "Literal",
+                                                "src": "5702:20:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                    "typeString": "literal_string \"Properies is empty\""
+                                                },
+                                                "value": "Properies is empty"
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                    "typeString": "literal_string \"Properies is empty\""
+                                                }
+                                            ],
+                                            "id": 2170,
+                                            "name": "require",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [
+                                                4294967278,
+                                                4294967278
+                                            ],
+                                            "referencedDeclaration": 4294967278,
+                                            "src": "5672:7:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+                                                "typeString": "function (bool,string memory) pure"
+                                            }
+                                        },
+                                        "id": 2175,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "5672:51:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 2176,
+                                    "nodeType": "ExpressionStatement",
+                                    "src": "5672:51:5"
+                                },
+                                {
+                                    "assignments": [
+                                        2179
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 2179,
+                                            "mutability": "mutable",
+                                            "name": "commonContract",
+                                            "nameLocation": "5739:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2267,
+                                            "src": "5728:25:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_contract$_Collection_$1248",
+                                                "typeString": "contract Collection"
+                                            },
+                                            "typeName": {
+                                                "id": 2178,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 2177,
+                                                    "name": "Collection",
+                                                    "nameLocations": [
+                                                        "5728:10:5"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1248,
+                                                    "src": "5728:10:5"
+                                                },
+                                                "referencedDeclaration": 1248,
+                                                "src": "5728:10:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 2183,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "id": 2181,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 2153,
+                                                "src": "5767:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            ],
+                                            "id": 2180,
+                                            "name": "Collection",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1248,
+                                            "src": "5756:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_type$_t_contract$_Collection_$1248_$",
+                                                "typeString": "type(contract Collection)"
+                                            }
+                                        },
+                                        "id": 2182,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "typeConversion",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "5756:23:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                            "typeString": "contract Collection"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "5728:51:5"
+                                },
+                                {
+                                    "assignments": [
+                                        2185
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 2185,
+                                            "mutability": "mutable",
+                                            "name": "collectionType",
+                                            "nameLocation": "5791:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2267,
+                                            "src": "5783:22:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "typeName": {
+                                                "id": 2184,
+                                                "name": "bytes32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5783:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 2194,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [],
+                                                        "expression": {
+                                                            "argumentTypes": [],
+                                                            "expression": {
+                                                                "id": 2189,
+                                                                "name": "commonContract",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2179,
+                                                                "src": "5824:14:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                                    "typeString": "contract Collection"
+                                                                }
+                                                            },
+                                                            "id": 2190,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "5839:20:5",
+                                                            "memberName": "uniqueCollectionType",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1219,
+                                                            "src": "5824:35:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
+                                                                "typeString": "function () view external returns (string memory)"
+                                                            }
+                                                        },
+                                                        "id": 2191,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5824:37:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    ],
+                                                    "id": 2188,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "5818:5:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                        "typeString": "type(bytes storage pointer)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 2187,
+                                                        "name": "bytes",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "5818:5:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 2192,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "5818:44:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            ],
+                                            "id": 2186,
+                                            "name": "keccak256",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 4294967288,
+                                            "src": "5808:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                                "typeString": "function (bytes memory) pure returns (bytes32)"
+                                            }
+                                        },
+                                        "id": 2193,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "5808:55:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "5783:80:5"
+                                },
+                                {
+                                    "assignments": [
+                                        2196
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 2196,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "5875:7:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2267,
+                                            "src": "5867:15:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 2195,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5867:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 2197,
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "5867:15:5"
+                                },
+                                {
+                                    "condition": {
+                                        "commonType": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        },
+                                        "id": 2200,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "lValueRequested": false,
+                                        "leftExpression": {
+                                            "id": 2198,
+                                            "name": "collectionType",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 2185,
+                                            "src": "5891:14:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "nodeType": "BinaryOperation",
+                                        "operator": "==",
+                                        "rightExpression": {
+                                            "id": 2199,
+                                            "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1770,
+                                            "src": "5909:26:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "src": "5891:44:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bool",
+                                            "typeString": "bool"
+                                        }
+                                    },
+                                    "falseBody": {
+                                        "condition": {
+                                            "commonType": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "id": 2204,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": false,
+                                            "lValueRequested": false,
+                                            "leftExpression": {
+                                                "id": 2202,
+                                                "name": "collectionType",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 2185,
+                                                "src": "5949:14:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "nodeType": "BinaryOperation",
+                                            "operator": "==",
+                                            "rightExpression": {
+                                                "id": 2203,
+                                                "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1778,
+                                                "src": "5967:27:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "src": "5949:45:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            }
+                                        },
+                                        "falseBody": {
+                                            "id": 2254,
+                                            "nodeType": "Block",
+                                            "src": "6359:69:5",
+                                            "statements": [
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c792077697468204e4654206f7220524654",
+                                                                "id": 2251,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "string",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "6371:51:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                },
+                                                                "value": "Wrong collection type. Works only with NFT or RFT"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                }
+                                                            ],
+                                                            "id": 2250,
+                                                            "name": "revert",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [
+                                                                4294967277,
+                                                                4294967277
+                                                            ],
+                                                            "referencedDeclaration": 4294967277,
+                                                            "src": "6364:6:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+                                                                "typeString": "function (string memory) pure"
+                                                            }
+                                                        },
+                                                        "id": 2252,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "6364:59:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 2253,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "6364:59:5"
+                                                }
+                                            ]
+                                        },
+                                        "id": 2255,
+                                        "nodeType": "IfStatement",
+                                        "src": "5945:483:5",
+                                        "trueBody": {
+                                            "id": 2249,
+                                            "nodeType": "Block",
+                                            "src": "5996:357:5",
+                                            "statements": [
+                                                {
+                                                    "assignments": [
+                                                        2207
+                                                    ],
+                                                    "declarations": [
+                                                        {
+                                                            "constant": false,
+                                                            "id": 2207,
+                                                            "mutability": "mutable",
+                                                            "name": "nftCollection",
+                                                            "nameLocation": "6011:13:5",
+                                                            "nodeType": "VariableDeclaration",
+                                                            "scope": 2249,
+                                                            "src": "6001:23:5",
+                                                            "stateVariable": false,
+                                                            "storageLocation": "default",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                "typeString": "contract UniqueNFT"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 2206,
+                                                                "nodeType": "UserDefinedTypeName",
+                                                                "pathNode": {
+                                                                    "id": 2205,
+                                                                    "name": "UniqueNFT",
+                                                                    "nameLocations": [
+                                                                        "6001:9:5"
+                                                                    ],
+                                                                    "nodeType": "IdentifierPath",
+                                                                    "referencedDeclaration": 930,
+                                                                    "src": "6001:9:5"
+                                                                },
+                                                                "referencedDeclaration": 930,
+                                                                "src": "6001:9:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "visibility": "internal"
+                                                        }
+                                                    ],
+                                                    "id": 2211,
+                                                    "initialValue": {
+                                                        "arguments": [
+                                                            {
+                                                                "id": 2209,
+                                                                "name": "_collection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2153,
+                                                                "src": "6037:11:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            ],
+                                                            "id": 2208,
+                                                            "name": "UniqueNFT",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 930,
+                                                            "src": "6027:9:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_contract$_UniqueNFT_$930_$",
+                                                                "typeString": "type(contract UniqueNFT)"
+                                                            }
+                                                        },
+                                                        "id": 2210,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "6027:22:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                            "typeString": "contract UniqueNFT"
+                                                        }
+                                                    },
+                                                    "nodeType": "VariableDeclarationStatement",
+                                                    "src": "6001:48:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "id": 2220,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftHandSide": {
+                                                            "id": 2212,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 2196,
+                                                            "src": "6099:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "Assignment",
+                                                        "operator": "=",
+                                                        "rightHandSide": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 2217,
+                                                                            "name": "this",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 4294967268,
+                                                                            "src": "6136:4:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        ],
+                                                                        "id": 2216,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "6128:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 2215,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "6128:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 2218,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "6128:13:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "id": 2213,
+                                                                    "name": "nftCollection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 2207,
+                                                                    "src": "6109:13:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                        "typeString": "contract UniqueNFT"
+                                                                    }
+                                                                },
+                                                                "id": 2214,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "6123:4:5",
+                                                                "memberName": "mint",
+                                                                "nodeType": "MemberAccess",
+                                                                "referencedDeclaration": 671,
+                                                                "src": "6109:18:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                    "typeString": "function (address) external returns (uint256)"
+                                                                }
+                                                            },
+                                                            "id": 2219,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "functionCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "6109:33:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "src": "6099:43:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "id": 2221,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "6099:43:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "id": 2225,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2196,
+                                                                "src": "6176:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            {
+                                                                "id": 2226,
+                                                                "name": "_properties",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2159,
+                                                                "src": "6185:11:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                                                    "typeString": "struct Tuple21 calldata[] calldata"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                                                    "typeString": "struct Tuple21 calldata[] calldata"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 2222,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2207,
+                                                                "src": "6148:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 2224,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "6162:13:5",
+                                                            "memberName": "setProperties",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 338,
+                                                            "src": "6148:27:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_array$_t_struct$_Tuple21_$620_memory_ptr_$dyn_memory_ptr_$returns$__$",
+                                                                "typeString": "function (uint256,struct Tuple21 memory[] memory) external"
+                                                            }
+                                                        },
+                                                        "id": 2227,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "6148:49:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 2228,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "6148:49:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "id": 2235,
+                                                                                "name": "this",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 4294967268,
+                                                                                "src": "6266:4:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2234,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "6258:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 2233,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "6258:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 2236,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "6258:13:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "hexValue": "30",
+                                                                        "id": 2237,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "number",
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "Literal",
+                                                                        "src": "6273:1:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        },
+                                                                        "value": "0"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2232,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 610,
+                                                                    "src": "6240:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                        "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 2238,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "6240:35:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "hexValue": "30",
+                                                                                "id": 2242,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "number",
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "Literal",
+                                                                                "src": "6307:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                },
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2241,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "6299:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 2240,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "6299:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 2243,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "6299:10:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 2244,
+                                                                        "name": "_substrateReceiver",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2155,
+                                                                        "src": "6311:18:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2239,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 610,
+                                                                    "src": "6281:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                        "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 2245,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "6281:49:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "id": 2246,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2196,
+                                                                "src": "6336:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                    "typeString": "struct EthCrossAccount memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 2229,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2207,
+                                                                "src": "6203:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 2231,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "6217:17:5",
+                                                            "memberName": "transferFromCross",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 734,
+                                                            "src": "6203:31:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_uint256_$returns$__$",
+                                                                "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                            }
+                                                        },
+                                                        "id": 2247,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "6203:145:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 2248,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "6203:145:5"
+                                                }
+                                            ]
+                                        }
+                                    },
+                                    "id": 2256,
+                                    "nodeType": "IfStatement",
+                                    "src": "5887:541:5",
+                                    "trueBody": {
+                                        "id": 2201,
+                                        "nodeType": "Block",
+                                        "src": "5937:2:5",
+                                        "statements": []
+                                    }
+                                },
+                                {
+                                    "eventCall": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "hexValue": "30",
+                                                        "id": 2260,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "number",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "6455:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        },
+                                                        "value": "0"
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        }
+                                                    ],
+                                                    "id": 2259,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "6447:7:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                        "typeString": "type(address)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 2258,
+                                                        "name": "address",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "6447:7:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 2261,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "6447:10:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 2262,
+                                                "name": "_substrateReceiver",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 2155,
+                                                "src": "6459:18:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            {
+                                                "id": 2263,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 2153,
+                                                "src": "6479:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 2264,
+                                                "name": "tokenId",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 2196,
+                                                "src": "6492:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            ],
+                                            "id": 2257,
+                                            "name": "MintToSub",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1811,
+                                            "src": "6437:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+                                                "typeString": "function (address,uint256,address,uint256)"
+                                            }
+                                        },
+                                        "id": 2265,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "6437:63:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 2266,
+                                    "nodeType": "EmitStatement",
+                                    "src": "6432:68:5"
+                                }
+                            ]
+                        },
+                        "functionSelector": "3a0dbb1a",
+                        "id": 2268,
+                        "implemented": true,
+                        "kind": "function",
+                        "modifiers": [
+                            {
+                                "arguments": [
+                                    {
+                                        "id": 2162,
+                                        "name": "_collection",
+                                        "nodeType": "Identifier",
+                                        "overloadedDeclarations": [],
+                                        "referencedDeclaration": 2153,
+                                        "src": "5606:11:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    }
+                                ],
+                                "id": 2163,
+                                "kind": "modifierInvocation",
+                                "modifierName": {
+                                    "id": 2161,
+                                    "name": "checkRestrictions",
+                                    "nameLocations": [
+                                        "5588:17:5"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1800,
+                                    "src": "5588:17:5"
+                                },
+                                "nodeType": "ModifierInvocation",
+                                "src": "5588:30:5"
+                            }
+                        ],
+                        "name": "mintToSubstrateBulkProperty",
+                        "nameLocation": "5457:27:5",
+                        "nodeType": "FunctionDefinition",
+                        "parameters": {
+                            "id": 2160,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 2153,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "5496:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2268,
+                                    "src": "5488:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 2152,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "5488:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 2155,
+                                    "mutability": "mutable",
+                                    "name": "_substrateReceiver",
+                                    "nameLocation": "5519:18:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2268,
+                                    "src": "5511:26:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 2154,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "5511:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 2159,
+                                    "mutability": "mutable",
+                                    "name": "_properties",
+                                    "nameLocation": "5564:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2268,
+                                    "src": "5541:34:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "calldata",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                        "typeString": "struct Tuple21[]"
+                                    },
+                                    "typeName": {
+                                        "baseType": {
+                                            "id": 2157,
+                                            "nodeType": "UserDefinedTypeName",
+                                            "pathNode": {
+                                                "id": 2156,
+                                                "name": "NftProperty",
+                                                "nameLocations": [
+                                                    "5541:11:5"
+                                                ],
+                                                "nodeType": "IdentifierPath",
+                                                "referencedDeclaration": 620,
+                                                "src": "5541:11:5"
+                                            },
+                                            "referencedDeclaration": 620,
+                                            "src": "5541:11:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_Tuple21_$620_storage_ptr",
+                                                "typeString": "struct Tuple21"
+                                            }
+                                        },
+                                        "id": 2158,
+                                        "nodeType": "ArrayTypeName",
+                                        "src": "5541:13:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_storage_$dyn_storage_ptr",
+                                            "typeString": "struct Tuple21[]"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "5484:94:5"
+                        },
+                        "returnParameters": {
+                            "id": 2164,
+                            "nodeType": "ParameterList",
+                            "parameters": [],
+                            "src": "5619:0:5"
+                        },
+                        "scope": 2269,
+                        "src": "5448:1056:5",
+                        "stateMutability": "nonpayable",
+                        "virtual": false,
+                        "visibility": "external"
+                    }
+                ],
+                "scope": 2270,
+                "src": "673:5833:5",
+                "usedErrors": []
+            }
+        ],
+        "src": "44:6463:5"
+    },
+    "functionHashes": {
+        "mintToSubstrate(address,uint256)": "7a8d9786",
+        "mintToSubstrateBulkProperty(address,uint256,(string,bytes)[])": "3a0dbb1a",
+        "mintToSubstrateWithProperty(address,uint256,(string,bytes)[])": "440dff9d"
+    },
+    "gasEstimates": {
+        "creation": {
+            "codeDepositCost": "912800",
+            "executionCost": "948",
+            "totalCost": "913748"
+        },
+        "external": {
+            "mintToSubstrate(address,uint256)": "infinite",
+            "mintToSubstrateBulkProperty(address,uint256,(string,bytes)[])": "infinite",
+            "mintToSubstrateWithProperty(address,uint256,(string,bytes)[])": "infinite"
+        }
+    }
+}
\ No newline at end of file
addedbin/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper-solc-output.jsondiffbeforeafterboth
--- /dev/null
+++ b/bin/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper-solc-output.json
@@ -0,0 +1,47295 @@
+{
+    "contracts": {
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol": {
+            "CollectionHelpers": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "collectionId",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "CollectionCreated",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "collectionId",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "CollectionDestroyed",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionCreationFee",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "name",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "uint8",
+                                "name": "decimals",
+                                "type": "uint8"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "description",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "tokenPrefix",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "createFTCollection",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "payable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "name",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "description",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "tokenPrefix",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "createNFTCollection",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "payable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "name",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "description",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "tokenPrefix",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "createRFTCollection",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "payable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "collectionAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "destroyCollection",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "collectionAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isCollectionExist",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "collection",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "baseUri",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "makeCollectionERC721MetadataCompatible",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x7dea03b1",
+                    "kind": "dev",
+                    "methods": {
+                        "collectionCreationFee()": {
+                            "details": "EVM selector for this function is: 0xd23a7ab1,  or in textual repr: collectionCreationFee()"
+                        },
+                        "createFTCollection(string,uint8,string,string)": {
+                            "details": "EVM selector for this function is: 0x7335b79f,  or in textual repr: createFTCollection(string,uint8,string,string)"
+                        },
+                        "createNFTCollection(string,string,string)": {
+                            "details": "EVM selector for this function is: 0x844af658,  or in textual repr: createNFTCollection(string,string,string)",
+                            "params": {
+                                "description": "Informative description of the collection",
+                                "name": "Name of the collection",
+                                "tokenPrefix": "Token prefix to represent the collection tokens in UI and user applications"
+                            },
+                            "returns": {
+                                "_0": "address Address of the newly created collection"
+                            }
+                        },
+                        "createRFTCollection(string,string,string)": {
+                            "details": "EVM selector for this function is: 0xab173450,  or in textual repr: createRFTCollection(string,string,string)"
+                        },
+                        "destroyCollection(address)": {
+                            "details": "EVM selector for this function is: 0x564e321f,  or in textual repr: destroyCollection(address)"
+                        },
+                        "isCollectionExist(address)": {
+                            "details": "EVM selector for this function is: 0xc3de1494,  or in textual repr: isCollectionExist(address)",
+                            "params": {
+                                "collectionAddress": "Address of the collection in question"
+                            },
+                            "returns": {
+                                "_0": "bool Does the collection exist?"
+                            }
+                        },
+                        "makeCollectionERC721MetadataCompatible(address,string)": {
+                            "details": "EVM selector for this function is: 0x85624258,  or in textual repr: makeCollectionERC721MetadataCompatible(address,string)"
+                        }
+                    },
+                    "title": "Contract, which allows users to operate with collections",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "collectionCreationFee()": "d23a7ab1",
+                        "createFTCollection(string,uint8,string,string)": "7335b79f",
+                        "createNFTCollection(string,string,string)": "844af658",
+                        "createRFTCollection(string,string,string)": "ab173450",
+                        "destroyCollection(address)": "564e321f",
+                        "isCollectionExist(address)": "c3de1494",
+                        "makeCollectionERC721MetadataCompatible(address,string)": "85624258",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collectionId\",\"type\":\"address\"}],\"name\":\"CollectionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collectionId\",\"type\":\"address\"}],\"name\":\"CollectionDestroyed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"collectionCreationFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenPrefix\",\"type\":\"string\"}],\"name\":\"createFTCollection\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenPrefix\",\"type\":\"string\"}],\"name\":\"createNFTCollection\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenPrefix\",\"type\":\"string\"}],\"name\":\"createRFTCollection\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collectionAddress\",\"type\":\"address\"}],\"name\":\"destroyCollection\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collectionAddress\",\"type\":\"address\"}],\"name\":\"isCollectionExist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collection\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseUri\",\"type\":\"string\"}],\"name\":\"makeCollectionERC721MetadataCompatible\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x7dea03b1\",\"kind\":\"dev\",\"methods\":{\"collectionCreationFee()\":{\"details\":\"EVM selector for this function is: 0xd23a7ab1,  or in textual repr: collectionCreationFee()\"},\"createFTCollection(string,uint8,string,string)\":{\"details\":\"EVM selector for this function is: 0x7335b79f,  or in textual repr: createFTCollection(string,uint8,string,string)\"},\"createNFTCollection(string,string,string)\":{\"details\":\"EVM selector for this function is: 0x844af658,  or in textual repr: createNFTCollection(string,string,string)\",\"params\":{\"description\":\"Informative description of the collection\",\"name\":\"Name of the collection\",\"tokenPrefix\":\"Token prefix to represent the collection tokens in UI and user applications\"},\"returns\":{\"_0\":\"address Address of the newly created collection\"}},\"createRFTCollection(string,string,string)\":{\"details\":\"EVM selector for this function is: 0xab173450,  or in textual repr: createRFTCollection(string,string,string)\"},\"destroyCollection(address)\":{\"details\":\"EVM selector for this function is: 0x564e321f,  or in textual repr: destroyCollection(address)\"},\"isCollectionExist(address)\":{\"details\":\"EVM selector for this function is: 0xc3de1494,  or in textual repr: isCollectionExist(address)\",\"params\":{\"collectionAddress\":\"Address of the collection in question\"},\"returns\":{\"_0\":\"bool Does the collection exist?\"}},\"makeCollectionERC721MetadataCompatible(address,string)\":{\"details\":\"EVM selector for this function is: 0x85624258,  or in textual repr: makeCollectionERC721MetadataCompatible(address,string)\"}},\"title\":\"Contract, which allows users to operate with collections\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createNFTCollection(string,string,string)\":{\"notice\":\"Create an NFT collection\"},\"isCollectionExist(address)\":{\"notice\":\"Check if a collection exists\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":\"CollectionHelpers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":{\"keccak256\":\"0x7ded5e99243528ed63a0986417ad670c277ad42d348bf06f407fd06a12cc08a3\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://43a6299b0510c8feb55800153cee0ea845f7b06a4002bb122d99c6cc938f93c2\",\"dweb:/ipfs/QmPcgPtBkeyMe6LkTYcT6xD5WJhw8nLGaCrbEu2kUHGjgu\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "createNFTCollection(string,string,string)": {
+                            "notice": "Create an NFT collection"
+                        },
+                        "isCollectionExist(address)": {
+                            "notice": "Check if a collection exists"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "CollectionHelpersEvents": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "collectionId",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "CollectionCreated",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "collectionId",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "CollectionDestroyed",
+                        "type": "event"
+                    }
+                ],
+                "devdoc": {
+                    "details": "inlined interface",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collectionId\",\"type\":\"address\"}],\"name\":\"CollectionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collectionId\",\"type\":\"address\"}],\"name\":\"CollectionDestroyed\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"inlined interface\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":\"CollectionHelpersEvents\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":{\"keccak256\":\"0x7ded5e99243528ed63a0986417ad670c277ad42d348bf06f407fd06a12cc08a3\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://43a6299b0510c8feb55800153cee0ea845f7b06a4002bb122d99c6cc938f93c2\",\"dweb:/ipfs/QmPcgPtBkeyMe6LkTYcT6xD5WJhw8nLGaCrbEu2kUHGjgu\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "Dummy": {
+                "abi": [],
+                "devdoc": {
+                    "details": "common stubs holder",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"common stubs holder\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":\"Dummy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":{\"keccak256\":\"0x7ded5e99243528ed63a0986417ad670c277ad42d348bf06f407fd06a12cc08a3\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://43a6299b0510c8feb55800153cee0ea845f7b06a4002bb122d99c6cc938f93c2\",\"dweb:/ipfs/QmPcgPtBkeyMe6LkTYcT6xD5WJhw8nLGaCrbEu2kUHGjgu\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC165": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":{\"keccak256\":\"0x7ded5e99243528ed63a0986417ad670c277ad42d348bf06f407fd06a12cc08a3\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://43a6299b0510c8feb55800153cee0ea845f7b06a4002bb122d99c6cc938f93c2\",\"dweb:/ipfs/QmPcgPtBkeyMe6LkTYcT6xD5WJhw8nLGaCrbEu2kUHGjgu\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            }
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol": {
+            "ContractHelpers": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "ContractSponsorRemoved",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "ContractSponsorSet",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "ContractSponsorshipConfirmed",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "allowed",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "allowlistEnabled",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "confirmSponsorship",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "contractOwner",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "hasPendingSponsor",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "hasSponsor",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "selfSponsoredEnable",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "setSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "feeLimit",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "setSponsoringFeeLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint8",
+                                "name": "mode",
+                                "type": "uint8"
+                            }
+                        ],
+                        "name": "setSponsoringMode",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint32",
+                                "name": "rateLimit",
+                                "type": "uint32"
+                            }
+                        ],
+                        "name": "setSponsoringRateLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "sponsor",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "field_0",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "field_1",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct Tuple0",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "sponsoringEnabled",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "sponsoringFeeLimit",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "sponsoringRateLimit",
+                        "outputs": [
+                            {
+                                "internalType": "uint32",
+                                "name": "",
+                                "type": "uint32"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "isAllowed",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "toggleAllowed",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "enabled",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "toggleAllowlist",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x30afad04",
+                    "kind": "dev",
+                    "methods": {
+                        "allowed(address,address)": {
+                            "details": "Contract owner always implicitly includedEVM selector for this function is: 0x5c658165,  or in textual repr: allowed(address,address)",
+                            "params": {
+                                "contractAddress": "Contract to check allowlist of",
+                                "user": "User to check"
+                            },
+                            "returns": {
+                                "_0": "bool Is specified users exists in contract allowlist"
+                            }
+                        },
+                        "allowlistEnabled(address)": {
+                            "details": "Allowlist always can have users, and it is used for two purposes:  in case of allowlist sponsoring mode, users will be sponsored if they exist in allowlist  in case of allowlist access enabled, only users from allowlist may call this contractEVM selector for this function is: 0xc772ef6c,  or in textual repr: allowlistEnabled(address)",
+                            "params": {
+                                "contractAddress": "Contract to get allowlist access of"
+                            },
+                            "returns": {
+                                "_0": "bool Is specified contract has allowlist access enabled"
+                            }
+                        },
+                        "confirmSponsorship(address)": {
+                            "details": "Caller must be same that set via [`setSponsor`].EVM selector for this function is: 0xabc00001,  or in textual repr: confirmSponsorship(address)",
+                            "params": {
+                                "contractAddress": "Сontract for which need to confirm sponsorship."
+                            }
+                        },
+                        "contractOwner(address)": {
+                            "details": "May return zero address in case if contract is deployed  using uniquenetwork evm-migration pallet, or using other terms not  intended by pallet-evmReturns zero address if contract does not existsEVM selector for this function is: 0x5152b14c,  or in textual repr: contractOwner(address)",
+                            "params": {
+                                "contractAddress": "Contract to get owner of"
+                            },
+                            "returns": {
+                                "_0": "address Owner of contract"
+                            }
+                        },
+                        "hasPendingSponsor(address)": {
+                            "details": "EVM selector for this function is: 0x39b9b242,  or in textual repr: hasPendingSponsor(address)",
+                            "params": {
+                                "contractAddress": "The contract for which the presence of a pending sponsor is checked."
+                            },
+                            "returns": {
+                                "_0": "**true** if contract has pending sponsor."
+                            }
+                        },
+                        "hasSponsor(address)": {
+                            "details": "EVM selector for this function is: 0x97418603,  or in textual repr: hasSponsor(address)",
+                            "params": {
+                                "contractAddress": "The contract for which the presence of a confirmed sponsor is checked."
+                            },
+                            "returns": {
+                                "_0": "**true** if contract has confirmed sponsor."
+                            }
+                        },
+                        "removeSponsor(address)": {
+                            "details": "EVM selector for this function is: 0xef784250,  or in textual repr: removeSponsor(address)",
+                            "params": {
+                                "contractAddress": "Contract for which a sponsorship is being removed."
+                            }
+                        },
+                        "selfSponsoredEnable(address)": {
+                            "details": "EVM selector for this function is: 0x89f7d9ae,  or in textual repr: selfSponsoredEnable(address)",
+                            "params": {
+                                "contractAddress": "Contract for which a self sponsoring is being enabled."
+                            }
+                        },
+                        "setSponsor(address,address)": {
+                            "details": "EVM selector for this function is: 0xf01fba93,  or in textual repr: setSponsor(address,address)",
+                            "params": {
+                                "contractAddress": "Contract for which a sponsor is being established.",
+                                "sponsor": "User address who set as pending sponsor."
+                            }
+                        },
+                        "setSponsoringFeeLimit(address,uint256)": {
+                            "details": "Sponsoring fee limit - is maximum fee that could be spent by  single transactionOnly contract owner can change this settingEVM selector for this function is: 0x03aed665,  or in textual repr: setSponsoringFeeLimit(address,uint256)",
+                            "params": {
+                                "contractAddress": "Contract to change sponsoring fee limit of",
+                                "feeLimit": "Fee limit"
+                            }
+                        },
+                        "setSponsoringMode(address,uint8)": {
+                            "details": "EVM selector for this function is: 0xfde8a560,  or in textual repr: setSponsoringMode(address,uint8)"
+                        },
+                        "setSponsoringRateLimit(address,uint32)": {
+                            "details": "Sponsoring rate limit - is a minimum amount of blocks that should  pass between two sponsored transactionsOnly contract owner can change this settingEVM selector for this function is: 0x77b6c908,  or in textual repr: setSponsoringRateLimit(address,uint32)",
+                            "params": {
+                                "contractAddress": "Contract to change sponsoring rate limit of",
+                                "rateLimit": "Target rate limit"
+                            }
+                        },
+                        "sponsor(address)": {
+                            "details": "EVM selector for this function is: 0x766c4f37,  or in textual repr: sponsor(address)",
+                            "params": {
+                                "contractAddress": "The contract for which a sponsor is requested."
+                            },
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \"Contract has no sponsor\" throw."
+                            }
+                        },
+                        "sponsoringEnabled(address)": {
+                            "details": "EVM selector for this function is: 0x6027dc61,  or in textual repr: sponsoringEnabled(address)"
+                        },
+                        "sponsoringFeeLimit(address)": {
+                            "details": "EVM selector for this function is: 0x75b73606,  or in textual repr: sponsoringFeeLimit(address)",
+                            "params": {
+                                "contractAddress": "Contract to get sponsoring fee limit of"
+                            },
+                            "returns": {
+                                "_0": "uint256 Maximum amount of fee that could be spent by single  transaction"
+                            }
+                        },
+                        "sponsoringRateLimit(address)": {
+                            "details": "EVM selector for this function is: 0xf29694d8,  or in textual repr: sponsoringRateLimit(address)",
+                            "params": {
+                                "contractAddress": "Contract to get sponsoring rate limit of"
+                            },
+                            "returns": {
+                                "_0": "uint32 Amount of blocks between two sponsored transactions"
+                            }
+                        },
+                        "toggleAllowed(address,address,bool)": {
+                            "details": "Only contract owner can change this settingEVM selector for this function is: 0x4706cc1c,  or in textual repr: toggleAllowed(address,address,bool)",
+                            "params": {
+                                "contractAddress": "Contract to change allowlist of",
+                                "isAllowed": "`true` if user should be allowed to be sponsored  or call this contract, `false` otherwise",
+                                "user": "Which user presence should be toggled"
+                            }
+                        },
+                        "toggleAllowlist(address,bool)": {
+                            "details": "EVM selector for this function is: 0x36de20f5,  or in textual repr: toggleAllowlist(address,bool)",
+                            "params": {
+                                "contractAddress": "Contract to change allowlist access of",
+                                "enabled": "Should allowlist access to be enabled?"
+                            }
+                        }
+                    },
+                    "title": "Magic contract, which allows users to reconfigure other contracts",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "allowed(address,address)": "5c658165",
+                        "allowlistEnabled(address)": "c772ef6c",
+                        "confirmSponsorship(address)": "abc00001",
+                        "contractOwner(address)": "5152b14c",
+                        "hasPendingSponsor(address)": "39b9b242",
+                        "hasSponsor(address)": "97418603",
+                        "removeSponsor(address)": "ef784250",
+                        "selfSponsoredEnable(address)": "89f7d9ae",
+                        "setSponsor(address,address)": "f01fba93",
+                        "setSponsoringFeeLimit(address,uint256)": "03aed665",
+                        "setSponsoringMode(address,uint8)": "fde8a560",
+                        "setSponsoringRateLimit(address,uint32)": "77b6c908",
+                        "sponsor(address)": "766c4f37",
+                        "sponsoringEnabled(address)": "6027dc61",
+                        "sponsoringFeeLimit(address)": "75b73606",
+                        "sponsoringRateLimit(address)": "f29694d8",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "toggleAllowed(address,address,bool)": "4706cc1c",
+                        "toggleAllowlist(address,bool)": "36de20f5"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"ContractSponsorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"ContractSponsorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"ContractSponsorshipConfirmed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"allowlistEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"confirmSponsorship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"contractOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"hasPendingSponsor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"hasSponsor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"removeSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"selfSponsoredEnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"setSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeLimit\",\"type\":\"uint256\"}],\"name\":\"setSponsoringFeeLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setSponsoringMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"rateLimit\",\"type\":\"uint32\"}],\"name\":\"setSponsoringRateLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"sponsor\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"field_0\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"field_1\",\"type\":\"uint256\"}],\"internalType\":\"struct Tuple0\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"sponsoringEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"sponsoringFeeLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"sponsoringRateLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"name\":\"toggleAllowed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"toggleAllowlist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x30afad04\",\"kind\":\"dev\",\"methods\":{\"allowed(address,address)\":{\"details\":\"Contract owner always implicitly includedEVM selector for this function is: 0x5c658165,  or in textual repr: allowed(address,address)\",\"params\":{\"contractAddress\":\"Contract to check allowlist of\",\"user\":\"User to check\"},\"returns\":{\"_0\":\"bool Is specified users exists in contract allowlist\"}},\"allowlistEnabled(address)\":{\"details\":\"Allowlist always can have users, and it is used for two purposes:  in case of allowlist sponsoring mode, users will be sponsored if they exist in allowlist  in case of allowlist access enabled, only users from allowlist may call this contractEVM selector for this function is: 0xc772ef6c,  or in textual repr: allowlistEnabled(address)\",\"params\":{\"contractAddress\":\"Contract to get allowlist access of\"},\"returns\":{\"_0\":\"bool Is specified contract has allowlist access enabled\"}},\"confirmSponsorship(address)\":{\"details\":\"Caller must be same that set via [`setSponsor`].EVM selector for this function is: 0xabc00001,  or in textual repr: confirmSponsorship(address)\",\"params\":{\"contractAddress\":\"\\u0421ontract for which need to confirm sponsorship.\"}},\"contractOwner(address)\":{\"details\":\"May return zero address in case if contract is deployed  using uniquenetwork evm-migration pallet, or using other terms not  intended by pallet-evmReturns zero address if contract does not existsEVM selector for this function is: 0x5152b14c,  or in textual repr: contractOwner(address)\",\"params\":{\"contractAddress\":\"Contract to get owner of\"},\"returns\":{\"_0\":\"address Owner of contract\"}},\"hasPendingSponsor(address)\":{\"details\":\"EVM selector for this function is: 0x39b9b242,  or in textual repr: hasPendingSponsor(address)\",\"params\":{\"contractAddress\":\"The contract for which the presence of a pending sponsor is checked.\"},\"returns\":{\"_0\":\"**true** if contract has pending sponsor.\"}},\"hasSponsor(address)\":{\"details\":\"EVM selector for this function is: 0x97418603,  or in textual repr: hasSponsor(address)\",\"params\":{\"contractAddress\":\"The contract for which the presence of a confirmed sponsor is checked.\"},\"returns\":{\"_0\":\"**true** if contract has confirmed sponsor.\"}},\"removeSponsor(address)\":{\"details\":\"EVM selector for this function is: 0xef784250,  or in textual repr: removeSponsor(address)\",\"params\":{\"contractAddress\":\"Contract for which a sponsorship is being removed.\"}},\"selfSponsoredEnable(address)\":{\"details\":\"EVM selector for this function is: 0x89f7d9ae,  or in textual repr: selfSponsoredEnable(address)\",\"params\":{\"contractAddress\":\"Contract for which a self sponsoring is being enabled.\"}},\"setSponsor(address,address)\":{\"details\":\"EVM selector for this function is: 0xf01fba93,  or in textual repr: setSponsor(address,address)\",\"params\":{\"contractAddress\":\"Contract for which a sponsor is being established.\",\"sponsor\":\"User address who set as pending sponsor.\"}},\"setSponsoringFeeLimit(address,uint256)\":{\"details\":\"Sponsoring fee limit - is maximum fee that could be spent by  single transactionOnly contract owner can change this settingEVM selector for this function is: 0x03aed665,  or in textual repr: setSponsoringFeeLimit(address,uint256)\",\"params\":{\"contractAddress\":\"Contract to change sponsoring fee limit of\",\"feeLimit\":\"Fee limit\"}},\"setSponsoringMode(address,uint8)\":{\"details\":\"EVM selector for this function is: 0xfde8a560,  or in textual repr: setSponsoringMode(address,uint8)\"},\"setSponsoringRateLimit(address,uint32)\":{\"details\":\"Sponsoring rate limit - is a minimum amount of blocks that should  pass between two sponsored transactionsOnly contract owner can change this settingEVM selector for this function is: 0x77b6c908,  or in textual repr: setSponsoringRateLimit(address,uint32)\",\"params\":{\"contractAddress\":\"Contract to change sponsoring rate limit of\",\"rateLimit\":\"Target rate limit\"}},\"sponsor(address)\":{\"details\":\"EVM selector for this function is: 0x766c4f37,  or in textual repr: sponsor(address)\",\"params\":{\"contractAddress\":\"The contract for which a sponsor is requested.\"},\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \\\"Contract has no sponsor\\\" throw.\"}},\"sponsoringEnabled(address)\":{\"details\":\"EVM selector for this function is: 0x6027dc61,  or in textual repr: sponsoringEnabled(address)\"},\"sponsoringFeeLimit(address)\":{\"details\":\"EVM selector for this function is: 0x75b73606,  or in textual repr: sponsoringFeeLimit(address)\",\"params\":{\"contractAddress\":\"Contract to get sponsoring fee limit of\"},\"returns\":{\"_0\":\"uint256 Maximum amount of fee that could be spent by single  transaction\"}},\"sponsoringRateLimit(address)\":{\"details\":\"EVM selector for this function is: 0xf29694d8,  or in textual repr: sponsoringRateLimit(address)\",\"params\":{\"contractAddress\":\"Contract to get sponsoring rate limit of\"},\"returns\":{\"_0\":\"uint32 Amount of blocks between two sponsored transactions\"}},\"toggleAllowed(address,address,bool)\":{\"details\":\"Only contract owner can change this settingEVM selector for this function is: 0x4706cc1c,  or in textual repr: toggleAllowed(address,address,bool)\",\"params\":{\"contractAddress\":\"Contract to change allowlist of\",\"isAllowed\":\"`true` if user should be allowed to be sponsored  or call this contract, `false` otherwise\",\"user\":\"Which user presence should be toggled\"}},\"toggleAllowlist(address,bool)\":{\"details\":\"EVM selector for this function is: 0x36de20f5,  or in textual repr: toggleAllowlist(address,bool)\",\"params\":{\"contractAddress\":\"Contract to change allowlist access of\",\"enabled\":\"Should allowlist access to be enabled?\"}}},\"title\":\"Magic contract, which allows users to reconfigure other contracts\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed(address,address)\":{\"notice\":\"Is specified user present in contract allow list\"},\"allowlistEnabled(address)\":{\"notice\":\"Is this contract has allowlist access enabled\"},\"confirmSponsorship(address)\":{\"notice\":\"Confirm sponsorship.\"},\"contractOwner(address)\":{\"notice\":\"Get user, which deployed specified contract\"},\"hasPendingSponsor(address)\":{\"notice\":\"Check tat contract has pending sponsor.\"},\"hasSponsor(address)\":{\"notice\":\"Check tat contract has confirmed sponsor.\"},\"removeSponsor(address)\":{\"notice\":\"Remove sponsor.\"},\"selfSponsoredEnable(address)\":{\"notice\":\"Set contract as self sponsored.\"},\"setSponsor(address,address)\":{\"notice\":\"Set sponsor.\"},\"setSponsoringFeeLimit(address,uint256)\":{\"notice\":\"Set contract sponsoring fee limit\"},\"setSponsoringRateLimit(address,uint32)\":{\"notice\":\"Set contract sponsoring rate limit\"},\"sponsor(address)\":{\"notice\":\"Get current sponsor.\"},\"sponsoringFeeLimit(address)\":{\"notice\":\"Get current contract sponsoring fee limit\"},\"sponsoringRateLimit(address)\":{\"notice\":\"Get current contract sponsoring rate limit\"},\"toggleAllowed(address,address,bool)\":{\"notice\":\"Toggle user presence in contract allowlist\"},\"toggleAllowlist(address,bool)\":{\"notice\":\"Toggle contract allowlist access\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":\"ContractHelpers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":{\"keccak256\":\"0xbf6cbc8921b46aceef74fcb0218f8af41a5c1c8c09278cd29b055d39af4ba06c\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://cb309a7e806ab15bf7db1469c70ce547e358783a8be709d48632062600bbdf58\",\"dweb:/ipfs/QmcUViezUamzuLB9Pp5AjwNbSNLdVqnrSbvrRMkHoEb5DY\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "allowed(address,address)": {
+                            "notice": "Is specified user present in contract allow list"
+                        },
+                        "allowlistEnabled(address)": {
+                            "notice": "Is this contract has allowlist access enabled"
+                        },
+                        "confirmSponsorship(address)": {
+                            "notice": "Confirm sponsorship."
+                        },
+                        "contractOwner(address)": {
+                            "notice": "Get user, which deployed specified contract"
+                        },
+                        "hasPendingSponsor(address)": {
+                            "notice": "Check tat contract has pending sponsor."
+                        },
+                        "hasSponsor(address)": {
+                            "notice": "Check tat contract has confirmed sponsor."
+                        },
+                        "removeSponsor(address)": {
+                            "notice": "Remove sponsor."
+                        },
+                        "selfSponsoredEnable(address)": {
+                            "notice": "Set contract as self sponsored."
+                        },
+                        "setSponsor(address,address)": {
+                            "notice": "Set sponsor."
+                        },
+                        "setSponsoringFeeLimit(address,uint256)": {
+                            "notice": "Set contract sponsoring fee limit"
+                        },
+                        "setSponsoringRateLimit(address,uint32)": {
+                            "notice": "Set contract sponsoring rate limit"
+                        },
+                        "sponsor(address)": {
+                            "notice": "Get current sponsor."
+                        },
+                        "sponsoringFeeLimit(address)": {
+                            "notice": "Get current contract sponsoring fee limit"
+                        },
+                        "sponsoringRateLimit(address)": {
+                            "notice": "Get current contract sponsoring rate limit"
+                        },
+                        "toggleAllowed(address,address,bool)": {
+                            "notice": "Toggle user presence in contract allowlist"
+                        },
+                        "toggleAllowlist(address,bool)": {
+                            "notice": "Toggle contract allowlist access"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ContractHelpersEvents": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "ContractSponsorRemoved",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "ContractSponsorSet",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "contractAddress",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "ContractSponsorshipConfirmed",
+                        "type": "event"
+                    }
+                ],
+                "devdoc": {
+                    "details": "inlined interface",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"ContractSponsorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"ContractSponsorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"ContractSponsorshipConfirmed\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"inlined interface\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":\"ContractHelpersEvents\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":{\"keccak256\":\"0xbf6cbc8921b46aceef74fcb0218f8af41a5c1c8c09278cd29b055d39af4ba06c\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://cb309a7e806ab15bf7db1469c70ce547e358783a8be709d48632062600bbdf58\",\"dweb:/ipfs/QmcUViezUamzuLB9Pp5AjwNbSNLdVqnrSbvrRMkHoEb5DY\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "Dummy": {
+                "abi": [],
+                "devdoc": {
+                    "details": "common stubs holder",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"common stubs holder\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":\"Dummy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":{\"keccak256\":\"0xbf6cbc8921b46aceef74fcb0218f8af41a5c1c8c09278cd29b055d39af4ba06c\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://cb309a7e806ab15bf7db1469c70ce547e358783a8be709d48632062600bbdf58\",\"dweb:/ipfs/QmcUViezUamzuLB9Pp5AjwNbSNLdVqnrSbvrRMkHoEb5DY\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC165": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":{\"keccak256\":\"0xbf6cbc8921b46aceef74fcb0218f8af41a5c1c8c09278cd29b055d39af4ba06c\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://cb309a7e806ab15bf7db1469c70ce547e358783a8be709d48632062600bbdf58\",\"dweb:/ipfs/QmcUViezUamzuLB9Pp5AjwNbSNLdVqnrSbvrRMkHoEb5DY\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            }
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol": {
+            "Collection": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "newAdmin",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "addCollectionAdmin",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "newAdmin",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "addCollectionAdminCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "addToCollectionAllowList",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "addToCollectionAllowListCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "allowed",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "newOwner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "changeCollectionOwner",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionAdmins",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount[]",
+                                "name": "",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionOwner",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string[]",
+                                "name": "keys",
+                                "type": "string[]"
+                            }
+                        ],
+                        "name": "collectionProperties",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple21[]",
+                                "name": "",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "collectionProperty",
+                        "outputs": [
+                            {
+                                "internalType": "bytes",
+                                "name": "",
+                                "type": "bytes"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionSponsor",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "field_0",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "field_1",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct Tuple24",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "confirmCollectionSponsorship",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "contractAddress",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string[]",
+                                "name": "keys",
+                                "type": "string[]"
+                            }
+                        ],
+                        "name": "deleteCollectionProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "deleteCollectionProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "hasCollectionPendingSponsor",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isOwnerOrAdmin",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "isOwnerOrAdminCross",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "admin",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeCollectionAdmin",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "admin",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "removeCollectionAdminCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "removeCollectionSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeFromCollectionAllowList",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "removeFromCollectionAllowListCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint8",
+                                "name": "mode",
+                                "type": "uint8"
+                            }
+                        ],
+                        "name": "setCollectionAccess",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "limit",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "uint32",
+                                "name": "value",
+                                "type": "uint32"
+                            }
+                        ],
+                        "name": "setCollectionLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "limit",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "value",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "mode",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionMintMode",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "enable",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionNesting",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "enable",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "address[]",
+                                "name": "collections",
+                                "type": "address[]"
+                            }
+                        ],
+                        "name": "setCollectionNesting",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple21[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "setCollectionProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "value",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "setCollectionProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "setCollectionSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "sponsor",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "setCollectionSponsorCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "newOwner",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "setOwnerCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "uniqueCollectionType",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0xb3152af3",
+                    "kind": "dev",
+                    "methods": {
+                        "addCollectionAdmin(address)": {
+                            "details": "EVM selector for this function is: 0x92e462c7,  or in textual repr: addCollectionAdmin(address)",
+                            "params": {
+                                "newAdmin": "Address of the added administrator."
+                            }
+                        },
+                        "addCollectionAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x859aa7d6,  or in textual repr: addCollectionAdminCross((address,uint256))",
+                            "params": {
+                                "newAdmin": "Cross account administrator address."
+                            }
+                        },
+                        "addToCollectionAllowList(address)": {
+                            "details": "EVM selector for this function is: 0x67844fe6,  or in textual repr: addToCollectionAllowList(address)",
+                            "params": {
+                                "user": "Address of a trusted user."
+                            }
+                        },
+                        "addToCollectionAllowListCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0xa0184a3a,  or in textual repr: addToCollectionAllowListCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account address."
+                            }
+                        },
+                        "allowed(address)": {
+                            "details": "EVM selector for this function is: 0xd63a8e11,  or in textual repr: allowed(address)",
+                            "params": {
+                                "user": "User address to check."
+                            }
+                        },
+                        "changeCollectionOwner(address)": {
+                            "details": "Owner can be changed only by current ownerEVM selector for this function is: 0x4f53e226,  or in textual repr: changeCollectionOwner(address)",
+                            "params": {
+                                "newOwner": "new owner account"
+                            }
+                        },
+                        "collectionAdmins()": {
+                            "details": "EVM selector for this function is: 0x5813216b,  or in textual repr: collectionAdmins()",
+                            "returns": {
+                                "_0": "Vector of tuples with admins address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa."
+                            }
+                        },
+                        "collectionOwner()": {
+                            "details": "EVM selector for this function is: 0xdf727d3b,  or in textual repr: collectionOwner()",
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa."
+                            }
+                        },
+                        "collectionProperties(string[])": {
+                            "details": "EVM selector for this function is: 0x285fb8e6,  or in textual repr: collectionProperties(string[])",
+                            "params": {
+                                "keys": "Properties keys. Empty keys for all propertyes."
+                            },
+                            "returns": {
+                                "_0": "Vector of properties key/value pairs."
+                            }
+                        },
+                        "collectionProperty(string)": {
+                            "details": "Throws error if key not found.EVM selector for this function is: 0xcf24fd6d,  or in textual repr: collectionProperty(string)",
+                            "params": {
+                                "key": "Property key."
+                            },
+                            "returns": {
+                                "_0": "bytes The property corresponding to the key."
+                            }
+                        },
+                        "collectionSponsor()": {
+                            "details": "EVM selector for this function is: 0x6ec0a9f1,  or in textual repr: collectionSponsor()",
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \"Contract has no sponsor\" throw."
+                            }
+                        },
+                        "confirmCollectionSponsorship()": {
+                            "details": "After setting the sponsor for the collection, it must be confirmed with this function.EVM selector for this function is: 0x3c50e97a,  or in textual repr: confirmCollectionSponsorship()"
+                        },
+                        "contractAddress()": {
+                            "details": "EVM selector for this function is: 0xf6b4dfb4,  or in textual repr: contractAddress()"
+                        },
+                        "deleteCollectionProperties(string[])": {
+                            "details": "EVM selector for this function is: 0xee206ee3,  or in textual repr: deleteCollectionProperties(string[])",
+                            "params": {
+                                "keys": "Properties keys."
+                            }
+                        },
+                        "deleteCollectionProperty(string)": {
+                            "details": "EVM selector for this function is: 0x7b7debce,  or in textual repr: deleteCollectionProperty(string)",
+                            "params": {
+                                "key": "Property key."
+                            }
+                        },
+                        "hasCollectionPendingSponsor()": {
+                            "details": "EVM selector for this function is: 0x058ac185,  or in textual repr: hasCollectionPendingSponsor()"
+                        },
+                        "isOwnerOrAdmin(address)": {
+                            "details": "EVM selector for this function is: 0x9811b0c7,  or in textual repr: isOwnerOrAdmin(address)",
+                            "params": {
+                                "user": "account to verify"
+                            },
+                            "returns": {
+                                "_0": "\"true\" if account is the owner or admin"
+                            }
+                        },
+                        "isOwnerOrAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x3e75a905,  or in textual repr: isOwnerOrAdminCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account to verify"
+                            },
+                            "returns": {
+                                "_0": "\"true\" if account is the owner or admin"
+                            }
+                        },
+                        "removeCollectionAdmin(address)": {
+                            "details": "EVM selector for this function is: 0xfafd7b42,  or in textual repr: removeCollectionAdmin(address)",
+                            "params": {
+                                "admin": "Address of the removed administrator."
+                            }
+                        },
+                        "removeCollectionAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x6c0cd173,  or in textual repr: removeCollectionAdminCross((address,uint256))",
+                            "params": {
+                                "admin": "Cross account administrator address."
+                            }
+                        },
+                        "removeCollectionSponsor()": {
+                            "details": "EVM selector for this function is: 0x6e0326a3,  or in textual repr: removeCollectionSponsor()"
+                        },
+                        "removeFromCollectionAllowList(address)": {
+                            "details": "EVM selector for this function is: 0x85c51acb,  or in textual repr: removeFromCollectionAllowList(address)",
+                            "params": {
+                                "user": "Address of a removed user."
+                            }
+                        },
+                        "removeFromCollectionAllowListCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x09ba452a,  or in textual repr: removeFromCollectionAllowListCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account address."
+                            }
+                        },
+                        "setCollectionAccess(uint8)": {
+                            "details": "EVM selector for this function is: 0x41835d4c,  or in textual repr: setCollectionAccess(uint8)",
+                            "params": {
+                                "mode": "Access mode \t0 for Normal \t1 for AllowList"
+                            }
+                        },
+                        "setCollectionLimit(string,bool)": {
+                            "details": "Throws error if limit not found.EVM selector for this function is: 0x993b7fba,  or in textual repr: setCollectionLimit(string,bool)",
+                            "params": {
+                                "limit": "Name of the limit. Valid names: \t\"ownerCanTransfer\", \t\"ownerCanDestroy\", \t\"transfersEnabled\"",
+                                "value": "Value of the limit."
+                            }
+                        },
+                        "setCollectionLimit(string,uint32)": {
+                            "details": "Throws error if limit not found.EVM selector for this function is: 0x6a3841db,  or in textual repr: setCollectionLimit(string,uint32)",
+                            "params": {
+                                "limit": "Name of the limit. Valid names: \t\"accountTokenOwnershipLimit\", \t\"sponsoredDataSize\", \t\"sponsoredDataRateLimit\", \t\"tokenLimit\", \t\"sponsorTransferTimeout\", \t\"sponsorApproveTimeout\"",
+                                "value": "Value of the limit."
+                            }
+                        },
+                        "setCollectionMintMode(bool)": {
+                            "details": "EVM selector for this function is: 0x00018e84,  or in textual repr: setCollectionMintMode(bool)",
+                            "params": {
+                                "mode": "Enable if \"true\"."
+                            }
+                        },
+                        "setCollectionNesting(bool)": {
+                            "details": "EVM selector for this function is: 0x112d4586,  or in textual repr: setCollectionNesting(bool)",
+                            "params": {
+                                "enable": "If \"true\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'"
+                            }
+                        },
+                        "setCollectionNesting(bool,address[])": {
+                            "details": "EVM selector for this function is: 0x64872396,  or in textual repr: setCollectionNesting(bool,address[])",
+                            "params": {
+                                "collections": "Addresses of collections that will be available for nesting.",
+                                "enable": "If \"true\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'"
+                            }
+                        },
+                        "setCollectionProperties((string,bytes)[])": {
+                            "details": "EVM selector for this function is: 0x50b26b2a,  or in textual repr: setCollectionProperties((string,bytes)[])",
+                            "params": {
+                                "properties": "Vector of properties key/value pair."
+                            }
+                        },
+                        "setCollectionProperty(string,bytes)": {
+                            "details": "EVM selector for this function is: 0x2f073f66,  or in textual repr: setCollectionProperty(string,bytes)",
+                            "params": {
+                                "key": "Property key.",
+                                "value": "Propery value."
+                            }
+                        },
+                        "setCollectionSponsor(address)": {
+                            "details": "In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x7623402e,  or in textual repr: setCollectionSponsor(address)",
+                            "params": {
+                                "sponsor": "Address of the sponsor from whose account funds will be debited for operations with the contract."
+                            }
+                        },
+                        "setCollectionSponsorCross((address,uint256))": {
+                            "details": "In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x84a1d5a8,  or in textual repr: setCollectionSponsorCross((address,uint256))",
+                            "params": {
+                                "sponsor": "Cross account address of the sponsor from whose account funds will be debited for operations with the contract."
+                            }
+                        },
+                        "setOwnerCross((address,uint256))": {
+                            "details": "Owner can be changed only by current ownerEVM selector for this function is: 0xe5c9913f,  or in textual repr: setOwnerCross((address,uint256))",
+                            "params": {
+                                "newOwner": "new owner cross account"
+                            }
+                        },
+                        "uniqueCollectionType()": {
+                            "details": "EVM selector for this function is: 0xd34b55b8,  or in textual repr: uniqueCollectionType()",
+                            "returns": {
+                                "_0": "`Fungible` or `NFT` or `ReFungible`"
+                            }
+                        }
+                    },
+                    "title": "A contract that allows you to work with collections.",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "addCollectionAdmin(address)": "92e462c7",
+                        "addCollectionAdminCross((address,uint256))": "859aa7d6",
+                        "addToCollectionAllowList(address)": "67844fe6",
+                        "addToCollectionAllowListCross((address,uint256))": "a0184a3a",
+                        "allowed(address)": "d63a8e11",
+                        "changeCollectionOwner(address)": "4f53e226",
+                        "collectionAdmins()": "5813216b",
+                        "collectionOwner()": "df727d3b",
+                        "collectionProperties(string[])": "285fb8e6",
+                        "collectionProperty(string)": "cf24fd6d",
+                        "collectionSponsor()": "6ec0a9f1",
+                        "confirmCollectionSponsorship()": "3c50e97a",
+                        "contractAddress()": "f6b4dfb4",
+                        "deleteCollectionProperties(string[])": "ee206ee3",
+                        "deleteCollectionProperty(string)": "7b7debce",
+                        "hasCollectionPendingSponsor()": "058ac185",
+                        "isOwnerOrAdmin(address)": "9811b0c7",
+                        "isOwnerOrAdminCross((address,uint256))": "3e75a905",
+                        "removeCollectionAdmin(address)": "fafd7b42",
+                        "removeCollectionAdminCross((address,uint256))": "6c0cd173",
+                        "removeCollectionSponsor()": "6e0326a3",
+                        "removeFromCollectionAllowList(address)": "85c51acb",
+                        "removeFromCollectionAllowListCross((address,uint256))": "09ba452a",
+                        "setCollectionAccess(uint8)": "41835d4c",
+                        "setCollectionLimit(string,bool)": "993b7fba",
+                        "setCollectionLimit(string,uint32)": "6a3841db",
+                        "setCollectionMintMode(bool)": "00018e84",
+                        "setCollectionNesting(bool)": "112d4586",
+                        "setCollectionNesting(bool,address[])": "64872396",
+                        "setCollectionProperties((string,bytes)[])": "50b26b2a",
+                        "setCollectionProperty(string,bytes)": "2f073f66",
+                        "setCollectionSponsor(address)": "7623402e",
+                        "setCollectionSponsorCross((address,uint256))": "84a1d5a8",
+                        "setOwnerCross((address,uint256))": "e5c9913f",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "uniqueCollectionType()": "d34b55b8"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"addCollectionAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"newAdmin\",\"type\":\"tuple\"}],\"name\":\"addCollectionAdminCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"addToCollectionAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"addToCollectionAllowListCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"changeCollectionOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionAdmins\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionOwner\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"name\":\"collectionProperties\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple21[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"collectionProperty\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionSponsor\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"field_0\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"field_1\",\"type\":\"uint256\"}],\"internalType\":\"struct Tuple24\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmCollectionSponsorship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"name\":\"deleteCollectionProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"deleteCollectionProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasCollectionPendingSponsor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOwnerOrAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"isOwnerOrAdminCross\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"removeCollectionAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"admin\",\"type\":\"tuple\"}],\"name\":\"removeCollectionAdminCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeCollectionSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"removeFromCollectionAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"removeFromCollectionAllowListCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setCollectionAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"limit\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"value\",\"type\":\"uint32\"}],\"name\":\"setCollectionLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"limit\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setCollectionLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"mode\",\"type\":\"bool\"}],\"name\":\"setCollectionMintMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"setCollectionNesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"},{\"internalType\":\"address[]\",\"name\":\"collections\",\"type\":\"address[]\"}],\"name\":\"setCollectionNesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple21[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"setCollectionProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setCollectionProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"setCollectionSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"sponsor\",\"type\":\"tuple\"}],\"name\":\"setCollectionSponsorCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"newOwner\",\"type\":\"tuple\"}],\"name\":\"setOwnerCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniqueCollectionType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0xb3152af3\",\"kind\":\"dev\",\"methods\":{\"addCollectionAdmin(address)\":{\"details\":\"EVM selector for this function is: 0x92e462c7,  or in textual repr: addCollectionAdmin(address)\",\"params\":{\"newAdmin\":\"Address of the added administrator.\"}},\"addCollectionAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x859aa7d6,  or in textual repr: addCollectionAdminCross((address,uint256))\",\"params\":{\"newAdmin\":\"Cross account administrator address.\"}},\"addToCollectionAllowList(address)\":{\"details\":\"EVM selector for this function is: 0x67844fe6,  or in textual repr: addToCollectionAllowList(address)\",\"params\":{\"user\":\"Address of a trusted user.\"}},\"addToCollectionAllowListCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0xa0184a3a,  or in textual repr: addToCollectionAllowListCross((address,uint256))\",\"params\":{\"user\":\"User cross account address.\"}},\"allowed(address)\":{\"details\":\"EVM selector for this function is: 0xd63a8e11,  or in textual repr: allowed(address)\",\"params\":{\"user\":\"User address to check.\"}},\"changeCollectionOwner(address)\":{\"details\":\"Owner can be changed only by current ownerEVM selector for this function is: 0x4f53e226,  or in textual repr: changeCollectionOwner(address)\",\"params\":{\"newOwner\":\"new owner account\"}},\"collectionAdmins()\":{\"details\":\"EVM selector for this function is: 0x5813216b,  or in textual repr: collectionAdmins()\",\"returns\":{\"_0\":\"Vector of tuples with admins address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa.\"}},\"collectionOwner()\":{\"details\":\"EVM selector for this function is: 0xdf727d3b,  or in textual repr: collectionOwner()\",\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa.\"}},\"collectionProperties(string[])\":{\"details\":\"EVM selector for this function is: 0x285fb8e6,  or in textual repr: collectionProperties(string[])\",\"params\":{\"keys\":\"Properties keys. Empty keys for all propertyes.\"},\"returns\":{\"_0\":\"Vector of properties key/value pairs.\"}},\"collectionProperty(string)\":{\"details\":\"Throws error if key not found.EVM selector for this function is: 0xcf24fd6d,  or in textual repr: collectionProperty(string)\",\"params\":{\"key\":\"Property key.\"},\"returns\":{\"_0\":\"bytes The property corresponding to the key.\"}},\"collectionSponsor()\":{\"details\":\"EVM selector for this function is: 0x6ec0a9f1,  or in textual repr: collectionSponsor()\",\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \\\"Contract has no sponsor\\\" throw.\"}},\"confirmCollectionSponsorship()\":{\"details\":\"After setting the sponsor for the collection, it must be confirmed with this function.EVM selector for this function is: 0x3c50e97a,  or in textual repr: confirmCollectionSponsorship()\"},\"contractAddress()\":{\"details\":\"EVM selector for this function is: 0xf6b4dfb4,  or in textual repr: contractAddress()\"},\"deleteCollectionProperties(string[])\":{\"details\":\"EVM selector for this function is: 0xee206ee3,  or in textual repr: deleteCollectionProperties(string[])\",\"params\":{\"keys\":\"Properties keys.\"}},\"deleteCollectionProperty(string)\":{\"details\":\"EVM selector for this function is: 0x7b7debce,  or in textual repr: deleteCollectionProperty(string)\",\"params\":{\"key\":\"Property key.\"}},\"hasCollectionPendingSponsor()\":{\"details\":\"EVM selector for this function is: 0x058ac185,  or in textual repr: hasCollectionPendingSponsor()\"},\"isOwnerOrAdmin(address)\":{\"details\":\"EVM selector for this function is: 0x9811b0c7,  or in textual repr: isOwnerOrAdmin(address)\",\"params\":{\"user\":\"account to verify\"},\"returns\":{\"_0\":\"\\\"true\\\" if account is the owner or admin\"}},\"isOwnerOrAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x3e75a905,  or in textual repr: isOwnerOrAdminCross((address,uint256))\",\"params\":{\"user\":\"User cross account to verify\"},\"returns\":{\"_0\":\"\\\"true\\\" if account is the owner or admin\"}},\"removeCollectionAdmin(address)\":{\"details\":\"EVM selector for this function is: 0xfafd7b42,  or in textual repr: removeCollectionAdmin(address)\",\"params\":{\"admin\":\"Address of the removed administrator.\"}},\"removeCollectionAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x6c0cd173,  or in textual repr: removeCollectionAdminCross((address,uint256))\",\"params\":{\"admin\":\"Cross account administrator address.\"}},\"removeCollectionSponsor()\":{\"details\":\"EVM selector for this function is: 0x6e0326a3,  or in textual repr: removeCollectionSponsor()\"},\"removeFromCollectionAllowList(address)\":{\"details\":\"EVM selector for this function is: 0x85c51acb,  or in textual repr: removeFromCollectionAllowList(address)\",\"params\":{\"user\":\"Address of a removed user.\"}},\"removeFromCollectionAllowListCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x09ba452a,  or in textual repr: removeFromCollectionAllowListCross((address,uint256))\",\"params\":{\"user\":\"User cross account address.\"}},\"setCollectionAccess(uint8)\":{\"details\":\"EVM selector for this function is: 0x41835d4c,  or in textual repr: setCollectionAccess(uint8)\",\"params\":{\"mode\":\"Access mode \\t0 for Normal \\t1 for AllowList\"}},\"setCollectionLimit(string,bool)\":{\"details\":\"Throws error if limit not found.EVM selector for this function is: 0x993b7fba,  or in textual repr: setCollectionLimit(string,bool)\",\"params\":{\"limit\":\"Name of the limit. Valid names: \\t\\\"ownerCanTransfer\\\", \\t\\\"ownerCanDestroy\\\", \\t\\\"transfersEnabled\\\"\",\"value\":\"Value of the limit.\"}},\"setCollectionLimit(string,uint32)\":{\"details\":\"Throws error if limit not found.EVM selector for this function is: 0x6a3841db,  or in textual repr: setCollectionLimit(string,uint32)\",\"params\":{\"limit\":\"Name of the limit. Valid names: \\t\\\"accountTokenOwnershipLimit\\\", \\t\\\"sponsoredDataSize\\\", \\t\\\"sponsoredDataRateLimit\\\", \\t\\\"tokenLimit\\\", \\t\\\"sponsorTransferTimeout\\\", \\t\\\"sponsorApproveTimeout\\\"\",\"value\":\"Value of the limit.\"}},\"setCollectionMintMode(bool)\":{\"details\":\"EVM selector for this function is: 0x00018e84,  or in textual repr: setCollectionMintMode(bool)\",\"params\":{\"mode\":\"Enable if \\\"true\\\".\"}},\"setCollectionNesting(bool)\":{\"details\":\"EVM selector for this function is: 0x112d4586,  or in textual repr: setCollectionNesting(bool)\",\"params\":{\"enable\":\"If \\\"true\\\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'\"}},\"setCollectionNesting(bool,address[])\":{\"details\":\"EVM selector for this function is: 0x64872396,  or in textual repr: setCollectionNesting(bool,address[])\",\"params\":{\"collections\":\"Addresses of collections that will be available for nesting.\",\"enable\":\"If \\\"true\\\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'\"}},\"setCollectionProperties((string,bytes)[])\":{\"details\":\"EVM selector for this function is: 0x50b26b2a,  or in textual repr: setCollectionProperties((string,bytes)[])\",\"params\":{\"properties\":\"Vector of properties key/value pair.\"}},\"setCollectionProperty(string,bytes)\":{\"details\":\"EVM selector for this function is: 0x2f073f66,  or in textual repr: setCollectionProperty(string,bytes)\",\"params\":{\"key\":\"Property key.\",\"value\":\"Propery value.\"}},\"setCollectionSponsor(address)\":{\"details\":\"In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x7623402e,  or in textual repr: setCollectionSponsor(address)\",\"params\":{\"sponsor\":\"Address of the sponsor from whose account funds will be debited for operations with the contract.\"}},\"setCollectionSponsorCross((address,uint256))\":{\"details\":\"In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x84a1d5a8,  or in textual repr: setCollectionSponsorCross((address,uint256))\",\"params\":{\"sponsor\":\"Cross account address of the sponsor from whose account funds will be debited for operations with the contract.\"}},\"setOwnerCross((address,uint256))\":{\"details\":\"Owner can be changed only by current ownerEVM selector for this function is: 0xe5c9913f,  or in textual repr: setOwnerCross((address,uint256))\",\"params\":{\"newOwner\":\"new owner cross account\"}},\"uniqueCollectionType()\":{\"details\":\"EVM selector for this function is: 0xd34b55b8,  or in textual repr: uniqueCollectionType()\",\"returns\":{\"_0\":\"`Fungible` or `NFT` or `ReFungible`\"}}},\"title\":\"A contract that allows you to work with collections.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addCollectionAdmin(address)\":{\"notice\":\"Add collection admin.\"},\"addCollectionAdminCross((address,uint256))\":{\"notice\":\"Add collection admin.\"},\"addToCollectionAllowList(address)\":{\"notice\":\"Add the user to the allowed list.\"},\"addToCollectionAllowListCross((address,uint256))\":{\"notice\":\"Add user to allowed list.\"},\"allowed(address)\":{\"notice\":\"Checks that user allowed to operate with collection.\"},\"changeCollectionOwner(address)\":{\"notice\":\"Changes collection owner to another account\"},\"collectionAdmins()\":{\"notice\":\"Get collection administrators\"},\"collectionOwner()\":{\"notice\":\"Get collection owner.\"},\"collectionProperties(string[])\":{\"notice\":\"Get collection properties.\"},\"collectionProperty(string)\":{\"notice\":\"Get collection property.\"},\"collectionSponsor()\":{\"notice\":\"Get current sponsor.\"},\"confirmCollectionSponsorship()\":{\"notice\":\"Collection sponsorship confirmation.\"},\"contractAddress()\":{\"notice\":\"Get contract address.\"},\"deleteCollectionProperties(string[])\":{\"notice\":\"Delete collection properties.\"},\"deleteCollectionProperty(string)\":{\"notice\":\"Delete collection property.\"},\"hasCollectionPendingSponsor()\":{\"notice\":\"Whether there is a pending sponsor.\"},\"isOwnerOrAdmin(address)\":{\"notice\":\"Check that account is the owner or admin of the collection\"},\"isOwnerOrAdminCross((address,uint256))\":{\"notice\":\"Check that account is the owner or admin of the collection\"},\"removeCollectionAdmin(address)\":{\"notice\":\"Remove collection admin.\"},\"removeCollectionAdminCross((address,uint256))\":{\"notice\":\"Remove collection admin.\"},\"removeCollectionSponsor()\":{\"notice\":\"Remove collection sponsor.\"},\"removeFromCollectionAllowList(address)\":{\"notice\":\"Remove the user from the allowed list.\"},\"removeFromCollectionAllowListCross((address,uint256))\":{\"notice\":\"Remove user from allowed list.\"},\"setCollectionAccess(uint8)\":{\"notice\":\"Set the collection access method.\"},\"setCollectionLimit(string,bool)\":{\"notice\":\"Set limits for the collection.\"},\"setCollectionLimit(string,uint32)\":{\"notice\":\"Set limits for the collection.\"},\"setCollectionMintMode(bool)\":{\"notice\":\"Switch permission for minting.\"},\"setCollectionNesting(bool)\":{\"notice\":\"Toggle accessibility of collection nesting.\"},\"setCollectionNesting(bool,address[])\":{\"notice\":\"Toggle accessibility of collection nesting.\"},\"setCollectionProperties((string,bytes)[])\":{\"notice\":\"Set collection properties.\"},\"setCollectionProperty(string,bytes)\":{\"notice\":\"Set collection property.\"},\"setCollectionSponsor(address)\":{\"notice\":\"Set the sponsor of the collection.\"},\"setCollectionSponsorCross((address,uint256))\":{\"notice\":\"Set the sponsor of the collection.\"},\"setOwnerCross((address,uint256))\":{\"notice\":\"Changes collection owner to another account\"},\"uniqueCollectionType()\":{\"notice\":\"Returns collection type\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"Collection\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "addCollectionAdmin(address)": {
+                            "notice": "Add collection admin."
+                        },
+                        "addCollectionAdminCross((address,uint256))": {
+                            "notice": "Add collection admin."
+                        },
+                        "addToCollectionAllowList(address)": {
+                            "notice": "Add the user to the allowed list."
+                        },
+                        "addToCollectionAllowListCross((address,uint256))": {
+                            "notice": "Add user to allowed list."
+                        },
+                        "allowed(address)": {
+                            "notice": "Checks that user allowed to operate with collection."
+                        },
+                        "changeCollectionOwner(address)": {
+                            "notice": "Changes collection owner to another account"
+                        },
+                        "collectionAdmins()": {
+                            "notice": "Get collection administrators"
+                        },
+                        "collectionOwner()": {
+                            "notice": "Get collection owner."
+                        },
+                        "collectionProperties(string[])": {
+                            "notice": "Get collection properties."
+                        },
+                        "collectionProperty(string)": {
+                            "notice": "Get collection property."
+                        },
+                        "collectionSponsor()": {
+                            "notice": "Get current sponsor."
+                        },
+                        "confirmCollectionSponsorship()": {
+                            "notice": "Collection sponsorship confirmation."
+                        },
+                        "contractAddress()": {
+                            "notice": "Get contract address."
+                        },
+                        "deleteCollectionProperties(string[])": {
+                            "notice": "Delete collection properties."
+                        },
+                        "deleteCollectionProperty(string)": {
+                            "notice": "Delete collection property."
+                        },
+                        "hasCollectionPendingSponsor()": {
+                            "notice": "Whether there is a pending sponsor."
+                        },
+                        "isOwnerOrAdmin(address)": {
+                            "notice": "Check that account is the owner or admin of the collection"
+                        },
+                        "isOwnerOrAdminCross((address,uint256))": {
+                            "notice": "Check that account is the owner or admin of the collection"
+                        },
+                        "removeCollectionAdmin(address)": {
+                            "notice": "Remove collection admin."
+                        },
+                        "removeCollectionAdminCross((address,uint256))": {
+                            "notice": "Remove collection admin."
+                        },
+                        "removeCollectionSponsor()": {
+                            "notice": "Remove collection sponsor."
+                        },
+                        "removeFromCollectionAllowList(address)": {
+                            "notice": "Remove the user from the allowed list."
+                        },
+                        "removeFromCollectionAllowListCross((address,uint256))": {
+                            "notice": "Remove user from allowed list."
+                        },
+                        "setCollectionAccess(uint8)": {
+                            "notice": "Set the collection access method."
+                        },
+                        "setCollectionLimit(string,bool)": {
+                            "notice": "Set limits for the collection."
+                        },
+                        "setCollectionLimit(string,uint32)": {
+                            "notice": "Set limits for the collection."
+                        },
+                        "setCollectionMintMode(bool)": {
+                            "notice": "Switch permission for minting."
+                        },
+                        "setCollectionNesting(bool)": {
+                            "notice": "Toggle accessibility of collection nesting."
+                        },
+                        "setCollectionNesting(bool,address[])": {
+                            "notice": "Toggle accessibility of collection nesting."
+                        },
+                        "setCollectionProperties((string,bytes)[])": {
+                            "notice": "Set collection properties."
+                        },
+                        "setCollectionProperty(string,bytes)": {
+                            "notice": "Set collection property."
+                        },
+                        "setCollectionSponsor(address)": {
+                            "notice": "Set the sponsor of the collection."
+                        },
+                        "setCollectionSponsorCross((address,uint256))": {
+                            "notice": "Set the sponsor of the collection."
+                        },
+                        "setOwnerCross((address,uint256))": {
+                            "notice": "Changes collection owner to another account"
+                        },
+                        "uniqueCollectionType()": {
+                            "notice": "Returns collection type"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "Dummy": {
+                "abi": [],
+                "devdoc": {
+                    "details": "common stubs holder",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"common stubs holder\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"Dummy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC165": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC721": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "ApprovalForAll",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "approve",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "balanceOf",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "getApproved",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isApprovedForAll",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "ownerOf",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "safeTransferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "data",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "safeTransferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setApprovalForAll",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.mdthe ERC-165 identifier for this interface is 0x80ac58cd",
+                    "kind": "dev",
+                    "methods": {
+                        "approve(address,uint256)": {
+                            "details": "The zero address indicates there is no approved address.Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)",
+                            "params": {
+                                "approved": "The new approved NFT controller",
+                                "tokenId": "The NFT to approve"
+                            }
+                        },
+                        "balanceOf(address)": {
+                            "details": "NFTs assigned to the zero address are considered invalid, and this  function throws for queries about the zero address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)",
+                            "params": {
+                                "owner": "An address for whom to query the balance"
+                            },
+                            "returns": {
+                                "_0": "The number of NFTs owned by `owner`, possibly zero"
+                            }
+                        },
+                        "getApproved(uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x081812fc,  or in textual repr: getApproved(uint256)"
+                        },
+                        "isApprovedForAll(address,address)": {
+                            "details": "Not implementedEVM selector for this function is: 0xe985e9c5,  or in textual repr: isApprovedForAll(address,address)"
+                        },
+                        "ownerOf(uint256)": {
+                            "details": "NFTs assigned to zero address are considered invalid, and queries  about them do throw.EVM selector for this function is: 0x6352211e,  or in textual repr: ownerOf(uint256)",
+                            "params": {
+                                "tokenId": "The identifier for an NFT"
+                            },
+                            "returns": {
+                                "_0": "The address of the owner of the NFT"
+                            }
+                        },
+                        "safeTransferFrom(address,address,uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x42842e0e,  or in textual repr: safeTransferFrom(address,address,uint256)"
+                        },
+                        "safeTransferFrom(address,address,uint256,bytes)": {
+                            "details": "Not implementedEVM selector for this function is: 0xb88d4fde,  or in textual repr: safeTransferFrom(address,address,uint256,bytes)"
+                        },
+                        "setApprovalForAll(address,bool)": {
+                            "details": "Not implementedEVM selector for this function is: 0xa22cb465,  or in textual repr: setApprovalForAll(address,bool)"
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)",
+                            "params": {
+                                "from": "The current owner of the NFT",
+                                "to": "The new owner",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        }
+                    },
+                    "title": "ERC-721 Non-Fungible Token Standard",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "approve(address,uint256)": "095ea7b3",
+                        "balanceOf(address)": "70a08231",
+                        "getApproved(uint256)": "081812fc",
+                        "isApprovedForAll(address,address)": "e985e9c5",
+                        "ownerOf(uint256)": "6352211e",
+                        "safeTransferFrom(address,address,uint256)": "42842e0e",
+                        "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
+                        "setApprovalForAll(address,bool)": "a22cb465",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "transferFrom(address,address,uint256)": "23b872dd"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.mdthe ERC-165 identifier for this interface is 0x80ac58cd\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address.Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)\",\"params\":{\"approved\":\"The new approved NFT controller\",\"tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this  function throws for queries about the zero address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)\",\"params\":{\"owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x081812fc,  or in textual repr: getApproved(uint256)\"},\"isApprovedForAll(address,address)\":{\"details\":\"Not implementedEVM selector for this function is: 0xe985e9c5,  or in textual repr: isApprovedForAll(address,address)\"},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries  about them do throw.EVM selector for this function is: 0x6352211e,  or in textual repr: ownerOf(uint256)\",\"params\":{\"tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x42842e0e,  or in textual repr: safeTransferFrom(address,address,uint256)\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Not implementedEVM selector for this function is: 0xb88d4fde,  or in textual repr: safeTransferFrom(address,address,uint256,bytes)\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Not implementedEVM selector for this function is: 0xa22cb465,  or in textual repr: setApprovalForAll(address,bool)\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)\",\"params\":{\"from\":\"The current owner of the NFT\",\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Set or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "approve(address,uint256)": {
+                            "notice": "Set or reaffirm the approved address for an NFT"
+                        },
+                        "balanceOf(address)": {
+                            "notice": "Count all NFTs assigned to an owner"
+                        },
+                        "ownerOf(uint256)": {
+                            "notice": "Find the owner of an NFT"
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "notice": "Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721Burnable": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burn",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x42966c68",
+                    "kind": "dev",
+                    "methods": {
+                        "burn(uint256)": {
+                            "details": "Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x42966c68,  or in textual repr: burn(uint256)",
+                            "params": {
+                                "tokenId": "The NFT to approve"
+                            }
+                        }
+                    },
+                    "title": "ERC721 Token that can be irreversibly burned (destroyed).",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "burn(uint256)": "42966c68",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x42966c68\",\"kind\":\"dev\",\"methods\":{\"burn(uint256)\":{\"details\":\"Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x42966c68,  or in textual repr: burn(uint256)\",\"params\":{\"tokenId\":\"The NFT to approve\"}}},\"title\":\"ERC721 Token that can be irreversibly burned (destroyed).\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC721Burnable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "burn(uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721Enumerable": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "index",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenByIndex",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "index",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenOfOwnerByIndex",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "totalSupply",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "See https://eips.ethereum.org/EIPS/eip-721the ERC-165 identifier for this interface is 0x780e9d63",
+                    "kind": "dev",
+                    "methods": {
+                        "tokenByIndex(uint256)": {
+                            "details": "EVM selector for this function is: 0x4f6ccce7,  or in textual repr: tokenByIndex(uint256)",
+                            "params": {
+                                "index": "A counter less than `totalSupply()`"
+                            },
+                            "returns": {
+                                "_0": "The token identifier for the `index`th NFT,  (sort order not specified)"
+                            }
+                        },
+                        "tokenOfOwnerByIndex(address,uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x2f745c59,  or in textual repr: tokenOfOwnerByIndex(address,uint256)"
+                        },
+                        "totalSupply()": {
+                            "details": "EVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()",
+                            "returns": {
+                                "_0": "A count of valid NFTs tracked by this contract, where each one of  them has an assigned and queryable owner not equal to the zero address"
+                            }
+                        }
+                    },
+                    "title": "ERC-721 Non-Fungible Token Standard, optional enumeration extension",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "tokenByIndex(uint256)": "4f6ccce7",
+                        "tokenOfOwnerByIndex(address,uint256)": "2f745c59",
+                        "totalSupply()": "18160ddd"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721the ERC-165 identifier for this interface is 0x780e9d63\",\"kind\":\"dev\",\"methods\":{\"tokenByIndex(uint256)\":{\"details\":\"EVM selector for this function is: 0x4f6ccce7,  or in textual repr: tokenByIndex(uint256)\",\"params\":{\"index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `index`th NFT,  (sort order not specified)\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x2f745c59,  or in textual repr: tokenOfOwnerByIndex(address,uint256)\"},\"totalSupply()\":{\"details\":\"EVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()\",\"returns\":{\"_0\":\"A count of valid NFTs tracked by this contract, where each one of  them has an assigned and queryable owner not equal to the zero address\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid NFTs\"},\"totalSupply()\":{\"notice\":\"Count NFTs tracked by this contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC721Enumerable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "tokenByIndex(uint256)": {
+                            "notice": "Enumerate valid NFTs"
+                        },
+                        "totalSupply()": {
+                            "notice": "Count NFTs tracked by this contract"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721Events": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "ApprovalForAll",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    }
+                ],
+                "devdoc": {
+                    "details": "inlined interface",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"inlined interface\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC721Events\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC721Metadata": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenURI",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "See https://eips.ethereum.org/EIPS/eip-721the ERC-165 identifier for this interface is 0x5b5e139f",
+                    "kind": "dev",
+                    "methods": {
+                        "tokenURI(uint256)": {
+                            "details": "If the token has a `url` property and it is not empty, it is returned.  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.  If the collection property `baseURI` is empty or absent, return \"\" (empty string)  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).EVM selector for this function is: 0xc87b56dd,  or in textual repr: tokenURI(uint256)",
+                            "returns": {
+                                "_0": "token's const_metadata"
+                            }
+                        }
+                    },
+                    "title": "ERC-721 Non-Fungible Token Standard, optional metadata extension",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "tokenURI(uint256)": "c87b56dd"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721the ERC-165 identifier for this interface is 0x5b5e139f\",\"kind\":\"dev\",\"methods\":{\"tokenURI(uint256)\":{\"details\":\"If the token has a `url` property and it is not empty, it is returned.  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.  If the collection property `baseURI` is empty or absent, return \\\"\\\" (empty string)  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).EVM selector for this function is: 0xc87b56dd,  or in textual repr: tokenURI(uint256)\",\"returns\":{\"_0\":\"token's const_metadata\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "tokenURI(uint256)": {
+                            "notice": "A distinct Uniform Resource Identifier (URI) for a given asset."
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721UniqueExtensions": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "approved",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "approveCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "from",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFromCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "name",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "nextTokenId",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "symbol",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transfer",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "from",
+                                "type": "tuple"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "to",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFromCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x244543ee",
+                    "kind": "dev",
+                    "methods": {
+                        "approveCross((address,uint256),uint256)": {
+                            "details": "The zero address indicates there is no approved address.Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x0ecd0ab0,  or in textual repr: approveCross((address,uint256),uint256)",
+                            "params": {
+                                "approved": "The new substrate address approved NFT controller",
+                                "tokenId": "The NFT to approve"
+                            }
+                        },
+                        "burnFrom(address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)",
+                            "params": {
+                                "from": "The current owner of the NFT",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "burnFromCross((address,uint256),uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xbb2f5a58,  or in textual repr: burnFromCross((address,uint256),uint256)",
+                            "params": {
+                                "from": "The current owner of the NFT",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "name()": {
+                            "details": "EVM selector for this function is: 0x06fdde03,  or in textual repr: name()"
+                        },
+                        "nextTokenId()": {
+                            "details": "EVM selector for this function is: 0x75794a3c,  or in textual repr: nextTokenId()"
+                        },
+                        "symbol()": {
+                            "details": "EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()"
+                        },
+                        "transfer(address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xd5cf430b,  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)",
+                            "params": {
+                                "from": "Cross acccount address of current owner",
+                                "to": "Cross acccount address of new owner",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        }
+                    },
+                    "title": "Unique extensions for ERC721.",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "approveCross((address,uint256),uint256)": "0ecd0ab0",
+                        "burnFrom(address,uint256)": "79cc6790",
+                        "burnFromCross((address,uint256),uint256)": "bb2f5a58",
+                        "name()": "06fdde03",
+                        "nextTokenId()": "75794a3c",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "symbol()": "95d89b41",
+                        "transfer(address,uint256)": "a9059cbb",
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": "d5cf430b"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"approved\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approveCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"from\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burnFromCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"from\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"to\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFromCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x244543ee\",\"kind\":\"dev\",\"methods\":{\"approveCross((address,uint256),uint256)\":{\"details\":\"The zero address indicates there is no approved address.Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x0ecd0ab0,  or in textual repr: approveCross((address,uint256),uint256)\",\"params\":{\"approved\":\"The new substrate address approved NFT controller\",\"tokenId\":\"The NFT to approve\"}},\"burnFrom(address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)\",\"params\":{\"from\":\"The current owner of the NFT\",\"tokenId\":\"The NFT to transfer\"}},\"burnFromCross((address,uint256),uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xbb2f5a58,  or in textual repr: burnFromCross((address,uint256),uint256)\",\"params\":{\"from\":\"The current owner of the NFT\",\"tokenId\":\"The NFT to transfer\"}},\"name()\":{\"details\":\"EVM selector for this function is: 0x06fdde03,  or in textual repr: name()\"},\"nextTokenId()\":{\"details\":\"EVM selector for this function is: 0x75794a3c,  or in textual repr: nextTokenId()\"},\"symbol()\":{\"details\":\"EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()\"},\"transfer(address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)\",\"params\":{\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}},\"transferFromCross((address,uint256),(address,uint256),uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xd5cf430b,  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)\",\"params\":{\"from\":\"Cross acccount address of current owner\",\"to\":\"Cross acccount address of new owner\",\"tokenId\":\"The NFT to transfer\"}}},\"title\":\"Unique extensions for ERC721.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveCross((address,uint256),uint256)\":{\"notice\":\"Set or reaffirm the approved address for an NFT\"},\"burnFrom(address,uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"burnFromCross((address,uint256),uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"nextTokenId()\":{\"notice\":\"Returns next free NFT ID.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer ownership of an NFT\"},\"transferFromCross((address,uint256),(address,uint256),uint256)\":{\"notice\":\"Transfer ownership of an NFT from cross account address to cross account address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC721UniqueExtensions\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "approveCross((address,uint256),uint256)": {
+                            "notice": "Set or reaffirm the approved address for an NFT"
+                        },
+                        "burnFrom(address,uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "burnFromCross((address,uint256),uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "name()": {
+                            "notice": "A descriptive name for a collection of NFTs in this contract"
+                        },
+                        "nextTokenId()": {
+                            "notice": "Returns next free NFT ID."
+                        },
+                        "symbol()": {
+                            "notice": "An abbreviated name for NFTs in this contract"
+                        },
+                        "transfer(address,uint256)": {
+                            "notice": "Transfer ownership of an NFT"
+                        },
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": {
+                            "notice": "Transfer ownership of an NFT from cross account address to cross account address"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721UniqueMintable": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [],
+                        "name": "MintingFinished",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "finishMinting",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "mint",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "tokenUri",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "mintWithTokenURI",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "mintingFinished",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x476ff149",
+                    "kind": "dev",
+                    "methods": {
+                        "finishMinting()": {
+                            "details": "Not implementedEVM selector for this function is: 0x7d64bcb4,  or in textual repr: finishMinting()"
+                        },
+                        "mint(address)": {
+                            "details": "EVM selector for this function is: 0x6a627842,  or in textual repr: mint(address)",
+                            "params": {
+                                "to": "The new owner"
+                            },
+                            "returns": {
+                                "_0": "uint256 The id of the newly minted token"
+                            }
+                        },
+                        "mintWithTokenURI(address,string)": {
+                            "details": "EVM selector for this function is: 0x45c17782,  or in textual repr: mintWithTokenURI(address,string)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenUri": "Token URI that would be stored in the NFT properties"
+                            },
+                            "returns": {
+                                "_0": "uint256 The id of the newly minted token"
+                            }
+                        },
+                        "mintingFinished()": {
+                            "details": "EVM selector for this function is: 0x05d2035b,  or in textual repr: mintingFinished()"
+                        }
+                    },
+                    "title": "ERC721 minting logic.",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "finishMinting()": "7d64bcb4",
+                        "mint(address)": "6a627842",
+                        "mintWithTokenURI(address,string)": "45c17782",
+                        "mintingFinished()": "05d2035b",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"MintingFinished\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"finishMinting\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenUri\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x476ff149\",\"kind\":\"dev\",\"methods\":{\"finishMinting()\":{\"details\":\"Not implementedEVM selector for this function is: 0x7d64bcb4,  or in textual repr: finishMinting()\"},\"mint(address)\":{\"details\":\"EVM selector for this function is: 0x6a627842,  or in textual repr: mint(address)\",\"params\":{\"to\":\"The new owner\"},\"returns\":{\"_0\":\"uint256 The id of the newly minted token\"}},\"mintWithTokenURI(address,string)\":{\"details\":\"EVM selector for this function is: 0x45c17782,  or in textual repr: mintWithTokenURI(address,string)\",\"params\":{\"to\":\"The new owner\",\"tokenUri\":\"Token URI that would be stored in the NFT properties\"},\"returns\":{\"_0\":\"uint256 The id of the newly minted token\"}},\"mintingFinished()\":{\"details\":\"EVM selector for this function is: 0x05d2035b,  or in textual repr: mintingFinished()\"}},\"title\":\"ERC721 minting logic.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"mint(address)\":{\"notice\":\"Function to mint token.\"},\"mintWithTokenURI(address,string)\":{\"notice\":\"Function to mint token with the given tokenUri.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC721UniqueMintable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "mint(address)": {
+                            "notice": "Function to mint token."
+                        },
+                        "mintWithTokenURI(address,string)": {
+                            "notice": "Function to mint token with the given tokenUri."
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721UniqueMintableEvents": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [],
+                        "name": "MintingFinished",
+                        "type": "event"
+                    }
+                ],
+                "devdoc": {
+                    "details": "inlined interface",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"MintingFinished\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"inlined interface\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"ERC721UniqueMintableEvents\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "TokenProperties": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "deleteProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "property",
+                        "outputs": [
+                            {
+                                "internalType": "bytes",
+                                "name": "",
+                                "type": "bytes"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple21[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "setProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "value",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "setProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "isMutable",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "collectionAdmin",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "tokenOwner",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setTokenPropertyPermission",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x55dba919",
+                    "kind": "dev",
+                    "methods": {
+                        "deleteProperty(uint256,string)": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x066111d1,  or in textual repr: deleteProperty(uint256,string)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token."
+                            }
+                        },
+                        "property(uint256,string)": {
+                            "details": "Throws error if key not foundEVM selector for this function is: 0x7228c327,  or in textual repr: property(uint256,string)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token."
+                            },
+                            "returns": {
+                                "_0": "Property value bytes"
+                            }
+                        },
+                        "setProperties(uint256,(string,bytes)[])": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x14ed3a6e,  or in textual repr: setProperties(uint256,(string,bytes)[])",
+                            "params": {
+                                "properties": "settable properties",
+                                "tokenId": "ID of the token."
+                            }
+                        },
+                        "setProperty(uint256,string,bytes)": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x1752d67b,  or in textual repr: setProperty(uint256,string,bytes)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token.",
+                                "value": "Property value."
+                            }
+                        },
+                        "setTokenPropertyPermission(string,bool,bool,bool)": {
+                            "details": "Throws error if `msg.sender` is not admin or owner of the collection.EVM selector for this function is: 0x222d97fa,  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)",
+                            "params": {
+                                "collectionAdmin": "Permission to mutate property by collection admin if property is mutable.",
+                                "isMutable": "Permission to mutate property.",
+                                "key": "Property key.",
+                                "tokenOwner": "Permission to mutate property by token owner if property is mutable."
+                            }
+                        }
+                    },
+                    "title": "A contract that allows to set and delete token properties and change token property permissions.",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "deleteProperty(uint256,string)": "066111d1",
+                        "property(uint256,string)": "7228c327",
+                        "setProperties(uint256,(string,bytes)[])": "14ed3a6e",
+                        "setProperty(uint256,string,bytes)": "1752d67b",
+                        "setTokenPropertyPermission(string,bool,bool,bool)": "222d97fa",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"deleteProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"property\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple21[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"setProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isMutable\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"collectionAdmin\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"tokenOwner\",\"type\":\"bool\"}],\"name\":\"setTokenPropertyPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x55dba919\",\"kind\":\"dev\",\"methods\":{\"deleteProperty(uint256,string)\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x066111d1,  or in textual repr: deleteProperty(uint256,string)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\"}},\"property(uint256,string)\":{\"details\":\"Throws error if key not foundEVM selector for this function is: 0x7228c327,  or in textual repr: property(uint256,string)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\"},\"returns\":{\"_0\":\"Property value bytes\"}},\"setProperties(uint256,(string,bytes)[])\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x14ed3a6e,  or in textual repr: setProperties(uint256,(string,bytes)[])\",\"params\":{\"properties\":\"settable properties\",\"tokenId\":\"ID of the token.\"}},\"setProperty(uint256,string,bytes)\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x1752d67b,  or in textual repr: setProperty(uint256,string,bytes)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\",\"value\":\"Property value.\"}},\"setTokenPropertyPermission(string,bool,bool,bool)\":{\"details\":\"Throws error if `msg.sender` is not admin or owner of the collection.EVM selector for this function is: 0x222d97fa,  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)\",\"params\":{\"collectionAdmin\":\"Permission to mutate property by collection admin if property is mutable.\",\"isMutable\":\"Permission to mutate property.\",\"key\":\"Property key.\",\"tokenOwner\":\"Permission to mutate property by token owner if property is mutable.\"}}},\"title\":\"A contract that allows to set and delete token properties and change token property permissions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deleteProperty(uint256,string)\":{\"notice\":\"Delete token property value.\"},\"property(uint256,string)\":{\"notice\":\"Get token property value.\"},\"setProperties(uint256,(string,bytes)[])\":{\"notice\":\"Set token properties value.\"},\"setProperty(uint256,string,bytes)\":{\"notice\":\"Set token property value.\"},\"setTokenPropertyPermission(string,bool,bool,bool)\":{\"notice\":\"Set permissions for token property.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"TokenProperties\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "deleteProperty(uint256,string)": {
+                            "notice": "Delete token property value."
+                        },
+                        "property(uint256,string)": {
+                            "notice": "Get token property value."
+                        },
+                        "setProperties(uint256,(string,bytes)[])": {
+                            "notice": "Set token properties value."
+                        },
+                        "setProperty(uint256,string,bytes)": {
+                            "notice": "Set token property value."
+                        },
+                        "setTokenPropertyPermission(string,bool,bool,bool)": {
+                            "notice": "Set permissions for token property."
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "UniqueNFT": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "ApprovalForAll",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [],
+                        "name": "MintingFinished",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "newAdmin",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "addCollectionAdmin",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "newAdmin",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "addCollectionAdminCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "addToCollectionAllowList",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "addToCollectionAllowListCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "allowed",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "approve",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "approved",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "approveCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "balanceOf",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burn",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "from",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFromCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "newOwner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "changeCollectionOwner",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionAdmins",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount[]",
+                                "name": "",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionOwner",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string[]",
+                                "name": "keys",
+                                "type": "string[]"
+                            }
+                        ],
+                        "name": "collectionProperties",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple21[]",
+                                "name": "",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "collectionProperty",
+                        "outputs": [
+                            {
+                                "internalType": "bytes",
+                                "name": "",
+                                "type": "bytes"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionSponsor",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "field_0",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "field_1",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct Tuple24",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "confirmCollectionSponsorship",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "contractAddress",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string[]",
+                                "name": "keys",
+                                "type": "string[]"
+                            }
+                        ],
+                        "name": "deleteCollectionProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "deleteCollectionProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "deleteProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "finishMinting",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "getApproved",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "hasCollectionPendingSponsor",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isApprovedForAll",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isOwnerOrAdmin",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "isOwnerOrAdminCross",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "mint",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "tokenUri",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "mintWithTokenURI",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "mintingFinished",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "name",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "nextTokenId",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "ownerOf",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "property",
+                        "outputs": [
+                            {
+                                "internalType": "bytes",
+                                "name": "",
+                                "type": "bytes"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "admin",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeCollectionAdmin",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "admin",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "removeCollectionAdminCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "removeCollectionSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeFromCollectionAllowList",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "removeFromCollectionAllowListCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "safeTransferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "data",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "safeTransferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setApprovalForAll",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint8",
+                                "name": "mode",
+                                "type": "uint8"
+                            }
+                        ],
+                        "name": "setCollectionAccess",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "limit",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "uint32",
+                                "name": "value",
+                                "type": "uint32"
+                            }
+                        ],
+                        "name": "setCollectionLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "limit",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "value",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "mode",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionMintMode",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "enable",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionNesting",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "enable",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "address[]",
+                                "name": "collections",
+                                "type": "address[]"
+                            }
+                        ],
+                        "name": "setCollectionNesting",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple21[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "setCollectionProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "value",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "setCollectionProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "setCollectionSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "sponsor",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "setCollectionSponsorCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "newOwner",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "setOwnerCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple21[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "setProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "value",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "setProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "isMutable",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "collectionAdmin",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "tokenOwner",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setTokenPropertyPermission",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "symbol",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "index",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenByIndex",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "index",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenOfOwnerByIndex",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenURI",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "totalSupply",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transfer",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "from",
+                                "type": "tuple"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "to",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFromCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "uniqueCollectionType",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "kind": "dev",
+                    "methods": {
+                        "addCollectionAdmin(address)": {
+                            "details": "EVM selector for this function is: 0x92e462c7,  or in textual repr: addCollectionAdmin(address)",
+                            "params": {
+                                "newAdmin": "Address of the added administrator."
+                            }
+                        },
+                        "addCollectionAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x859aa7d6,  or in textual repr: addCollectionAdminCross((address,uint256))",
+                            "params": {
+                                "newAdmin": "Cross account administrator address."
+                            }
+                        },
+                        "addToCollectionAllowList(address)": {
+                            "details": "EVM selector for this function is: 0x67844fe6,  or in textual repr: addToCollectionAllowList(address)",
+                            "params": {
+                                "user": "Address of a trusted user."
+                            }
+                        },
+                        "addToCollectionAllowListCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0xa0184a3a,  or in textual repr: addToCollectionAllowListCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account address."
+                            }
+                        },
+                        "allowed(address)": {
+                            "details": "EVM selector for this function is: 0xd63a8e11,  or in textual repr: allowed(address)",
+                            "params": {
+                                "user": "User address to check."
+                            }
+                        },
+                        "approve(address,uint256)": {
+                            "details": "The zero address indicates there is no approved address.Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)",
+                            "params": {
+                                "approved": "The new approved NFT controller",
+                                "tokenId": "The NFT to approve"
+                            }
+                        },
+                        "approveCross((address,uint256),uint256)": {
+                            "details": "The zero address indicates there is no approved address.Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x0ecd0ab0,  or in textual repr: approveCross((address,uint256),uint256)",
+                            "params": {
+                                "approved": "The new substrate address approved NFT controller",
+                                "tokenId": "The NFT to approve"
+                            }
+                        },
+                        "balanceOf(address)": {
+                            "details": "NFTs assigned to the zero address are considered invalid, and this  function throws for queries about the zero address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)",
+                            "params": {
+                                "owner": "An address for whom to query the balance"
+                            },
+                            "returns": {
+                                "_0": "The number of NFTs owned by `owner`, possibly zero"
+                            }
+                        },
+                        "burn(uint256)": {
+                            "details": "Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x42966c68,  or in textual repr: burn(uint256)",
+                            "params": {
+                                "tokenId": "The NFT to approve"
+                            }
+                        },
+                        "burnFrom(address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)",
+                            "params": {
+                                "from": "The current owner of the NFT",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "burnFromCross((address,uint256),uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xbb2f5a58,  or in textual repr: burnFromCross((address,uint256),uint256)",
+                            "params": {
+                                "from": "The current owner of the NFT",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "changeCollectionOwner(address)": {
+                            "details": "Owner can be changed only by current ownerEVM selector for this function is: 0x4f53e226,  or in textual repr: changeCollectionOwner(address)",
+                            "params": {
+                                "newOwner": "new owner account"
+                            }
+                        },
+                        "collectionAdmins()": {
+                            "details": "EVM selector for this function is: 0x5813216b,  or in textual repr: collectionAdmins()",
+                            "returns": {
+                                "_0": "Vector of tuples with admins address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa."
+                            }
+                        },
+                        "collectionOwner()": {
+                            "details": "EVM selector for this function is: 0xdf727d3b,  or in textual repr: collectionOwner()",
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa."
+                            }
+                        },
+                        "collectionProperties(string[])": {
+                            "details": "EVM selector for this function is: 0x285fb8e6,  or in textual repr: collectionProperties(string[])",
+                            "params": {
+                                "keys": "Properties keys. Empty keys for all propertyes."
+                            },
+                            "returns": {
+                                "_0": "Vector of properties key/value pairs."
+                            }
+                        },
+                        "collectionProperty(string)": {
+                            "details": "Throws error if key not found.EVM selector for this function is: 0xcf24fd6d,  or in textual repr: collectionProperty(string)",
+                            "params": {
+                                "key": "Property key."
+                            },
+                            "returns": {
+                                "_0": "bytes The property corresponding to the key."
+                            }
+                        },
+                        "collectionSponsor()": {
+                            "details": "EVM selector for this function is: 0x6ec0a9f1,  or in textual repr: collectionSponsor()",
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \"Contract has no sponsor\" throw."
+                            }
+                        },
+                        "confirmCollectionSponsorship()": {
+                            "details": "After setting the sponsor for the collection, it must be confirmed with this function.EVM selector for this function is: 0x3c50e97a,  or in textual repr: confirmCollectionSponsorship()"
+                        },
+                        "contractAddress()": {
+                            "details": "EVM selector for this function is: 0xf6b4dfb4,  or in textual repr: contractAddress()"
+                        },
+                        "deleteCollectionProperties(string[])": {
+                            "details": "EVM selector for this function is: 0xee206ee3,  or in textual repr: deleteCollectionProperties(string[])",
+                            "params": {
+                                "keys": "Properties keys."
+                            }
+                        },
+                        "deleteCollectionProperty(string)": {
+                            "details": "EVM selector for this function is: 0x7b7debce,  or in textual repr: deleteCollectionProperty(string)",
+                            "params": {
+                                "key": "Property key."
+                            }
+                        },
+                        "deleteProperty(uint256,string)": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x066111d1,  or in textual repr: deleteProperty(uint256,string)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token."
+                            }
+                        },
+                        "finishMinting()": {
+                            "details": "Not implementedEVM selector for this function is: 0x7d64bcb4,  or in textual repr: finishMinting()"
+                        },
+                        "getApproved(uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x081812fc,  or in textual repr: getApproved(uint256)"
+                        },
+                        "hasCollectionPendingSponsor()": {
+                            "details": "EVM selector for this function is: 0x058ac185,  or in textual repr: hasCollectionPendingSponsor()"
+                        },
+                        "isApprovedForAll(address,address)": {
+                            "details": "Not implementedEVM selector for this function is: 0xe985e9c5,  or in textual repr: isApprovedForAll(address,address)"
+                        },
+                        "isOwnerOrAdmin(address)": {
+                            "details": "EVM selector for this function is: 0x9811b0c7,  or in textual repr: isOwnerOrAdmin(address)",
+                            "params": {
+                                "user": "account to verify"
+                            },
+                            "returns": {
+                                "_0": "\"true\" if account is the owner or admin"
+                            }
+                        },
+                        "isOwnerOrAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x3e75a905,  or in textual repr: isOwnerOrAdminCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account to verify"
+                            },
+                            "returns": {
+                                "_0": "\"true\" if account is the owner or admin"
+                            }
+                        },
+                        "mint(address)": {
+                            "details": "EVM selector for this function is: 0x6a627842,  or in textual repr: mint(address)",
+                            "params": {
+                                "to": "The new owner"
+                            },
+                            "returns": {
+                                "_0": "uint256 The id of the newly minted token"
+                            }
+                        },
+                        "mintWithTokenURI(address,string)": {
+                            "details": "EVM selector for this function is: 0x45c17782,  or in textual repr: mintWithTokenURI(address,string)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenUri": "Token URI that would be stored in the NFT properties"
+                            },
+                            "returns": {
+                                "_0": "uint256 The id of the newly minted token"
+                            }
+                        },
+                        "mintingFinished()": {
+                            "details": "EVM selector for this function is: 0x05d2035b,  or in textual repr: mintingFinished()"
+                        },
+                        "name()": {
+                            "details": "EVM selector for this function is: 0x06fdde03,  or in textual repr: name()"
+                        },
+                        "nextTokenId()": {
+                            "details": "EVM selector for this function is: 0x75794a3c,  or in textual repr: nextTokenId()"
+                        },
+                        "ownerOf(uint256)": {
+                            "details": "NFTs assigned to zero address are considered invalid, and queries  about them do throw.EVM selector for this function is: 0x6352211e,  or in textual repr: ownerOf(uint256)",
+                            "params": {
+                                "tokenId": "The identifier for an NFT"
+                            },
+                            "returns": {
+                                "_0": "The address of the owner of the NFT"
+                            }
+                        },
+                        "property(uint256,string)": {
+                            "details": "Throws error if key not foundEVM selector for this function is: 0x7228c327,  or in textual repr: property(uint256,string)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token."
+                            },
+                            "returns": {
+                                "_0": "Property value bytes"
+                            }
+                        },
+                        "removeCollectionAdmin(address)": {
+                            "details": "EVM selector for this function is: 0xfafd7b42,  or in textual repr: removeCollectionAdmin(address)",
+                            "params": {
+                                "admin": "Address of the removed administrator."
+                            }
+                        },
+                        "removeCollectionAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x6c0cd173,  or in textual repr: removeCollectionAdminCross((address,uint256))",
+                            "params": {
+                                "admin": "Cross account administrator address."
+                            }
+                        },
+                        "removeCollectionSponsor()": {
+                            "details": "EVM selector for this function is: 0x6e0326a3,  or in textual repr: removeCollectionSponsor()"
+                        },
+                        "removeFromCollectionAllowList(address)": {
+                            "details": "EVM selector for this function is: 0x85c51acb,  or in textual repr: removeFromCollectionAllowList(address)",
+                            "params": {
+                                "user": "Address of a removed user."
+                            }
+                        },
+                        "removeFromCollectionAllowListCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x09ba452a,  or in textual repr: removeFromCollectionAllowListCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account address."
+                            }
+                        },
+                        "safeTransferFrom(address,address,uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x42842e0e,  or in textual repr: safeTransferFrom(address,address,uint256)"
+                        },
+                        "safeTransferFrom(address,address,uint256,bytes)": {
+                            "details": "Not implementedEVM selector for this function is: 0xb88d4fde,  or in textual repr: safeTransferFrom(address,address,uint256,bytes)"
+                        },
+                        "setApprovalForAll(address,bool)": {
+                            "details": "Not implementedEVM selector for this function is: 0xa22cb465,  or in textual repr: setApprovalForAll(address,bool)"
+                        },
+                        "setCollectionAccess(uint8)": {
+                            "details": "EVM selector for this function is: 0x41835d4c,  or in textual repr: setCollectionAccess(uint8)",
+                            "params": {
+                                "mode": "Access mode \t0 for Normal \t1 for AllowList"
+                            }
+                        },
+                        "setCollectionLimit(string,bool)": {
+                            "details": "Throws error if limit not found.EVM selector for this function is: 0x993b7fba,  or in textual repr: setCollectionLimit(string,bool)",
+                            "params": {
+                                "limit": "Name of the limit. Valid names: \t\"ownerCanTransfer\", \t\"ownerCanDestroy\", \t\"transfersEnabled\"",
+                                "value": "Value of the limit."
+                            }
+                        },
+                        "setCollectionLimit(string,uint32)": {
+                            "details": "Throws error if limit not found.EVM selector for this function is: 0x6a3841db,  or in textual repr: setCollectionLimit(string,uint32)",
+                            "params": {
+                                "limit": "Name of the limit. Valid names: \t\"accountTokenOwnershipLimit\", \t\"sponsoredDataSize\", \t\"sponsoredDataRateLimit\", \t\"tokenLimit\", \t\"sponsorTransferTimeout\", \t\"sponsorApproveTimeout\"",
+                                "value": "Value of the limit."
+                            }
+                        },
+                        "setCollectionMintMode(bool)": {
+                            "details": "EVM selector for this function is: 0x00018e84,  or in textual repr: setCollectionMintMode(bool)",
+                            "params": {
+                                "mode": "Enable if \"true\"."
+                            }
+                        },
+                        "setCollectionNesting(bool)": {
+                            "details": "EVM selector for this function is: 0x112d4586,  or in textual repr: setCollectionNesting(bool)",
+                            "params": {
+                                "enable": "If \"true\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'"
+                            }
+                        },
+                        "setCollectionNesting(bool,address[])": {
+                            "details": "EVM selector for this function is: 0x64872396,  or in textual repr: setCollectionNesting(bool,address[])",
+                            "params": {
+                                "collections": "Addresses of collections that will be available for nesting.",
+                                "enable": "If \"true\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'"
+                            }
+                        },
+                        "setCollectionProperties((string,bytes)[])": {
+                            "details": "EVM selector for this function is: 0x50b26b2a,  or in textual repr: setCollectionProperties((string,bytes)[])",
+                            "params": {
+                                "properties": "Vector of properties key/value pair."
+                            }
+                        },
+                        "setCollectionProperty(string,bytes)": {
+                            "details": "EVM selector for this function is: 0x2f073f66,  or in textual repr: setCollectionProperty(string,bytes)",
+                            "params": {
+                                "key": "Property key.",
+                                "value": "Propery value."
+                            }
+                        },
+                        "setCollectionSponsor(address)": {
+                            "details": "In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x7623402e,  or in textual repr: setCollectionSponsor(address)",
+                            "params": {
+                                "sponsor": "Address of the sponsor from whose account funds will be debited for operations with the contract."
+                            }
+                        },
+                        "setCollectionSponsorCross((address,uint256))": {
+                            "details": "In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x84a1d5a8,  or in textual repr: setCollectionSponsorCross((address,uint256))",
+                            "params": {
+                                "sponsor": "Cross account address of the sponsor from whose account funds will be debited for operations with the contract."
+                            }
+                        },
+                        "setOwnerCross((address,uint256))": {
+                            "details": "Owner can be changed only by current ownerEVM selector for this function is: 0xe5c9913f,  or in textual repr: setOwnerCross((address,uint256))",
+                            "params": {
+                                "newOwner": "new owner cross account"
+                            }
+                        },
+                        "setProperties(uint256,(string,bytes)[])": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x14ed3a6e,  or in textual repr: setProperties(uint256,(string,bytes)[])",
+                            "params": {
+                                "properties": "settable properties",
+                                "tokenId": "ID of the token."
+                            }
+                        },
+                        "setProperty(uint256,string,bytes)": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x1752d67b,  or in textual repr: setProperty(uint256,string,bytes)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token.",
+                                "value": "Property value."
+                            }
+                        },
+                        "setTokenPropertyPermission(string,bool,bool,bool)": {
+                            "details": "Throws error if `msg.sender` is not admin or owner of the collection.EVM selector for this function is: 0x222d97fa,  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)",
+                            "params": {
+                                "collectionAdmin": "Permission to mutate property by collection admin if property is mutable.",
+                                "isMutable": "Permission to mutate property.",
+                                "key": "Property key.",
+                                "tokenOwner": "Permission to mutate property by token owner if property is mutable."
+                            }
+                        },
+                        "symbol()": {
+                            "details": "EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()"
+                        },
+                        "tokenByIndex(uint256)": {
+                            "details": "EVM selector for this function is: 0x4f6ccce7,  or in textual repr: tokenByIndex(uint256)",
+                            "params": {
+                                "index": "A counter less than `totalSupply()`"
+                            },
+                            "returns": {
+                                "_0": "The token identifier for the `index`th NFT,  (sort order not specified)"
+                            }
+                        },
+                        "tokenOfOwnerByIndex(address,uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x2f745c59,  or in textual repr: tokenOfOwnerByIndex(address,uint256)"
+                        },
+                        "tokenURI(uint256)": {
+                            "details": "If the token has a `url` property and it is not empty, it is returned.  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.  If the collection property `baseURI` is empty or absent, return \"\" (empty string)  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).EVM selector for this function is: 0xc87b56dd,  or in textual repr: tokenURI(uint256)",
+                            "returns": {
+                                "_0": "token's const_metadata"
+                            }
+                        },
+                        "totalSupply()": {
+                            "details": "EVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()",
+                            "returns": {
+                                "_0": "A count of valid NFTs tracked by this contract, where each one of  them has an assigned and queryable owner not equal to the zero address"
+                            }
+                        },
+                        "transfer(address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)",
+                            "params": {
+                                "from": "The current owner of the NFT",
+                                "to": "The new owner",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xd5cf430b,  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)",
+                            "params": {
+                                "from": "Cross acccount address of current owner",
+                                "to": "Cross acccount address of new owner",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "uniqueCollectionType()": {
+                            "details": "EVM selector for this function is: 0xd34b55b8,  or in textual repr: uniqueCollectionType()",
+                            "returns": {
+                                "_0": "`Fungible` or `NFT` or `ReFungible`"
+                            }
+                        }
+                    },
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "addCollectionAdmin(address)": "92e462c7",
+                        "addCollectionAdminCross((address,uint256))": "859aa7d6",
+                        "addToCollectionAllowList(address)": "67844fe6",
+                        "addToCollectionAllowListCross((address,uint256))": "a0184a3a",
+                        "allowed(address)": "d63a8e11",
+                        "approve(address,uint256)": "095ea7b3",
+                        "approveCross((address,uint256),uint256)": "0ecd0ab0",
+                        "balanceOf(address)": "70a08231",
+                        "burn(uint256)": "42966c68",
+                        "burnFrom(address,uint256)": "79cc6790",
+                        "burnFromCross((address,uint256),uint256)": "bb2f5a58",
+                        "changeCollectionOwner(address)": "4f53e226",
+                        "collectionAdmins()": "5813216b",
+                        "collectionOwner()": "df727d3b",
+                        "collectionProperties(string[])": "285fb8e6",
+                        "collectionProperty(string)": "cf24fd6d",
+                        "collectionSponsor()": "6ec0a9f1",
+                        "confirmCollectionSponsorship()": "3c50e97a",
+                        "contractAddress()": "f6b4dfb4",
+                        "deleteCollectionProperties(string[])": "ee206ee3",
+                        "deleteCollectionProperty(string)": "7b7debce",
+                        "deleteProperty(uint256,string)": "066111d1",
+                        "finishMinting()": "7d64bcb4",
+                        "getApproved(uint256)": "081812fc",
+                        "hasCollectionPendingSponsor()": "058ac185",
+                        "isApprovedForAll(address,address)": "e985e9c5",
+                        "isOwnerOrAdmin(address)": "9811b0c7",
+                        "isOwnerOrAdminCross((address,uint256))": "3e75a905",
+                        "mint(address)": "6a627842",
+                        "mintWithTokenURI(address,string)": "45c17782",
+                        "mintingFinished()": "05d2035b",
+                        "name()": "06fdde03",
+                        "nextTokenId()": "75794a3c",
+                        "ownerOf(uint256)": "6352211e",
+                        "property(uint256,string)": "7228c327",
+                        "removeCollectionAdmin(address)": "fafd7b42",
+                        "removeCollectionAdminCross((address,uint256))": "6c0cd173",
+                        "removeCollectionSponsor()": "6e0326a3",
+                        "removeFromCollectionAllowList(address)": "85c51acb",
+                        "removeFromCollectionAllowListCross((address,uint256))": "09ba452a",
+                        "safeTransferFrom(address,address,uint256)": "42842e0e",
+                        "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
+                        "setApprovalForAll(address,bool)": "a22cb465",
+                        "setCollectionAccess(uint8)": "41835d4c",
+                        "setCollectionLimit(string,bool)": "993b7fba",
+                        "setCollectionLimit(string,uint32)": "6a3841db",
+                        "setCollectionMintMode(bool)": "00018e84",
+                        "setCollectionNesting(bool)": "112d4586",
+                        "setCollectionNesting(bool,address[])": "64872396",
+                        "setCollectionProperties((string,bytes)[])": "50b26b2a",
+                        "setCollectionProperty(string,bytes)": "2f073f66",
+                        "setCollectionSponsor(address)": "7623402e",
+                        "setCollectionSponsorCross((address,uint256))": "84a1d5a8",
+                        "setOwnerCross((address,uint256))": "e5c9913f",
+                        "setProperties(uint256,(string,bytes)[])": "14ed3a6e",
+                        "setProperty(uint256,string,bytes)": "1752d67b",
+                        "setTokenPropertyPermission(string,bool,bool,bool)": "222d97fa",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "symbol()": "95d89b41",
+                        "tokenByIndex(uint256)": "4f6ccce7",
+                        "tokenOfOwnerByIndex(address,uint256)": "2f745c59",
+                        "tokenURI(uint256)": "c87b56dd",
+                        "totalSupply()": "18160ddd",
+                        "transfer(address,uint256)": "a9059cbb",
+                        "transferFrom(address,address,uint256)": "23b872dd",
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": "d5cf430b",
+                        "uniqueCollectionType()": "d34b55b8"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MintingFinished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"addCollectionAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"newAdmin\",\"type\":\"tuple\"}],\"name\":\"addCollectionAdminCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"addToCollectionAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"addToCollectionAllowListCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"approved\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approveCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"from\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burnFromCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"changeCollectionOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionAdmins\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionOwner\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"name\":\"collectionProperties\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple21[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"collectionProperty\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionSponsor\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"field_0\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"field_1\",\"type\":\"uint256\"}],\"internalType\":\"struct Tuple24\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmCollectionSponsorship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"name\":\"deleteCollectionProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"deleteCollectionProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"deleteProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finishMinting\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasCollectionPendingSponsor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOwnerOrAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"isOwnerOrAdminCross\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenUri\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"property\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"removeCollectionAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"admin\",\"type\":\"tuple\"}],\"name\":\"removeCollectionAdminCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeCollectionSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"removeFromCollectionAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"removeFromCollectionAllowListCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setCollectionAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"limit\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"value\",\"type\":\"uint32\"}],\"name\":\"setCollectionLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"limit\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setCollectionLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"mode\",\"type\":\"bool\"}],\"name\":\"setCollectionMintMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"setCollectionNesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"},{\"internalType\":\"address[]\",\"name\":\"collections\",\"type\":\"address[]\"}],\"name\":\"setCollectionNesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple21[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"setCollectionProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setCollectionProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"setCollectionSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"sponsor\",\"type\":\"tuple\"}],\"name\":\"setCollectionSponsorCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"newOwner\",\"type\":\"tuple\"}],\"name\":\"setOwnerCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple21[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"setProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isMutable\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"collectionAdmin\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"tokenOwner\",\"type\":\"bool\"}],\"name\":\"setTokenPropertyPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"from\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"to\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFromCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniqueCollectionType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addCollectionAdmin(address)\":{\"details\":\"EVM selector for this function is: 0x92e462c7,  or in textual repr: addCollectionAdmin(address)\",\"params\":{\"newAdmin\":\"Address of the added administrator.\"}},\"addCollectionAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x859aa7d6,  or in textual repr: addCollectionAdminCross((address,uint256))\",\"params\":{\"newAdmin\":\"Cross account administrator address.\"}},\"addToCollectionAllowList(address)\":{\"details\":\"EVM selector for this function is: 0x67844fe6,  or in textual repr: addToCollectionAllowList(address)\",\"params\":{\"user\":\"Address of a trusted user.\"}},\"addToCollectionAllowListCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0xa0184a3a,  or in textual repr: addToCollectionAllowListCross((address,uint256))\",\"params\":{\"user\":\"User cross account address.\"}},\"allowed(address)\":{\"details\":\"EVM selector for this function is: 0xd63a8e11,  or in textual repr: allowed(address)\",\"params\":{\"user\":\"User address to check.\"}},\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address.Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)\",\"params\":{\"approved\":\"The new approved NFT controller\",\"tokenId\":\"The NFT to approve\"}},\"approveCross((address,uint256),uint256)\":{\"details\":\"The zero address indicates there is no approved address.Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x0ecd0ab0,  or in textual repr: approveCross((address,uint256),uint256)\",\"params\":{\"approved\":\"The new substrate address approved NFT controller\",\"tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this  function throws for queries about the zero address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)\",\"params\":{\"owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `owner`, possibly zero\"}},\"burn(uint256)\":{\"details\":\"Throws unless `msg.sender` is the current NFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x42966c68,  or in textual repr: burn(uint256)\",\"params\":{\"tokenId\":\"The NFT to approve\"}},\"burnFrom(address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)\",\"params\":{\"from\":\"The current owner of the NFT\",\"tokenId\":\"The NFT to transfer\"}},\"burnFromCross((address,uint256),uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xbb2f5a58,  or in textual repr: burnFromCross((address,uint256),uint256)\",\"params\":{\"from\":\"The current owner of the NFT\",\"tokenId\":\"The NFT to transfer\"}},\"changeCollectionOwner(address)\":{\"details\":\"Owner can be changed only by current ownerEVM selector for this function is: 0x4f53e226,  or in textual repr: changeCollectionOwner(address)\",\"params\":{\"newOwner\":\"new owner account\"}},\"collectionAdmins()\":{\"details\":\"EVM selector for this function is: 0x5813216b,  or in textual repr: collectionAdmins()\",\"returns\":{\"_0\":\"Vector of tuples with admins address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa.\"}},\"collectionOwner()\":{\"details\":\"EVM selector for this function is: 0xdf727d3b,  or in textual repr: collectionOwner()\",\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa.\"}},\"collectionProperties(string[])\":{\"details\":\"EVM selector for this function is: 0x285fb8e6,  or in textual repr: collectionProperties(string[])\",\"params\":{\"keys\":\"Properties keys. Empty keys for all propertyes.\"},\"returns\":{\"_0\":\"Vector of properties key/value pairs.\"}},\"collectionProperty(string)\":{\"details\":\"Throws error if key not found.EVM selector for this function is: 0xcf24fd6d,  or in textual repr: collectionProperty(string)\",\"params\":{\"key\":\"Property key.\"},\"returns\":{\"_0\":\"bytes The property corresponding to the key.\"}},\"collectionSponsor()\":{\"details\":\"EVM selector for this function is: 0x6ec0a9f1,  or in textual repr: collectionSponsor()\",\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \\\"Contract has no sponsor\\\" throw.\"}},\"confirmCollectionSponsorship()\":{\"details\":\"After setting the sponsor for the collection, it must be confirmed with this function.EVM selector for this function is: 0x3c50e97a,  or in textual repr: confirmCollectionSponsorship()\"},\"contractAddress()\":{\"details\":\"EVM selector for this function is: 0xf6b4dfb4,  or in textual repr: contractAddress()\"},\"deleteCollectionProperties(string[])\":{\"details\":\"EVM selector for this function is: 0xee206ee3,  or in textual repr: deleteCollectionProperties(string[])\",\"params\":{\"keys\":\"Properties keys.\"}},\"deleteCollectionProperty(string)\":{\"details\":\"EVM selector for this function is: 0x7b7debce,  or in textual repr: deleteCollectionProperty(string)\",\"params\":{\"key\":\"Property key.\"}},\"deleteProperty(uint256,string)\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x066111d1,  or in textual repr: deleteProperty(uint256,string)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\"}},\"finishMinting()\":{\"details\":\"Not implementedEVM selector for this function is: 0x7d64bcb4,  or in textual repr: finishMinting()\"},\"getApproved(uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x081812fc,  or in textual repr: getApproved(uint256)\"},\"hasCollectionPendingSponsor()\":{\"details\":\"EVM selector for this function is: 0x058ac185,  or in textual repr: hasCollectionPendingSponsor()\"},\"isApprovedForAll(address,address)\":{\"details\":\"Not implementedEVM selector for this function is: 0xe985e9c5,  or in textual repr: isApprovedForAll(address,address)\"},\"isOwnerOrAdmin(address)\":{\"details\":\"EVM selector for this function is: 0x9811b0c7,  or in textual repr: isOwnerOrAdmin(address)\",\"params\":{\"user\":\"account to verify\"},\"returns\":{\"_0\":\"\\\"true\\\" if account is the owner or admin\"}},\"isOwnerOrAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x3e75a905,  or in textual repr: isOwnerOrAdminCross((address,uint256))\",\"params\":{\"user\":\"User cross account to verify\"},\"returns\":{\"_0\":\"\\\"true\\\" if account is the owner or admin\"}},\"mint(address)\":{\"details\":\"EVM selector for this function is: 0x6a627842,  or in textual repr: mint(address)\",\"params\":{\"to\":\"The new owner\"},\"returns\":{\"_0\":\"uint256 The id of the newly minted token\"}},\"mintWithTokenURI(address,string)\":{\"details\":\"EVM selector for this function is: 0x45c17782,  or in textual repr: mintWithTokenURI(address,string)\",\"params\":{\"to\":\"The new owner\",\"tokenUri\":\"Token URI that would be stored in the NFT properties\"},\"returns\":{\"_0\":\"uint256 The id of the newly minted token\"}},\"mintingFinished()\":{\"details\":\"EVM selector for this function is: 0x05d2035b,  or in textual repr: mintingFinished()\"},\"name()\":{\"details\":\"EVM selector for this function is: 0x06fdde03,  or in textual repr: name()\"},\"nextTokenId()\":{\"details\":\"EVM selector for this function is: 0x75794a3c,  or in textual repr: nextTokenId()\"},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries  about them do throw.EVM selector for this function is: 0x6352211e,  or in textual repr: ownerOf(uint256)\",\"params\":{\"tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"property(uint256,string)\":{\"details\":\"Throws error if key not foundEVM selector for this function is: 0x7228c327,  or in textual repr: property(uint256,string)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\"},\"returns\":{\"_0\":\"Property value bytes\"}},\"removeCollectionAdmin(address)\":{\"details\":\"EVM selector for this function is: 0xfafd7b42,  or in textual repr: removeCollectionAdmin(address)\",\"params\":{\"admin\":\"Address of the removed administrator.\"}},\"removeCollectionAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x6c0cd173,  or in textual repr: removeCollectionAdminCross((address,uint256))\",\"params\":{\"admin\":\"Cross account administrator address.\"}},\"removeCollectionSponsor()\":{\"details\":\"EVM selector for this function is: 0x6e0326a3,  or in textual repr: removeCollectionSponsor()\"},\"removeFromCollectionAllowList(address)\":{\"details\":\"EVM selector for this function is: 0x85c51acb,  or in textual repr: removeFromCollectionAllowList(address)\",\"params\":{\"user\":\"Address of a removed user.\"}},\"removeFromCollectionAllowListCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x09ba452a,  or in textual repr: removeFromCollectionAllowListCross((address,uint256))\",\"params\":{\"user\":\"User cross account address.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x42842e0e,  or in textual repr: safeTransferFrom(address,address,uint256)\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Not implementedEVM selector for this function is: 0xb88d4fde,  or in textual repr: safeTransferFrom(address,address,uint256,bytes)\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Not implementedEVM selector for this function is: 0xa22cb465,  or in textual repr: setApprovalForAll(address,bool)\"},\"setCollectionAccess(uint8)\":{\"details\":\"EVM selector for this function is: 0x41835d4c,  or in textual repr: setCollectionAccess(uint8)\",\"params\":{\"mode\":\"Access mode \\t0 for Normal \\t1 for AllowList\"}},\"setCollectionLimit(string,bool)\":{\"details\":\"Throws error if limit not found.EVM selector for this function is: 0x993b7fba,  or in textual repr: setCollectionLimit(string,bool)\",\"params\":{\"limit\":\"Name of the limit. Valid names: \\t\\\"ownerCanTransfer\\\", \\t\\\"ownerCanDestroy\\\", \\t\\\"transfersEnabled\\\"\",\"value\":\"Value of the limit.\"}},\"setCollectionLimit(string,uint32)\":{\"details\":\"Throws error if limit not found.EVM selector for this function is: 0x6a3841db,  or in textual repr: setCollectionLimit(string,uint32)\",\"params\":{\"limit\":\"Name of the limit. Valid names: \\t\\\"accountTokenOwnershipLimit\\\", \\t\\\"sponsoredDataSize\\\", \\t\\\"sponsoredDataRateLimit\\\", \\t\\\"tokenLimit\\\", \\t\\\"sponsorTransferTimeout\\\", \\t\\\"sponsorApproveTimeout\\\"\",\"value\":\"Value of the limit.\"}},\"setCollectionMintMode(bool)\":{\"details\":\"EVM selector for this function is: 0x00018e84,  or in textual repr: setCollectionMintMode(bool)\",\"params\":{\"mode\":\"Enable if \\\"true\\\".\"}},\"setCollectionNesting(bool)\":{\"details\":\"EVM selector for this function is: 0x112d4586,  or in textual repr: setCollectionNesting(bool)\",\"params\":{\"enable\":\"If \\\"true\\\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'\"}},\"setCollectionNesting(bool,address[])\":{\"details\":\"EVM selector for this function is: 0x64872396,  or in textual repr: setCollectionNesting(bool,address[])\",\"params\":{\"collections\":\"Addresses of collections that will be available for nesting.\",\"enable\":\"If \\\"true\\\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'\"}},\"setCollectionProperties((string,bytes)[])\":{\"details\":\"EVM selector for this function is: 0x50b26b2a,  or in textual repr: setCollectionProperties((string,bytes)[])\",\"params\":{\"properties\":\"Vector of properties key/value pair.\"}},\"setCollectionProperty(string,bytes)\":{\"details\":\"EVM selector for this function is: 0x2f073f66,  or in textual repr: setCollectionProperty(string,bytes)\",\"params\":{\"key\":\"Property key.\",\"value\":\"Propery value.\"}},\"setCollectionSponsor(address)\":{\"details\":\"In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x7623402e,  or in textual repr: setCollectionSponsor(address)\",\"params\":{\"sponsor\":\"Address of the sponsor from whose account funds will be debited for operations with the contract.\"}},\"setCollectionSponsorCross((address,uint256))\":{\"details\":\"In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x84a1d5a8,  or in textual repr: setCollectionSponsorCross((address,uint256))\",\"params\":{\"sponsor\":\"Cross account address of the sponsor from whose account funds will be debited for operations with the contract.\"}},\"setOwnerCross((address,uint256))\":{\"details\":\"Owner can be changed only by current ownerEVM selector for this function is: 0xe5c9913f,  or in textual repr: setOwnerCross((address,uint256))\",\"params\":{\"newOwner\":\"new owner cross account\"}},\"setProperties(uint256,(string,bytes)[])\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x14ed3a6e,  or in textual repr: setProperties(uint256,(string,bytes)[])\",\"params\":{\"properties\":\"settable properties\",\"tokenId\":\"ID of the token.\"}},\"setProperty(uint256,string,bytes)\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x1752d67b,  or in textual repr: setProperty(uint256,string,bytes)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\",\"value\":\"Property value.\"}},\"setTokenPropertyPermission(string,bool,bool,bool)\":{\"details\":\"Throws error if `msg.sender` is not admin or owner of the collection.EVM selector for this function is: 0x222d97fa,  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)\",\"params\":{\"collectionAdmin\":\"Permission to mutate property by collection admin if property is mutable.\",\"isMutable\":\"Permission to mutate property.\",\"key\":\"Property key.\",\"tokenOwner\":\"Permission to mutate property by token owner if property is mutable.\"}},\"symbol()\":{\"details\":\"EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()\"},\"tokenByIndex(uint256)\":{\"details\":\"EVM selector for this function is: 0x4f6ccce7,  or in textual repr: tokenByIndex(uint256)\",\"params\":{\"index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `index`th NFT,  (sort order not specified)\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x2f745c59,  or in textual repr: tokenOfOwnerByIndex(address,uint256)\"},\"tokenURI(uint256)\":{\"details\":\"If the token has a `url` property and it is not empty, it is returned.  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.  If the collection property `baseURI` is empty or absent, return \\\"\\\" (empty string)  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).EVM selector for this function is: 0xc87b56dd,  or in textual repr: tokenURI(uint256)\",\"returns\":{\"_0\":\"token's const_metadata\"}},\"totalSupply()\":{\"details\":\"EVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()\",\"returns\":{\"_0\":\"A count of valid NFTs tracked by this contract, where each one of  them has an assigned and queryable owner not equal to the zero address\"}},\"transfer(address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)\",\"params\":{\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this NFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)\",\"params\":{\"from\":\"The current owner of the NFT\",\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}},\"transferFromCross((address,uint256),(address,uint256),uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid NFT.EVM selector for this function is: 0xd5cf430b,  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)\",\"params\":{\"from\":\"Cross acccount address of current owner\",\"to\":\"Cross acccount address of new owner\",\"tokenId\":\"The NFT to transfer\"}},\"uniqueCollectionType()\":{\"details\":\"EVM selector for this function is: 0xd34b55b8,  or in textual repr: uniqueCollectionType()\",\"returns\":{\"_0\":\"`Fungible` or `NFT` or `ReFungible`\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addCollectionAdmin(address)\":{\"notice\":\"Add collection admin.\"},\"addCollectionAdminCross((address,uint256))\":{\"notice\":\"Add collection admin.\"},\"addToCollectionAllowList(address)\":{\"notice\":\"Add the user to the allowed list.\"},\"addToCollectionAllowListCross((address,uint256))\":{\"notice\":\"Add user to allowed list.\"},\"allowed(address)\":{\"notice\":\"Checks that user allowed to operate with collection.\"},\"approve(address,uint256)\":{\"notice\":\"Set or reaffirm the approved address for an NFT\"},\"approveCross((address,uint256),uint256)\":{\"notice\":\"Set or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"burn(uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"burnFrom(address,uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"burnFromCross((address,uint256),uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"changeCollectionOwner(address)\":{\"notice\":\"Changes collection owner to another account\"},\"collectionAdmins()\":{\"notice\":\"Get collection administrators\"},\"collectionOwner()\":{\"notice\":\"Get collection owner.\"},\"collectionProperties(string[])\":{\"notice\":\"Get collection properties.\"},\"collectionProperty(string)\":{\"notice\":\"Get collection property.\"},\"collectionSponsor()\":{\"notice\":\"Get current sponsor.\"},\"confirmCollectionSponsorship()\":{\"notice\":\"Collection sponsorship confirmation.\"},\"contractAddress()\":{\"notice\":\"Get contract address.\"},\"deleteCollectionProperties(string[])\":{\"notice\":\"Delete collection properties.\"},\"deleteCollectionProperty(string)\":{\"notice\":\"Delete collection property.\"},\"deleteProperty(uint256,string)\":{\"notice\":\"Delete token property value.\"},\"hasCollectionPendingSponsor()\":{\"notice\":\"Whether there is a pending sponsor.\"},\"isOwnerOrAdmin(address)\":{\"notice\":\"Check that account is the owner or admin of the collection\"},\"isOwnerOrAdminCross((address,uint256))\":{\"notice\":\"Check that account is the owner or admin of the collection\"},\"mint(address)\":{\"notice\":\"Function to mint token.\"},\"mintWithTokenURI(address,string)\":{\"notice\":\"Function to mint token with the given tokenUri.\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"nextTokenId()\":{\"notice\":\"Returns next free NFT ID.\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"property(uint256,string)\":{\"notice\":\"Get token property value.\"},\"removeCollectionAdmin(address)\":{\"notice\":\"Remove collection admin.\"},\"removeCollectionAdminCross((address,uint256))\":{\"notice\":\"Remove collection admin.\"},\"removeCollectionSponsor()\":{\"notice\":\"Remove collection sponsor.\"},\"removeFromCollectionAllowList(address)\":{\"notice\":\"Remove the user from the allowed list.\"},\"removeFromCollectionAllowListCross((address,uint256))\":{\"notice\":\"Remove user from allowed list.\"},\"setCollectionAccess(uint8)\":{\"notice\":\"Set the collection access method.\"},\"setCollectionLimit(string,bool)\":{\"notice\":\"Set limits for the collection.\"},\"setCollectionLimit(string,uint32)\":{\"notice\":\"Set limits for the collection.\"},\"setCollectionMintMode(bool)\":{\"notice\":\"Switch permission for minting.\"},\"setCollectionNesting(bool)\":{\"notice\":\"Toggle accessibility of collection nesting.\"},\"setCollectionNesting(bool,address[])\":{\"notice\":\"Toggle accessibility of collection nesting.\"},\"setCollectionProperties((string,bytes)[])\":{\"notice\":\"Set collection properties.\"},\"setCollectionProperty(string,bytes)\":{\"notice\":\"Set collection property.\"},\"setCollectionSponsor(address)\":{\"notice\":\"Set the sponsor of the collection.\"},\"setCollectionSponsorCross((address,uint256))\":{\"notice\":\"Set the sponsor of the collection.\"},\"setOwnerCross((address,uint256))\":{\"notice\":\"Changes collection owner to another account\"},\"setProperties(uint256,(string,bytes)[])\":{\"notice\":\"Set token properties value.\"},\"setProperty(uint256,string,bytes)\":{\"notice\":\"Set token property value.\"},\"setTokenPropertyPermission(string,bool,bool,bool)\":{\"notice\":\"Set permissions for token property.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid NFTs\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalSupply()\":{\"notice\":\"Count NFTs tracked by this contract\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer ownership of an NFT\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST\"},\"transferFromCross((address,uint256),(address,uint256),uint256)\":{\"notice\":\"Transfer ownership of an NFT from cross account address to cross account address\"},\"uniqueCollectionType()\":{\"notice\":\"Returns collection type\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":\"UniqueNFT\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "addCollectionAdmin(address)": {
+                            "notice": "Add collection admin."
+                        },
+                        "addCollectionAdminCross((address,uint256))": {
+                            "notice": "Add collection admin."
+                        },
+                        "addToCollectionAllowList(address)": {
+                            "notice": "Add the user to the allowed list."
+                        },
+                        "addToCollectionAllowListCross((address,uint256))": {
+                            "notice": "Add user to allowed list."
+                        },
+                        "allowed(address)": {
+                            "notice": "Checks that user allowed to operate with collection."
+                        },
+                        "approve(address,uint256)": {
+                            "notice": "Set or reaffirm the approved address for an NFT"
+                        },
+                        "approveCross((address,uint256),uint256)": {
+                            "notice": "Set or reaffirm the approved address for an NFT"
+                        },
+                        "balanceOf(address)": {
+                            "notice": "Count all NFTs assigned to an owner"
+                        },
+                        "burn(uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "burnFrom(address,uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "burnFromCross((address,uint256),uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "changeCollectionOwner(address)": {
+                            "notice": "Changes collection owner to another account"
+                        },
+                        "collectionAdmins()": {
+                            "notice": "Get collection administrators"
+                        },
+                        "collectionOwner()": {
+                            "notice": "Get collection owner."
+                        },
+                        "collectionProperties(string[])": {
+                            "notice": "Get collection properties."
+                        },
+                        "collectionProperty(string)": {
+                            "notice": "Get collection property."
+                        },
+                        "collectionSponsor()": {
+                            "notice": "Get current sponsor."
+                        },
+                        "confirmCollectionSponsorship()": {
+                            "notice": "Collection sponsorship confirmation."
+                        },
+                        "contractAddress()": {
+                            "notice": "Get contract address."
+                        },
+                        "deleteCollectionProperties(string[])": {
+                            "notice": "Delete collection properties."
+                        },
+                        "deleteCollectionProperty(string)": {
+                            "notice": "Delete collection property."
+                        },
+                        "deleteProperty(uint256,string)": {
+                            "notice": "Delete token property value."
+                        },
+                        "hasCollectionPendingSponsor()": {
+                            "notice": "Whether there is a pending sponsor."
+                        },
+                        "isOwnerOrAdmin(address)": {
+                            "notice": "Check that account is the owner or admin of the collection"
+                        },
+                        "isOwnerOrAdminCross((address,uint256))": {
+                            "notice": "Check that account is the owner or admin of the collection"
+                        },
+                        "mint(address)": {
+                            "notice": "Function to mint token."
+                        },
+                        "mintWithTokenURI(address,string)": {
+                            "notice": "Function to mint token with the given tokenUri."
+                        },
+                        "name()": {
+                            "notice": "A descriptive name for a collection of NFTs in this contract"
+                        },
+                        "nextTokenId()": {
+                            "notice": "Returns next free NFT ID."
+                        },
+                        "ownerOf(uint256)": {
+                            "notice": "Find the owner of an NFT"
+                        },
+                        "property(uint256,string)": {
+                            "notice": "Get token property value."
+                        },
+                        "removeCollectionAdmin(address)": {
+                            "notice": "Remove collection admin."
+                        },
+                        "removeCollectionAdminCross((address,uint256))": {
+                            "notice": "Remove collection admin."
+                        },
+                        "removeCollectionSponsor()": {
+                            "notice": "Remove collection sponsor."
+                        },
+                        "removeFromCollectionAllowList(address)": {
+                            "notice": "Remove the user from the allowed list."
+                        },
+                        "removeFromCollectionAllowListCross((address,uint256))": {
+                            "notice": "Remove user from allowed list."
+                        },
+                        "setCollectionAccess(uint8)": {
+                            "notice": "Set the collection access method."
+                        },
+                        "setCollectionLimit(string,bool)": {
+                            "notice": "Set limits for the collection."
+                        },
+                        "setCollectionLimit(string,uint32)": {
+                            "notice": "Set limits for the collection."
+                        },
+                        "setCollectionMintMode(bool)": {
+                            "notice": "Switch permission for minting."
+                        },
+                        "setCollectionNesting(bool)": {
+                            "notice": "Toggle accessibility of collection nesting."
+                        },
+                        "setCollectionNesting(bool,address[])": {
+                            "notice": "Toggle accessibility of collection nesting."
+                        },
+                        "setCollectionProperties((string,bytes)[])": {
+                            "notice": "Set collection properties."
+                        },
+                        "setCollectionProperty(string,bytes)": {
+                            "notice": "Set collection property."
+                        },
+                        "setCollectionSponsor(address)": {
+                            "notice": "Set the sponsor of the collection."
+                        },
+                        "setCollectionSponsorCross((address,uint256))": {
+                            "notice": "Set the sponsor of the collection."
+                        },
+                        "setOwnerCross((address,uint256))": {
+                            "notice": "Changes collection owner to another account"
+                        },
+                        "setProperties(uint256,(string,bytes)[])": {
+                            "notice": "Set token properties value."
+                        },
+                        "setProperty(uint256,string,bytes)": {
+                            "notice": "Set token property value."
+                        },
+                        "setTokenPropertyPermission(string,bool,bool,bool)": {
+                            "notice": "Set permissions for token property."
+                        },
+                        "symbol()": {
+                            "notice": "An abbreviated name for NFTs in this contract"
+                        },
+                        "tokenByIndex(uint256)": {
+                            "notice": "Enumerate valid NFTs"
+                        },
+                        "tokenURI(uint256)": {
+                            "notice": "A distinct Uniform Resource Identifier (URI) for a given asset."
+                        },
+                        "totalSupply()": {
+                            "notice": "Count NFTs tracked by this contract"
+                        },
+                        "transfer(address,uint256)": {
+                            "notice": "Transfer ownership of an NFT"
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "notice": "Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST"
+                        },
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": {
+                            "notice": "Transfer ownership of an NFT from cross account address to cross account address"
+                        },
+                        "uniqueCollectionType()": {
+                            "notice": "Returns collection type"
+                        }
+                    },
+                    "version": 1
+                }
+            }
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol": {
+            "Collection": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "newAdmin",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "addCollectionAdmin",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "newAdmin",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "addCollectionAdminCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "addToCollectionAllowList",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "addToCollectionAllowListCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "allowed",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "newOwner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "changeCollectionOwner",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionAdmins",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount[]",
+                                "name": "",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionOwner",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string[]",
+                                "name": "keys",
+                                "type": "string[]"
+                            }
+                        ],
+                        "name": "collectionProperties",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple20[]",
+                                "name": "",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "collectionProperty",
+                        "outputs": [
+                            {
+                                "internalType": "bytes",
+                                "name": "",
+                                "type": "bytes"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionSponsor",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "field_0",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "field_1",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct Tuple23",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "confirmCollectionSponsorship",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "contractAddress",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string[]",
+                                "name": "keys",
+                                "type": "string[]"
+                            }
+                        ],
+                        "name": "deleteCollectionProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "deleteCollectionProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "hasCollectionPendingSponsor",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isOwnerOrAdmin",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "isOwnerOrAdminCross",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "admin",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeCollectionAdmin",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "admin",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "removeCollectionAdminCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "removeCollectionSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeFromCollectionAllowList",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "removeFromCollectionAllowListCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint8",
+                                "name": "mode",
+                                "type": "uint8"
+                            }
+                        ],
+                        "name": "setCollectionAccess",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "limit",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "uint32",
+                                "name": "value",
+                                "type": "uint32"
+                            }
+                        ],
+                        "name": "setCollectionLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "limit",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "value",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "mode",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionMintMode",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "enable",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionNesting",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "enable",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "address[]",
+                                "name": "collections",
+                                "type": "address[]"
+                            }
+                        ],
+                        "name": "setCollectionNesting",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple20[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "setCollectionProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "value",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "setCollectionProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "setCollectionSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "sponsor",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "setCollectionSponsorCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "newOwner",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "setOwnerCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "uniqueCollectionType",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0xb3152af3",
+                    "kind": "dev",
+                    "methods": {
+                        "addCollectionAdmin(address)": {
+                            "details": "EVM selector for this function is: 0x92e462c7,  or in textual repr: addCollectionAdmin(address)",
+                            "params": {
+                                "newAdmin": "Address of the added administrator."
+                            }
+                        },
+                        "addCollectionAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x859aa7d6,  or in textual repr: addCollectionAdminCross((address,uint256))",
+                            "params": {
+                                "newAdmin": "Cross account administrator address."
+                            }
+                        },
+                        "addToCollectionAllowList(address)": {
+                            "details": "EVM selector for this function is: 0x67844fe6,  or in textual repr: addToCollectionAllowList(address)",
+                            "params": {
+                                "user": "Address of a trusted user."
+                            }
+                        },
+                        "addToCollectionAllowListCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0xa0184a3a,  or in textual repr: addToCollectionAllowListCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account address."
+                            }
+                        },
+                        "allowed(address)": {
+                            "details": "EVM selector for this function is: 0xd63a8e11,  or in textual repr: allowed(address)",
+                            "params": {
+                                "user": "User address to check."
+                            }
+                        },
+                        "changeCollectionOwner(address)": {
+                            "details": "Owner can be changed only by current ownerEVM selector for this function is: 0x4f53e226,  or in textual repr: changeCollectionOwner(address)",
+                            "params": {
+                                "newOwner": "new owner account"
+                            }
+                        },
+                        "collectionAdmins()": {
+                            "details": "EVM selector for this function is: 0x5813216b,  or in textual repr: collectionAdmins()",
+                            "returns": {
+                                "_0": "Vector of tuples with admins address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa."
+                            }
+                        },
+                        "collectionOwner()": {
+                            "details": "EVM selector for this function is: 0xdf727d3b,  or in textual repr: collectionOwner()",
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa."
+                            }
+                        },
+                        "collectionProperties(string[])": {
+                            "details": "EVM selector for this function is: 0x285fb8e6,  or in textual repr: collectionProperties(string[])",
+                            "params": {
+                                "keys": "Properties keys. Empty keys for all propertyes."
+                            },
+                            "returns": {
+                                "_0": "Vector of properties key/value pairs."
+                            }
+                        },
+                        "collectionProperty(string)": {
+                            "details": "Throws error if key not found.EVM selector for this function is: 0xcf24fd6d,  or in textual repr: collectionProperty(string)",
+                            "params": {
+                                "key": "Property key."
+                            },
+                            "returns": {
+                                "_0": "bytes The property corresponding to the key."
+                            }
+                        },
+                        "collectionSponsor()": {
+                            "details": "EVM selector for this function is: 0x6ec0a9f1,  or in textual repr: collectionSponsor()",
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \"Contract has no sponsor\" throw."
+                            }
+                        },
+                        "confirmCollectionSponsorship()": {
+                            "details": "After setting the sponsor for the collection, it must be confirmed with this function.EVM selector for this function is: 0x3c50e97a,  or in textual repr: confirmCollectionSponsorship()"
+                        },
+                        "contractAddress()": {
+                            "details": "EVM selector for this function is: 0xf6b4dfb4,  or in textual repr: contractAddress()"
+                        },
+                        "deleteCollectionProperties(string[])": {
+                            "details": "EVM selector for this function is: 0xee206ee3,  or in textual repr: deleteCollectionProperties(string[])",
+                            "params": {
+                                "keys": "Properties keys."
+                            }
+                        },
+                        "deleteCollectionProperty(string)": {
+                            "details": "EVM selector for this function is: 0x7b7debce,  or in textual repr: deleteCollectionProperty(string)",
+                            "params": {
+                                "key": "Property key."
+                            }
+                        },
+                        "hasCollectionPendingSponsor()": {
+                            "details": "EVM selector for this function is: 0x058ac185,  or in textual repr: hasCollectionPendingSponsor()"
+                        },
+                        "isOwnerOrAdmin(address)": {
+                            "details": "EVM selector for this function is: 0x9811b0c7,  or in textual repr: isOwnerOrAdmin(address)",
+                            "params": {
+                                "user": "account to verify"
+                            },
+                            "returns": {
+                                "_0": "\"true\" if account is the owner or admin"
+                            }
+                        },
+                        "isOwnerOrAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x3e75a905,  or in textual repr: isOwnerOrAdminCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account to verify"
+                            },
+                            "returns": {
+                                "_0": "\"true\" if account is the owner or admin"
+                            }
+                        },
+                        "removeCollectionAdmin(address)": {
+                            "details": "EVM selector for this function is: 0xfafd7b42,  or in textual repr: removeCollectionAdmin(address)",
+                            "params": {
+                                "admin": "Address of the removed administrator."
+                            }
+                        },
+                        "removeCollectionAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x6c0cd173,  or in textual repr: removeCollectionAdminCross((address,uint256))",
+                            "params": {
+                                "admin": "Cross account administrator address."
+                            }
+                        },
+                        "removeCollectionSponsor()": {
+                            "details": "EVM selector for this function is: 0x6e0326a3,  or in textual repr: removeCollectionSponsor()"
+                        },
+                        "removeFromCollectionAllowList(address)": {
+                            "details": "EVM selector for this function is: 0x85c51acb,  or in textual repr: removeFromCollectionAllowList(address)",
+                            "params": {
+                                "user": "Address of a removed user."
+                            }
+                        },
+                        "removeFromCollectionAllowListCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x09ba452a,  or in textual repr: removeFromCollectionAllowListCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account address."
+                            }
+                        },
+                        "setCollectionAccess(uint8)": {
+                            "details": "EVM selector for this function is: 0x41835d4c,  or in textual repr: setCollectionAccess(uint8)",
+                            "params": {
+                                "mode": "Access mode \t0 for Normal \t1 for AllowList"
+                            }
+                        },
+                        "setCollectionLimit(string,bool)": {
+                            "details": "Throws error if limit not found.EVM selector for this function is: 0x993b7fba,  or in textual repr: setCollectionLimit(string,bool)",
+                            "params": {
+                                "limit": "Name of the limit. Valid names: \t\"ownerCanTransfer\", \t\"ownerCanDestroy\", \t\"transfersEnabled\"",
+                                "value": "Value of the limit."
+                            }
+                        },
+                        "setCollectionLimit(string,uint32)": {
+                            "details": "Throws error if limit not found.EVM selector for this function is: 0x6a3841db,  or in textual repr: setCollectionLimit(string,uint32)",
+                            "params": {
+                                "limit": "Name of the limit. Valid names: \t\"accountTokenOwnershipLimit\", \t\"sponsoredDataSize\", \t\"sponsoredDataRateLimit\", \t\"tokenLimit\", \t\"sponsorTransferTimeout\", \t\"sponsorApproveTimeout\"",
+                                "value": "Value of the limit."
+                            }
+                        },
+                        "setCollectionMintMode(bool)": {
+                            "details": "EVM selector for this function is: 0x00018e84,  or in textual repr: setCollectionMintMode(bool)",
+                            "params": {
+                                "mode": "Enable if \"true\"."
+                            }
+                        },
+                        "setCollectionNesting(bool)": {
+                            "details": "EVM selector for this function is: 0x112d4586,  or in textual repr: setCollectionNesting(bool)",
+                            "params": {
+                                "enable": "If \"true\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'"
+                            }
+                        },
+                        "setCollectionNesting(bool,address[])": {
+                            "details": "EVM selector for this function is: 0x64872396,  or in textual repr: setCollectionNesting(bool,address[])",
+                            "params": {
+                                "collections": "Addresses of collections that will be available for nesting.",
+                                "enable": "If \"true\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'"
+                            }
+                        },
+                        "setCollectionProperties((string,bytes)[])": {
+                            "details": "EVM selector for this function is: 0x50b26b2a,  or in textual repr: setCollectionProperties((string,bytes)[])",
+                            "params": {
+                                "properties": "Vector of properties key/value pair."
+                            }
+                        },
+                        "setCollectionProperty(string,bytes)": {
+                            "details": "EVM selector for this function is: 0x2f073f66,  or in textual repr: setCollectionProperty(string,bytes)",
+                            "params": {
+                                "key": "Property key.",
+                                "value": "Propery value."
+                            }
+                        },
+                        "setCollectionSponsor(address)": {
+                            "details": "In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x7623402e,  or in textual repr: setCollectionSponsor(address)",
+                            "params": {
+                                "sponsor": "Address of the sponsor from whose account funds will be debited for operations with the contract."
+                            }
+                        },
+                        "setCollectionSponsorCross((address,uint256))": {
+                            "details": "In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x84a1d5a8,  or in textual repr: setCollectionSponsorCross((address,uint256))",
+                            "params": {
+                                "sponsor": "Cross account address of the sponsor from whose account funds will be debited for operations with the contract."
+                            }
+                        },
+                        "setOwnerCross((address,uint256))": {
+                            "details": "Owner can be changed only by current ownerEVM selector for this function is: 0xe5c9913f,  or in textual repr: setOwnerCross((address,uint256))",
+                            "params": {
+                                "newOwner": "new owner cross account"
+                            }
+                        },
+                        "uniqueCollectionType()": {
+                            "details": "EVM selector for this function is: 0xd34b55b8,  or in textual repr: uniqueCollectionType()",
+                            "returns": {
+                                "_0": "`Fungible` or `NFT` or `ReFungible`"
+                            }
+                        }
+                    },
+                    "title": "A contract that allows you to work with collections.",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "addCollectionAdmin(address)": "92e462c7",
+                        "addCollectionAdminCross((address,uint256))": "859aa7d6",
+                        "addToCollectionAllowList(address)": "67844fe6",
+                        "addToCollectionAllowListCross((address,uint256))": "a0184a3a",
+                        "allowed(address)": "d63a8e11",
+                        "changeCollectionOwner(address)": "4f53e226",
+                        "collectionAdmins()": "5813216b",
+                        "collectionOwner()": "df727d3b",
+                        "collectionProperties(string[])": "285fb8e6",
+                        "collectionProperty(string)": "cf24fd6d",
+                        "collectionSponsor()": "6ec0a9f1",
+                        "confirmCollectionSponsorship()": "3c50e97a",
+                        "contractAddress()": "f6b4dfb4",
+                        "deleteCollectionProperties(string[])": "ee206ee3",
+                        "deleteCollectionProperty(string)": "7b7debce",
+                        "hasCollectionPendingSponsor()": "058ac185",
+                        "isOwnerOrAdmin(address)": "9811b0c7",
+                        "isOwnerOrAdminCross((address,uint256))": "3e75a905",
+                        "removeCollectionAdmin(address)": "fafd7b42",
+                        "removeCollectionAdminCross((address,uint256))": "6c0cd173",
+                        "removeCollectionSponsor()": "6e0326a3",
+                        "removeFromCollectionAllowList(address)": "85c51acb",
+                        "removeFromCollectionAllowListCross((address,uint256))": "09ba452a",
+                        "setCollectionAccess(uint8)": "41835d4c",
+                        "setCollectionLimit(string,bool)": "993b7fba",
+                        "setCollectionLimit(string,uint32)": "6a3841db",
+                        "setCollectionMintMode(bool)": "00018e84",
+                        "setCollectionNesting(bool)": "112d4586",
+                        "setCollectionNesting(bool,address[])": "64872396",
+                        "setCollectionProperties((string,bytes)[])": "50b26b2a",
+                        "setCollectionProperty(string,bytes)": "2f073f66",
+                        "setCollectionSponsor(address)": "7623402e",
+                        "setCollectionSponsorCross((address,uint256))": "84a1d5a8",
+                        "setOwnerCross((address,uint256))": "e5c9913f",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "uniqueCollectionType()": "d34b55b8"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"addCollectionAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"newAdmin\",\"type\":\"tuple\"}],\"name\":\"addCollectionAdminCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"addToCollectionAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"addToCollectionAllowListCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"changeCollectionOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionAdmins\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionOwner\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"name\":\"collectionProperties\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple20[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"collectionProperty\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionSponsor\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"field_0\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"field_1\",\"type\":\"uint256\"}],\"internalType\":\"struct Tuple23\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmCollectionSponsorship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"name\":\"deleteCollectionProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"deleteCollectionProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasCollectionPendingSponsor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOwnerOrAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"isOwnerOrAdminCross\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"removeCollectionAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"admin\",\"type\":\"tuple\"}],\"name\":\"removeCollectionAdminCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeCollectionSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"removeFromCollectionAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"removeFromCollectionAllowListCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setCollectionAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"limit\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"value\",\"type\":\"uint32\"}],\"name\":\"setCollectionLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"limit\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setCollectionLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"mode\",\"type\":\"bool\"}],\"name\":\"setCollectionMintMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"setCollectionNesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"},{\"internalType\":\"address[]\",\"name\":\"collections\",\"type\":\"address[]\"}],\"name\":\"setCollectionNesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple20[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"setCollectionProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setCollectionProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"setCollectionSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"sponsor\",\"type\":\"tuple\"}],\"name\":\"setCollectionSponsorCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"newOwner\",\"type\":\"tuple\"}],\"name\":\"setOwnerCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniqueCollectionType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0xb3152af3\",\"kind\":\"dev\",\"methods\":{\"addCollectionAdmin(address)\":{\"details\":\"EVM selector for this function is: 0x92e462c7,  or in textual repr: addCollectionAdmin(address)\",\"params\":{\"newAdmin\":\"Address of the added administrator.\"}},\"addCollectionAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x859aa7d6,  or in textual repr: addCollectionAdminCross((address,uint256))\",\"params\":{\"newAdmin\":\"Cross account administrator address.\"}},\"addToCollectionAllowList(address)\":{\"details\":\"EVM selector for this function is: 0x67844fe6,  or in textual repr: addToCollectionAllowList(address)\",\"params\":{\"user\":\"Address of a trusted user.\"}},\"addToCollectionAllowListCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0xa0184a3a,  or in textual repr: addToCollectionAllowListCross((address,uint256))\",\"params\":{\"user\":\"User cross account address.\"}},\"allowed(address)\":{\"details\":\"EVM selector for this function is: 0xd63a8e11,  or in textual repr: allowed(address)\",\"params\":{\"user\":\"User address to check.\"}},\"changeCollectionOwner(address)\":{\"details\":\"Owner can be changed only by current ownerEVM selector for this function is: 0x4f53e226,  or in textual repr: changeCollectionOwner(address)\",\"params\":{\"newOwner\":\"new owner account\"}},\"collectionAdmins()\":{\"details\":\"EVM selector for this function is: 0x5813216b,  or in textual repr: collectionAdmins()\",\"returns\":{\"_0\":\"Vector of tuples with admins address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa.\"}},\"collectionOwner()\":{\"details\":\"EVM selector for this function is: 0xdf727d3b,  or in textual repr: collectionOwner()\",\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa.\"}},\"collectionProperties(string[])\":{\"details\":\"EVM selector for this function is: 0x285fb8e6,  or in textual repr: collectionProperties(string[])\",\"params\":{\"keys\":\"Properties keys. Empty keys for all propertyes.\"},\"returns\":{\"_0\":\"Vector of properties key/value pairs.\"}},\"collectionProperty(string)\":{\"details\":\"Throws error if key not found.EVM selector for this function is: 0xcf24fd6d,  or in textual repr: collectionProperty(string)\",\"params\":{\"key\":\"Property key.\"},\"returns\":{\"_0\":\"bytes The property corresponding to the key.\"}},\"collectionSponsor()\":{\"details\":\"EVM selector for this function is: 0x6ec0a9f1,  or in textual repr: collectionSponsor()\",\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \\\"Contract has no sponsor\\\" throw.\"}},\"confirmCollectionSponsorship()\":{\"details\":\"After setting the sponsor for the collection, it must be confirmed with this function.EVM selector for this function is: 0x3c50e97a,  or in textual repr: confirmCollectionSponsorship()\"},\"contractAddress()\":{\"details\":\"EVM selector for this function is: 0xf6b4dfb4,  or in textual repr: contractAddress()\"},\"deleteCollectionProperties(string[])\":{\"details\":\"EVM selector for this function is: 0xee206ee3,  or in textual repr: deleteCollectionProperties(string[])\",\"params\":{\"keys\":\"Properties keys.\"}},\"deleteCollectionProperty(string)\":{\"details\":\"EVM selector for this function is: 0x7b7debce,  or in textual repr: deleteCollectionProperty(string)\",\"params\":{\"key\":\"Property key.\"}},\"hasCollectionPendingSponsor()\":{\"details\":\"EVM selector for this function is: 0x058ac185,  or in textual repr: hasCollectionPendingSponsor()\"},\"isOwnerOrAdmin(address)\":{\"details\":\"EVM selector for this function is: 0x9811b0c7,  or in textual repr: isOwnerOrAdmin(address)\",\"params\":{\"user\":\"account to verify\"},\"returns\":{\"_0\":\"\\\"true\\\" if account is the owner or admin\"}},\"isOwnerOrAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x3e75a905,  or in textual repr: isOwnerOrAdminCross((address,uint256))\",\"params\":{\"user\":\"User cross account to verify\"},\"returns\":{\"_0\":\"\\\"true\\\" if account is the owner or admin\"}},\"removeCollectionAdmin(address)\":{\"details\":\"EVM selector for this function is: 0xfafd7b42,  or in textual repr: removeCollectionAdmin(address)\",\"params\":{\"admin\":\"Address of the removed administrator.\"}},\"removeCollectionAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x6c0cd173,  or in textual repr: removeCollectionAdminCross((address,uint256))\",\"params\":{\"admin\":\"Cross account administrator address.\"}},\"removeCollectionSponsor()\":{\"details\":\"EVM selector for this function is: 0x6e0326a3,  or in textual repr: removeCollectionSponsor()\"},\"removeFromCollectionAllowList(address)\":{\"details\":\"EVM selector for this function is: 0x85c51acb,  or in textual repr: removeFromCollectionAllowList(address)\",\"params\":{\"user\":\"Address of a removed user.\"}},\"removeFromCollectionAllowListCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x09ba452a,  or in textual repr: removeFromCollectionAllowListCross((address,uint256))\",\"params\":{\"user\":\"User cross account address.\"}},\"setCollectionAccess(uint8)\":{\"details\":\"EVM selector for this function is: 0x41835d4c,  or in textual repr: setCollectionAccess(uint8)\",\"params\":{\"mode\":\"Access mode \\t0 for Normal \\t1 for AllowList\"}},\"setCollectionLimit(string,bool)\":{\"details\":\"Throws error if limit not found.EVM selector for this function is: 0x993b7fba,  or in textual repr: setCollectionLimit(string,bool)\",\"params\":{\"limit\":\"Name of the limit. Valid names: \\t\\\"ownerCanTransfer\\\", \\t\\\"ownerCanDestroy\\\", \\t\\\"transfersEnabled\\\"\",\"value\":\"Value of the limit.\"}},\"setCollectionLimit(string,uint32)\":{\"details\":\"Throws error if limit not found.EVM selector for this function is: 0x6a3841db,  or in textual repr: setCollectionLimit(string,uint32)\",\"params\":{\"limit\":\"Name of the limit. Valid names: \\t\\\"accountTokenOwnershipLimit\\\", \\t\\\"sponsoredDataSize\\\", \\t\\\"sponsoredDataRateLimit\\\", \\t\\\"tokenLimit\\\", \\t\\\"sponsorTransferTimeout\\\", \\t\\\"sponsorApproveTimeout\\\"\",\"value\":\"Value of the limit.\"}},\"setCollectionMintMode(bool)\":{\"details\":\"EVM selector for this function is: 0x00018e84,  or in textual repr: setCollectionMintMode(bool)\",\"params\":{\"mode\":\"Enable if \\\"true\\\".\"}},\"setCollectionNesting(bool)\":{\"details\":\"EVM selector for this function is: 0x112d4586,  or in textual repr: setCollectionNesting(bool)\",\"params\":{\"enable\":\"If \\\"true\\\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'\"}},\"setCollectionNesting(bool,address[])\":{\"details\":\"EVM selector for this function is: 0x64872396,  or in textual repr: setCollectionNesting(bool,address[])\",\"params\":{\"collections\":\"Addresses of collections that will be available for nesting.\",\"enable\":\"If \\\"true\\\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'\"}},\"setCollectionProperties((string,bytes)[])\":{\"details\":\"EVM selector for this function is: 0x50b26b2a,  or in textual repr: setCollectionProperties((string,bytes)[])\",\"params\":{\"properties\":\"Vector of properties key/value pair.\"}},\"setCollectionProperty(string,bytes)\":{\"details\":\"EVM selector for this function is: 0x2f073f66,  or in textual repr: setCollectionProperty(string,bytes)\",\"params\":{\"key\":\"Property key.\",\"value\":\"Propery value.\"}},\"setCollectionSponsor(address)\":{\"details\":\"In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x7623402e,  or in textual repr: setCollectionSponsor(address)\",\"params\":{\"sponsor\":\"Address of the sponsor from whose account funds will be debited for operations with the contract.\"}},\"setCollectionSponsorCross((address,uint256))\":{\"details\":\"In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x84a1d5a8,  or in textual repr: setCollectionSponsorCross((address,uint256))\",\"params\":{\"sponsor\":\"Cross account address of the sponsor from whose account funds will be debited for operations with the contract.\"}},\"setOwnerCross((address,uint256))\":{\"details\":\"Owner can be changed only by current ownerEVM selector for this function is: 0xe5c9913f,  or in textual repr: setOwnerCross((address,uint256))\",\"params\":{\"newOwner\":\"new owner cross account\"}},\"uniqueCollectionType()\":{\"details\":\"EVM selector for this function is: 0xd34b55b8,  or in textual repr: uniqueCollectionType()\",\"returns\":{\"_0\":\"`Fungible` or `NFT` or `ReFungible`\"}}},\"title\":\"A contract that allows you to work with collections.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addCollectionAdmin(address)\":{\"notice\":\"Add collection admin.\"},\"addCollectionAdminCross((address,uint256))\":{\"notice\":\"Add collection admin.\"},\"addToCollectionAllowList(address)\":{\"notice\":\"Add the user to the allowed list.\"},\"addToCollectionAllowListCross((address,uint256))\":{\"notice\":\"Add user to allowed list.\"},\"allowed(address)\":{\"notice\":\"Checks that user allowed to operate with collection.\"},\"changeCollectionOwner(address)\":{\"notice\":\"Changes collection owner to another account\"},\"collectionAdmins()\":{\"notice\":\"Get collection administrators\"},\"collectionOwner()\":{\"notice\":\"Get collection owner.\"},\"collectionProperties(string[])\":{\"notice\":\"Get collection properties.\"},\"collectionProperty(string)\":{\"notice\":\"Get collection property.\"},\"collectionSponsor()\":{\"notice\":\"Get current sponsor.\"},\"confirmCollectionSponsorship()\":{\"notice\":\"Collection sponsorship confirmation.\"},\"contractAddress()\":{\"notice\":\"Get contract address.\"},\"deleteCollectionProperties(string[])\":{\"notice\":\"Delete collection properties.\"},\"deleteCollectionProperty(string)\":{\"notice\":\"Delete collection property.\"},\"hasCollectionPendingSponsor()\":{\"notice\":\"Whether there is a pending sponsor.\"},\"isOwnerOrAdmin(address)\":{\"notice\":\"Check that account is the owner or admin of the collection\"},\"isOwnerOrAdminCross((address,uint256))\":{\"notice\":\"Check that account is the owner or admin of the collection\"},\"removeCollectionAdmin(address)\":{\"notice\":\"Remove collection admin.\"},\"removeCollectionAdminCross((address,uint256))\":{\"notice\":\"Remove collection admin.\"},\"removeCollectionSponsor()\":{\"notice\":\"Remove collection sponsor.\"},\"removeFromCollectionAllowList(address)\":{\"notice\":\"Remove the user from the allowed list.\"},\"removeFromCollectionAllowListCross((address,uint256))\":{\"notice\":\"Remove user from allowed list.\"},\"setCollectionAccess(uint8)\":{\"notice\":\"Set the collection access method.\"},\"setCollectionLimit(string,bool)\":{\"notice\":\"Set limits for the collection.\"},\"setCollectionLimit(string,uint32)\":{\"notice\":\"Set limits for the collection.\"},\"setCollectionMintMode(bool)\":{\"notice\":\"Switch permission for minting.\"},\"setCollectionNesting(bool)\":{\"notice\":\"Toggle accessibility of collection nesting.\"},\"setCollectionNesting(bool,address[])\":{\"notice\":\"Toggle accessibility of collection nesting.\"},\"setCollectionProperties((string,bytes)[])\":{\"notice\":\"Set collection properties.\"},\"setCollectionProperty(string,bytes)\":{\"notice\":\"Set collection property.\"},\"setCollectionSponsor(address)\":{\"notice\":\"Set the sponsor of the collection.\"},\"setCollectionSponsorCross((address,uint256))\":{\"notice\":\"Set the sponsor of the collection.\"},\"setOwnerCross((address,uint256))\":{\"notice\":\"Changes collection owner to another account\"},\"uniqueCollectionType()\":{\"notice\":\"Returns collection type\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"Collection\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "addCollectionAdmin(address)": {
+                            "notice": "Add collection admin."
+                        },
+                        "addCollectionAdminCross((address,uint256))": {
+                            "notice": "Add collection admin."
+                        },
+                        "addToCollectionAllowList(address)": {
+                            "notice": "Add the user to the allowed list."
+                        },
+                        "addToCollectionAllowListCross((address,uint256))": {
+                            "notice": "Add user to allowed list."
+                        },
+                        "allowed(address)": {
+                            "notice": "Checks that user allowed to operate with collection."
+                        },
+                        "changeCollectionOwner(address)": {
+                            "notice": "Changes collection owner to another account"
+                        },
+                        "collectionAdmins()": {
+                            "notice": "Get collection administrators"
+                        },
+                        "collectionOwner()": {
+                            "notice": "Get collection owner."
+                        },
+                        "collectionProperties(string[])": {
+                            "notice": "Get collection properties."
+                        },
+                        "collectionProperty(string)": {
+                            "notice": "Get collection property."
+                        },
+                        "collectionSponsor()": {
+                            "notice": "Get current sponsor."
+                        },
+                        "confirmCollectionSponsorship()": {
+                            "notice": "Collection sponsorship confirmation."
+                        },
+                        "contractAddress()": {
+                            "notice": "Get contract address."
+                        },
+                        "deleteCollectionProperties(string[])": {
+                            "notice": "Delete collection properties."
+                        },
+                        "deleteCollectionProperty(string)": {
+                            "notice": "Delete collection property."
+                        },
+                        "hasCollectionPendingSponsor()": {
+                            "notice": "Whether there is a pending sponsor."
+                        },
+                        "isOwnerOrAdmin(address)": {
+                            "notice": "Check that account is the owner or admin of the collection"
+                        },
+                        "isOwnerOrAdminCross((address,uint256))": {
+                            "notice": "Check that account is the owner or admin of the collection"
+                        },
+                        "removeCollectionAdmin(address)": {
+                            "notice": "Remove collection admin."
+                        },
+                        "removeCollectionAdminCross((address,uint256))": {
+                            "notice": "Remove collection admin."
+                        },
+                        "removeCollectionSponsor()": {
+                            "notice": "Remove collection sponsor."
+                        },
+                        "removeFromCollectionAllowList(address)": {
+                            "notice": "Remove the user from the allowed list."
+                        },
+                        "removeFromCollectionAllowListCross((address,uint256))": {
+                            "notice": "Remove user from allowed list."
+                        },
+                        "setCollectionAccess(uint8)": {
+                            "notice": "Set the collection access method."
+                        },
+                        "setCollectionLimit(string,bool)": {
+                            "notice": "Set limits for the collection."
+                        },
+                        "setCollectionLimit(string,uint32)": {
+                            "notice": "Set limits for the collection."
+                        },
+                        "setCollectionMintMode(bool)": {
+                            "notice": "Switch permission for minting."
+                        },
+                        "setCollectionNesting(bool)": {
+                            "notice": "Toggle accessibility of collection nesting."
+                        },
+                        "setCollectionNesting(bool,address[])": {
+                            "notice": "Toggle accessibility of collection nesting."
+                        },
+                        "setCollectionProperties((string,bytes)[])": {
+                            "notice": "Set collection properties."
+                        },
+                        "setCollectionProperty(string,bytes)": {
+                            "notice": "Set collection property."
+                        },
+                        "setCollectionSponsor(address)": {
+                            "notice": "Set the sponsor of the collection."
+                        },
+                        "setCollectionSponsorCross((address,uint256))": {
+                            "notice": "Set the sponsor of the collection."
+                        },
+                        "setOwnerCross((address,uint256))": {
+                            "notice": "Changes collection owner to another account"
+                        },
+                        "uniqueCollectionType()": {
+                            "notice": "Returns collection type"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "Dummy": {
+                "abi": [],
+                "devdoc": {
+                    "details": "common stubs holder",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"common stubs holder\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"Dummy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC165": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC721": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "ApprovalForAll",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "approve",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "balanceOf",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "getApproved",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isApprovedForAll",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "ownerOf",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "safeTransferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "data",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "safeTransferFromWithData",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setApprovalForAll",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.mdthe ERC-165 identifier for this interface is 0x58800161",
+                    "kind": "dev",
+                    "methods": {
+                        "approve(address,uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)"
+                        },
+                        "balanceOf(address)": {
+                            "details": "RFTs assigned to the zero address are considered invalid, and this  function throws for queries about the zero address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)",
+                            "params": {
+                                "owner": "An address for whom to query the balance"
+                            },
+                            "returns": {
+                                "_0": "The number of RFTs owned by `owner`, possibly zero"
+                            }
+                        },
+                        "getApproved(uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x081812fc,  or in textual repr: getApproved(uint256)"
+                        },
+                        "isApprovedForAll(address,address)": {
+                            "details": "Not implementedEVM selector for this function is: 0xe985e9c5,  or in textual repr: isApprovedForAll(address,address)"
+                        },
+                        "ownerOf(uint256)": {
+                            "details": "RFTs assigned to zero address are considered invalid, and queries  about them do throw.  Returns special 0xffffffffffffffffffffffffffffffffffffffff address for  the tokens that are partially owned.EVM selector for this function is: 0x6352211e,  or in textual repr: ownerOf(uint256)",
+                            "params": {
+                                "tokenId": "The identifier for an RFT"
+                            },
+                            "returns": {
+                                "_0": "The address of the owner of the RFT"
+                            }
+                        },
+                        "safeTransferFrom(address,address,uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x42842e0e,  or in textual repr: safeTransferFrom(address,address,uint256)"
+                        },
+                        "safeTransferFromWithData(address,address,uint256,bytes)": {
+                            "details": "Not implementedEVM selector for this function is: 0x60a11672,  or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)"
+                        },
+                        "setApprovalForAll(address,bool)": {
+                            "details": "Not implementedEVM selector for this function is: 0xa22cb465,  or in textual repr: setApprovalForAll(address,bool)"
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)",
+                            "params": {
+                                "from": "The current owner of the NFT",
+                                "to": "The new owner",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        }
+                    },
+                    "title": "ERC-721 Non-Fungible Token Standard",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "approve(address,uint256)": "095ea7b3",
+                        "balanceOf(address)": "70a08231",
+                        "getApproved(uint256)": "081812fc",
+                        "isApprovedForAll(address,address)": "e985e9c5",
+                        "ownerOf(uint256)": "6352211e",
+                        "safeTransferFrom(address,address,uint256)": "42842e0e",
+                        "safeTransferFromWithData(address,address,uint256,bytes)": "60a11672",
+                        "setApprovalForAll(address,bool)": "a22cb465",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "transferFrom(address,address,uint256)": "23b872dd"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFromWithData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.mdthe ERC-165 identifier for this interface is 0x58800161\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)\"},\"balanceOf(address)\":{\"details\":\"RFTs assigned to the zero address are considered invalid, and this  function throws for queries about the zero address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)\",\"params\":{\"owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of RFTs owned by `owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x081812fc,  or in textual repr: getApproved(uint256)\"},\"isApprovedForAll(address,address)\":{\"details\":\"Not implementedEVM selector for this function is: 0xe985e9c5,  or in textual repr: isApprovedForAll(address,address)\"},\"ownerOf(uint256)\":{\"details\":\"RFTs assigned to zero address are considered invalid, and queries  about them do throw.  Returns special 0xffffffffffffffffffffffffffffffffffffffff address for  the tokens that are partially owned.EVM selector for this function is: 0x6352211e,  or in textual repr: ownerOf(uint256)\",\"params\":{\"tokenId\":\"The identifier for an RFT\"},\"returns\":{\"_0\":\"The address of the owner of the RFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x42842e0e,  or in textual repr: safeTransferFrom(address,address,uint256)\"},\"safeTransferFromWithData(address,address,uint256,bytes)\":{\"details\":\"Not implementedEVM selector for this function is: 0x60a11672,  or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Not implementedEVM selector for this function is: 0xa22cb465,  or in textual repr: setApprovalForAll(address,bool)\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)\",\"params\":{\"from\":\"The current owner of the NFT\",\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"Count all RFTs assigned to an owner\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an RFT\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "balanceOf(address)": {
+                            "notice": "Count all RFTs assigned to an owner"
+                        },
+                        "ownerOf(uint256)": {
+                            "notice": "Find the owner of an RFT"
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "notice": "Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721Burnable": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burn",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x42966c68",
+                    "kind": "dev",
+                    "methods": {
+                        "burn(uint256)": {
+                            "details": "Throws unless `msg.sender` is the current RFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x42966c68,  or in textual repr: burn(uint256)",
+                            "params": {
+                                "tokenId": "The RFT to approve"
+                            }
+                        }
+                    },
+                    "title": "ERC721 Token that can be irreversibly burned (destroyed).",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "burn(uint256)": "42966c68",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x42966c68\",\"kind\":\"dev\",\"methods\":{\"burn(uint256)\":{\"details\":\"Throws unless `msg.sender` is the current RFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x42966c68,  or in textual repr: burn(uint256)\",\"params\":{\"tokenId\":\"The RFT to approve\"}}},\"title\":\"ERC721 Token that can be irreversibly burned (destroyed).\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC721Burnable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "burn(uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721Enumerable": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "index",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenByIndex",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "index",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenOfOwnerByIndex",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "totalSupply",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "See https://eips.ethereum.org/EIPS/eip-721the ERC-165 identifier for this interface is 0x780e9d63",
+                    "kind": "dev",
+                    "methods": {
+                        "tokenByIndex(uint256)": {
+                            "details": "EVM selector for this function is: 0x4f6ccce7,  or in textual repr: tokenByIndex(uint256)",
+                            "params": {
+                                "index": "A counter less than `totalSupply()`"
+                            },
+                            "returns": {
+                                "_0": "The token identifier for the `index`th NFT,  (sort order not specified)"
+                            }
+                        },
+                        "tokenOfOwnerByIndex(address,uint256)": {
+                            "details": "EVM selector for this function is: 0x2f745c59,  or in textual repr: tokenOfOwnerByIndex(address,uint256)"
+                        },
+                        "totalSupply()": {
+                            "details": "EVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()",
+                            "returns": {
+                                "_0": "A count of valid RFTs tracked by this contract, where each one of  them has an assigned and queryable owner not equal to the zero address"
+                            }
+                        }
+                    },
+                    "title": "ERC-721 Non-Fungible Token Standard, optional enumeration extension",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "tokenByIndex(uint256)": "4f6ccce7",
+                        "tokenOfOwnerByIndex(address,uint256)": "2f745c59",
+                        "totalSupply()": "18160ddd"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721the ERC-165 identifier for this interface is 0x780e9d63\",\"kind\":\"dev\",\"methods\":{\"tokenByIndex(uint256)\":{\"details\":\"EVM selector for this function is: 0x4f6ccce7,  or in textual repr: tokenByIndex(uint256)\",\"params\":{\"index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `index`th NFT,  (sort order not specified)\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"EVM selector for this function is: 0x2f745c59,  or in textual repr: tokenOfOwnerByIndex(address,uint256)\"},\"totalSupply()\":{\"details\":\"EVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()\",\"returns\":{\"_0\":\"A count of valid RFTs tracked by this contract, where each one of  them has an assigned and queryable owner not equal to the zero address\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid RFTs\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Not implemented\"},\"totalSupply()\":{\"notice\":\"Count RFTs tracked by this contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC721Enumerable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "tokenByIndex(uint256)": {
+                            "notice": "Enumerate valid RFTs"
+                        },
+                        "tokenOfOwnerByIndex(address,uint256)": {
+                            "notice": "Not implemented"
+                        },
+                        "totalSupply()": {
+                            "notice": "Count RFTs tracked by this contract"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721Events": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "ApprovalForAll",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    }
+                ],
+                "devdoc": {
+                    "details": "inlined interface",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"inlined interface\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC721Events\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC721Metadata": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenURI",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x5b5e139f",
+                    "kind": "dev",
+                    "methods": {
+                        "tokenURI(uint256)": {
+                            "details": "If the token has a `url` property and it is not empty, it is returned.  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.  If the collection property `baseURI` is empty or absent, return \"\" (empty string)  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).EVM selector for this function is: 0xc87b56dd,  or in textual repr: tokenURI(uint256)",
+                            "returns": {
+                                "_0": "token's const_metadata"
+                            }
+                        }
+                    },
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "tokenURI(uint256)": "c87b56dd"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x5b5e139f\",\"kind\":\"dev\",\"methods\":{\"tokenURI(uint256)\":{\"details\":\"If the token has a `url` property and it is not empty, it is returned.  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.  If the collection property `baseURI` is empty or absent, return \\\"\\\" (empty string)  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).EVM selector for this function is: 0xc87b56dd,  or in textual repr: tokenURI(uint256)\",\"returns\":{\"_0\":\"token's const_metadata\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "tokenURI(uint256)": {
+                            "notice": "A distinct Uniform Resource Identifier (URI) for a given asset."
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721UniqueExtensions": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "from",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFromCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "name",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "nextTokenId",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "symbol",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "token",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenContractAddress",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transfer",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "from",
+                                "type": "tuple"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "to",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFromCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x81feb398",
+                    "kind": "dev",
+                    "methods": {
+                        "burnFrom(address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)",
+                            "params": {
+                                "from": "The current owner of the RFT",
+                                "tokenId": "The RFT to transfer"
+                            }
+                        },
+                        "burnFromCross((address,uint256),uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xbb2f5a58,  or in textual repr: burnFromCross((address,uint256),uint256)",
+                            "params": {
+                                "from": "The current owner of the RFT",
+                                "tokenId": "The RFT to transfer"
+                            }
+                        },
+                        "name()": {
+                            "details": "EVM selector for this function is: 0x06fdde03,  or in textual repr: name()"
+                        },
+                        "nextTokenId()": {
+                            "details": "EVM selector for this function is: 0x75794a3c,  or in textual repr: nextTokenId()"
+                        },
+                        "symbol()": {
+                            "details": "EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()"
+                        },
+                        "tokenContractAddress(uint256)": {
+                            "details": "EVM selector for this function is: 0xab76fac6,  or in textual repr: tokenContractAddress(uint256)",
+                            "params": {
+                                "token": "ID of the token"
+                            }
+                        },
+                        "transfer(address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenId": "The RFT to transfer"
+                            }
+                        },
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xd5cf430b,  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenId": "The RFT to transfer"
+                            }
+                        }
+                    },
+                    "title": "Unique extensions for ERC721.",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "burnFrom(address,uint256)": "79cc6790",
+                        "burnFromCross((address,uint256),uint256)": "bb2f5a58",
+                        "name()": "06fdde03",
+                        "nextTokenId()": "75794a3c",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "symbol()": "95d89b41",
+                        "tokenContractAddress(uint256)": "ab76fac6",
+                        "transfer(address,uint256)": "a9059cbb",
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": "d5cf430b"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"from\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burnFromCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"}],\"name\":\"tokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"from\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"to\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFromCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x81feb398\",\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)\",\"params\":{\"from\":\"The current owner of the RFT\",\"tokenId\":\"The RFT to transfer\"}},\"burnFromCross((address,uint256),uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xbb2f5a58,  or in textual repr: burnFromCross((address,uint256),uint256)\",\"params\":{\"from\":\"The current owner of the RFT\",\"tokenId\":\"The RFT to transfer\"}},\"name()\":{\"details\":\"EVM selector for this function is: 0x06fdde03,  or in textual repr: name()\"},\"nextTokenId()\":{\"details\":\"EVM selector for this function is: 0x75794a3c,  or in textual repr: nextTokenId()\"},\"symbol()\":{\"details\":\"EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()\"},\"tokenContractAddress(uint256)\":{\"details\":\"EVM selector for this function is: 0xab76fac6,  or in textual repr: tokenContractAddress(uint256)\",\"params\":{\"token\":\"ID of the token\"}},\"transfer(address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)\",\"params\":{\"to\":\"The new owner\",\"tokenId\":\"The RFT to transfer\"}},\"transferFromCross((address,uint256),(address,uint256),uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xd5cf430b,  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)\",\"params\":{\"to\":\"The new owner\",\"tokenId\":\"The RFT to transfer\"}}},\"title\":\"Unique extensions for ERC721.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burnFrom(address,uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"burnFromCross((address,uint256),uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"nextTokenId()\":{\"notice\":\"Returns next free RFT ID.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenContractAddress(uint256)\":{\"notice\":\"Returns EVM address for refungible token\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer ownership of an RFT\"},\"transferFromCross((address,uint256),(address,uint256),uint256)\":{\"notice\":\"Transfer ownership of an RFT\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC721UniqueExtensions\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "burnFrom(address,uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "burnFromCross((address,uint256),uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "name()": {
+                            "notice": "A descriptive name for a collection of NFTs in this contract"
+                        },
+                        "nextTokenId()": {
+                            "notice": "Returns next free RFT ID."
+                        },
+                        "symbol()": {
+                            "notice": "An abbreviated name for NFTs in this contract"
+                        },
+                        "tokenContractAddress(uint256)": {
+                            "notice": "Returns EVM address for refungible token"
+                        },
+                        "transfer(address,uint256)": {
+                            "notice": "Transfer ownership of an RFT"
+                        },
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": {
+                            "notice": "Transfer ownership of an RFT"
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721UniqueMintable": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [],
+                        "name": "MintingFinished",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "finishMinting",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "mint",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "tokenUri",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "mintWithTokenURI",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "mintingFinished",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x476ff149",
+                    "kind": "dev",
+                    "methods": {
+                        "finishMinting()": {
+                            "details": "Not implementedEVM selector for this function is: 0x7d64bcb4,  or in textual repr: finishMinting()"
+                        },
+                        "mint(address)": {
+                            "details": "EVM selector for this function is: 0x6a627842,  or in textual repr: mint(address)",
+                            "params": {
+                                "to": "The new owner"
+                            },
+                            "returns": {
+                                "_0": "uint256 The id of the newly minted token"
+                            }
+                        },
+                        "mintWithTokenURI(address,string)": {
+                            "details": "EVM selector for this function is: 0x45c17782,  or in textual repr: mintWithTokenURI(address,string)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenUri": "Token URI that would be stored in the NFT properties"
+                            },
+                            "returns": {
+                                "_0": "uint256 The id of the newly minted token"
+                            }
+                        },
+                        "mintingFinished()": {
+                            "details": "EVM selector for this function is: 0x05d2035b,  or in textual repr: mintingFinished()"
+                        }
+                    },
+                    "title": "ERC721 minting logic.",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "finishMinting()": "7d64bcb4",
+                        "mint(address)": "6a627842",
+                        "mintWithTokenURI(address,string)": "45c17782",
+                        "mintingFinished()": "05d2035b",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"MintingFinished\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"finishMinting\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenUri\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x476ff149\",\"kind\":\"dev\",\"methods\":{\"finishMinting()\":{\"details\":\"Not implementedEVM selector for this function is: 0x7d64bcb4,  or in textual repr: finishMinting()\"},\"mint(address)\":{\"details\":\"EVM selector for this function is: 0x6a627842,  or in textual repr: mint(address)\",\"params\":{\"to\":\"The new owner\"},\"returns\":{\"_0\":\"uint256 The id of the newly minted token\"}},\"mintWithTokenURI(address,string)\":{\"details\":\"EVM selector for this function is: 0x45c17782,  or in textual repr: mintWithTokenURI(address,string)\",\"params\":{\"to\":\"The new owner\",\"tokenUri\":\"Token URI that would be stored in the NFT properties\"},\"returns\":{\"_0\":\"uint256 The id of the newly minted token\"}},\"mintingFinished()\":{\"details\":\"EVM selector for this function is: 0x05d2035b,  or in textual repr: mintingFinished()\"}},\"title\":\"ERC721 minting logic.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"mint(address)\":{\"notice\":\"Function to mint token.\"},\"mintWithTokenURI(address,string)\":{\"notice\":\"Function to mint token with the given tokenUri.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC721UniqueMintable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "mint(address)": {
+                            "notice": "Function to mint token."
+                        },
+                        "mintWithTokenURI(address,string)": {
+                            "notice": "Function to mint token with the given tokenUri."
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "ERC721UniqueMintableEvents": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [],
+                        "name": "MintingFinished",
+                        "type": "event"
+                    }
+                ],
+                "devdoc": {
+                    "details": "inlined interface",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"MintingFinished\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"inlined interface\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"ERC721UniqueMintableEvents\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "TokenProperties": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "deleteProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "property",
+                        "outputs": [
+                            {
+                                "internalType": "bytes",
+                                "name": "",
+                                "type": "bytes"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple20[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "setProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "value",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "setProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "isMutable",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "collectionAdmin",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "tokenOwner",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setTokenPropertyPermission",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x55dba919",
+                    "kind": "dev",
+                    "methods": {
+                        "deleteProperty(uint256,string)": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x066111d1,  or in textual repr: deleteProperty(uint256,string)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token."
+                            }
+                        },
+                        "property(uint256,string)": {
+                            "details": "Throws error if key not foundEVM selector for this function is: 0x7228c327,  or in textual repr: property(uint256,string)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token."
+                            },
+                            "returns": {
+                                "_0": "Property value bytes"
+                            }
+                        },
+                        "setProperties(uint256,(string,bytes)[])": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x14ed3a6e,  or in textual repr: setProperties(uint256,(string,bytes)[])",
+                            "params": {
+                                "properties": "settable properties",
+                                "tokenId": "ID of the token."
+                            }
+                        },
+                        "setProperty(uint256,string,bytes)": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x1752d67b,  or in textual repr: setProperty(uint256,string,bytes)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token.",
+                                "value": "Property value."
+                            }
+                        },
+                        "setTokenPropertyPermission(string,bool,bool,bool)": {
+                            "details": "Throws error if `msg.sender` is not admin or owner of the collection.EVM selector for this function is: 0x222d97fa,  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)",
+                            "params": {
+                                "collectionAdmin": "Permission to mutate property by collection admin if property is mutable.",
+                                "isMutable": "Permission to mutate property.",
+                                "key": "Property key.",
+                                "tokenOwner": "Permission to mutate property by token owner if property is mutable."
+                            }
+                        }
+                    },
+                    "title": "A contract that allows to set and delete token properties and change token property permissions.",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "deleteProperty(uint256,string)": "066111d1",
+                        "property(uint256,string)": "7228c327",
+                        "setProperties(uint256,(string,bytes)[])": "14ed3a6e",
+                        "setProperty(uint256,string,bytes)": "1752d67b",
+                        "setTokenPropertyPermission(string,bool,bool,bool)": "222d97fa",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"deleteProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"property\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple20[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"setProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isMutable\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"collectionAdmin\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"tokenOwner\",\"type\":\"bool\"}],\"name\":\"setTokenPropertyPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x55dba919\",\"kind\":\"dev\",\"methods\":{\"deleteProperty(uint256,string)\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x066111d1,  or in textual repr: deleteProperty(uint256,string)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\"}},\"property(uint256,string)\":{\"details\":\"Throws error if key not foundEVM selector for this function is: 0x7228c327,  or in textual repr: property(uint256,string)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\"},\"returns\":{\"_0\":\"Property value bytes\"}},\"setProperties(uint256,(string,bytes)[])\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x14ed3a6e,  or in textual repr: setProperties(uint256,(string,bytes)[])\",\"params\":{\"properties\":\"settable properties\",\"tokenId\":\"ID of the token.\"}},\"setProperty(uint256,string,bytes)\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x1752d67b,  or in textual repr: setProperty(uint256,string,bytes)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\",\"value\":\"Property value.\"}},\"setTokenPropertyPermission(string,bool,bool,bool)\":{\"details\":\"Throws error if `msg.sender` is not admin or owner of the collection.EVM selector for this function is: 0x222d97fa,  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)\",\"params\":{\"collectionAdmin\":\"Permission to mutate property by collection admin if property is mutable.\",\"isMutable\":\"Permission to mutate property.\",\"key\":\"Property key.\",\"tokenOwner\":\"Permission to mutate property by token owner if property is mutable.\"}}},\"title\":\"A contract that allows to set and delete token properties and change token property permissions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deleteProperty(uint256,string)\":{\"notice\":\"Delete token property value.\"},\"property(uint256,string)\":{\"notice\":\"Get token property value.\"},\"setProperties(uint256,(string,bytes)[])\":{\"notice\":\"Set token properties value.\"},\"setProperty(uint256,string,bytes)\":{\"notice\":\"Set token property value.\"},\"setTokenPropertyPermission(string,bool,bool,bool)\":{\"notice\":\"Set permissions for token property.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"TokenProperties\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "deleteProperty(uint256,string)": {
+                            "notice": "Delete token property value."
+                        },
+                        "property(uint256,string)": {
+                            "notice": "Get token property value."
+                        },
+                        "setProperties(uint256,(string,bytes)[])": {
+                            "notice": "Set token properties value."
+                        },
+                        "setProperty(uint256,string,bytes)": {
+                            "notice": "Set token property value."
+                        },
+                        "setTokenPropertyPermission(string,bool,bool,bool)": {
+                            "notice": "Set permissions for token property."
+                        }
+                    },
+                    "version": 1
+                }
+            },
+            "UniqueRefungible": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "ApprovalForAll",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [],
+                        "name": "MintingFinished",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "newAdmin",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "addCollectionAdmin",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "newAdmin",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "addCollectionAdminCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "addToCollectionAllowList",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "addToCollectionAllowListCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "allowed",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "approved",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "approve",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "balanceOf",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burn",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "from",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFromCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "newOwner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "changeCollectionOwner",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionAdmins",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount[]",
+                                "name": "",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionOwner",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string[]",
+                                "name": "keys",
+                                "type": "string[]"
+                            }
+                        ],
+                        "name": "collectionProperties",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple20[]",
+                                "name": "",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "collectionProperty",
+                        "outputs": [
+                            {
+                                "internalType": "bytes",
+                                "name": "",
+                                "type": "bytes"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "collectionSponsor",
+                        "outputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "field_0",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "field_1",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct Tuple23",
+                                "name": "",
+                                "type": "tuple"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "confirmCollectionSponsorship",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "contractAddress",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string[]",
+                                "name": "keys",
+                                "type": "string[]"
+                            }
+                        ],
+                        "name": "deleteCollectionProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "deleteCollectionProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "deleteProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "finishMinting",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "getApproved",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "hasCollectionPendingSponsor",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isApprovedForAll",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "isOwnerOrAdmin",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "isOwnerOrAdminCross",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "mint",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "tokenUri",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "mintWithTokenURI",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "mintingFinished",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "name",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "nextTokenId",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "ownerOf",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            }
+                        ],
+                        "name": "property",
+                        "outputs": [
+                            {
+                                "internalType": "bytes",
+                                "name": "",
+                                "type": "bytes"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "admin",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeCollectionAdmin",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "admin",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "removeCollectionAdminCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "removeCollectionSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "user",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "removeFromCollectionAllowList",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "user",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "removeFromCollectionAllowListCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "safeTransferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "data",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "safeTransferFromWithData",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "operator",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "approved",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setApprovalForAll",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint8",
+                                "name": "mode",
+                                "type": "uint8"
+                            }
+                        ],
+                        "name": "setCollectionAccess",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "limit",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "uint32",
+                                "name": "value",
+                                "type": "uint32"
+                            }
+                        ],
+                        "name": "setCollectionLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "limit",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "value",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionLimit",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "mode",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionMintMode",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "enable",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setCollectionNesting",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "enable",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "address[]",
+                                "name": "collections",
+                                "type": "address[]"
+                            }
+                        ],
+                        "name": "setCollectionNesting",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple20[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "setCollectionProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "value",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "setCollectionProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "sponsor",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "setCollectionSponsor",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "sponsor",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "setCollectionSponsorCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "newOwner",
+                                "type": "tuple"
+                            }
+                        ],
+                        "name": "setOwnerCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple20[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "setProperties",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            },
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bytes",
+                                "name": "value",
+                                "type": "bytes"
+                            }
+                        ],
+                        "name": "setProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "string",
+                                "name": "key",
+                                "type": "string"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "isMutable",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "collectionAdmin",
+                                "type": "bool"
+                            },
+                            {
+                                "internalType": "bool",
+                                "name": "tokenOwner",
+                                "type": "bool"
+                            }
+                        ],
+                        "name": "setTokenPropertyPermission",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "symbol",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "index",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenByIndex",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "token",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenContractAddress",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "index",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenOfOwnerByIndex",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "tokenURI",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "totalSupply",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transfer",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFrom",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "from",
+                                "type": "tuple"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "address",
+                                        "name": "eth",
+                                        "type": "address"
+                                    },
+                                    {
+                                        "internalType": "uint256",
+                                        "name": "sub",
+                                        "type": "uint256"
+                                    }
+                                ],
+                                "internalType": "struct EthCrossAccount",
+                                "name": "to",
+                                "type": "tuple"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFromCross",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "uniqueCollectionType",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "kind": "dev",
+                    "methods": {
+                        "addCollectionAdmin(address)": {
+                            "details": "EVM selector for this function is: 0x92e462c7,  or in textual repr: addCollectionAdmin(address)",
+                            "params": {
+                                "newAdmin": "Address of the added administrator."
+                            }
+                        },
+                        "addCollectionAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x859aa7d6,  or in textual repr: addCollectionAdminCross((address,uint256))",
+                            "params": {
+                                "newAdmin": "Cross account administrator address."
+                            }
+                        },
+                        "addToCollectionAllowList(address)": {
+                            "details": "EVM selector for this function is: 0x67844fe6,  or in textual repr: addToCollectionAllowList(address)",
+                            "params": {
+                                "user": "Address of a trusted user."
+                            }
+                        },
+                        "addToCollectionAllowListCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0xa0184a3a,  or in textual repr: addToCollectionAllowListCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account address."
+                            }
+                        },
+                        "allowed(address)": {
+                            "details": "EVM selector for this function is: 0xd63a8e11,  or in textual repr: allowed(address)",
+                            "params": {
+                                "user": "User address to check."
+                            }
+                        },
+                        "approve(address,uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)"
+                        },
+                        "balanceOf(address)": {
+                            "details": "RFTs assigned to the zero address are considered invalid, and this  function throws for queries about the zero address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)",
+                            "params": {
+                                "owner": "An address for whom to query the balance"
+                            },
+                            "returns": {
+                                "_0": "The number of RFTs owned by `owner`, possibly zero"
+                            }
+                        },
+                        "burn(uint256)": {
+                            "details": "Throws unless `msg.sender` is the current RFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x42966c68,  or in textual repr: burn(uint256)",
+                            "params": {
+                                "tokenId": "The RFT to approve"
+                            }
+                        },
+                        "burnFrom(address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)",
+                            "params": {
+                                "from": "The current owner of the RFT",
+                                "tokenId": "The RFT to transfer"
+                            }
+                        },
+                        "burnFromCross((address,uint256),uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xbb2f5a58,  or in textual repr: burnFromCross((address,uint256),uint256)",
+                            "params": {
+                                "from": "The current owner of the RFT",
+                                "tokenId": "The RFT to transfer"
+                            }
+                        },
+                        "changeCollectionOwner(address)": {
+                            "details": "Owner can be changed only by current ownerEVM selector for this function is: 0x4f53e226,  or in textual repr: changeCollectionOwner(address)",
+                            "params": {
+                                "newOwner": "new owner account"
+                            }
+                        },
+                        "collectionAdmins()": {
+                            "details": "EVM selector for this function is: 0x5813216b,  or in textual repr: collectionAdmins()",
+                            "returns": {
+                                "_0": "Vector of tuples with admins address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa."
+                            }
+                        },
+                        "collectionOwner()": {
+                            "details": "EVM selector for this function is: 0xdf727d3b,  or in textual repr: collectionOwner()",
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa."
+                            }
+                        },
+                        "collectionProperties(string[])": {
+                            "details": "EVM selector for this function is: 0x285fb8e6,  or in textual repr: collectionProperties(string[])",
+                            "params": {
+                                "keys": "Properties keys. Empty keys for all propertyes."
+                            },
+                            "returns": {
+                                "_0": "Vector of properties key/value pairs."
+                            }
+                        },
+                        "collectionProperty(string)": {
+                            "details": "Throws error if key not found.EVM selector for this function is: 0xcf24fd6d,  or in textual repr: collectionProperty(string)",
+                            "params": {
+                                "key": "Property key."
+                            },
+                            "returns": {
+                                "_0": "bytes The property corresponding to the key."
+                            }
+                        },
+                        "collectionSponsor()": {
+                            "details": "EVM selector for this function is: 0x6ec0a9f1,  or in textual repr: collectionSponsor()",
+                            "returns": {
+                                "_0": "Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \"Contract has no sponsor\" throw."
+                            }
+                        },
+                        "confirmCollectionSponsorship()": {
+                            "details": "After setting the sponsor for the collection, it must be confirmed with this function.EVM selector for this function is: 0x3c50e97a,  or in textual repr: confirmCollectionSponsorship()"
+                        },
+                        "contractAddress()": {
+                            "details": "EVM selector for this function is: 0xf6b4dfb4,  or in textual repr: contractAddress()"
+                        },
+                        "deleteCollectionProperties(string[])": {
+                            "details": "EVM selector for this function is: 0xee206ee3,  or in textual repr: deleteCollectionProperties(string[])",
+                            "params": {
+                                "keys": "Properties keys."
+                            }
+                        },
+                        "deleteCollectionProperty(string)": {
+                            "details": "EVM selector for this function is: 0x7b7debce,  or in textual repr: deleteCollectionProperty(string)",
+                            "params": {
+                                "key": "Property key."
+                            }
+                        },
+                        "deleteProperty(uint256,string)": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x066111d1,  or in textual repr: deleteProperty(uint256,string)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token."
+                            }
+                        },
+                        "finishMinting()": {
+                            "details": "Not implementedEVM selector for this function is: 0x7d64bcb4,  or in textual repr: finishMinting()"
+                        },
+                        "getApproved(uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x081812fc,  or in textual repr: getApproved(uint256)"
+                        },
+                        "hasCollectionPendingSponsor()": {
+                            "details": "EVM selector for this function is: 0x058ac185,  or in textual repr: hasCollectionPendingSponsor()"
+                        },
+                        "isApprovedForAll(address,address)": {
+                            "details": "Not implementedEVM selector for this function is: 0xe985e9c5,  or in textual repr: isApprovedForAll(address,address)"
+                        },
+                        "isOwnerOrAdmin(address)": {
+                            "details": "EVM selector for this function is: 0x9811b0c7,  or in textual repr: isOwnerOrAdmin(address)",
+                            "params": {
+                                "user": "account to verify"
+                            },
+                            "returns": {
+                                "_0": "\"true\" if account is the owner or admin"
+                            }
+                        },
+                        "isOwnerOrAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x3e75a905,  or in textual repr: isOwnerOrAdminCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account to verify"
+                            },
+                            "returns": {
+                                "_0": "\"true\" if account is the owner or admin"
+                            }
+                        },
+                        "mint(address)": {
+                            "details": "EVM selector for this function is: 0x6a627842,  or in textual repr: mint(address)",
+                            "params": {
+                                "to": "The new owner"
+                            },
+                            "returns": {
+                                "_0": "uint256 The id of the newly minted token"
+                            }
+                        },
+                        "mintWithTokenURI(address,string)": {
+                            "details": "EVM selector for this function is: 0x45c17782,  or in textual repr: mintWithTokenURI(address,string)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenUri": "Token URI that would be stored in the NFT properties"
+                            },
+                            "returns": {
+                                "_0": "uint256 The id of the newly minted token"
+                            }
+                        },
+                        "mintingFinished()": {
+                            "details": "EVM selector for this function is: 0x05d2035b,  or in textual repr: mintingFinished()"
+                        },
+                        "name()": {
+                            "details": "EVM selector for this function is: 0x06fdde03,  or in textual repr: name()"
+                        },
+                        "nextTokenId()": {
+                            "details": "EVM selector for this function is: 0x75794a3c,  or in textual repr: nextTokenId()"
+                        },
+                        "ownerOf(uint256)": {
+                            "details": "RFTs assigned to zero address are considered invalid, and queries  about them do throw.  Returns special 0xffffffffffffffffffffffffffffffffffffffff address for  the tokens that are partially owned.EVM selector for this function is: 0x6352211e,  or in textual repr: ownerOf(uint256)",
+                            "params": {
+                                "tokenId": "The identifier for an RFT"
+                            },
+                            "returns": {
+                                "_0": "The address of the owner of the RFT"
+                            }
+                        },
+                        "property(uint256,string)": {
+                            "details": "Throws error if key not foundEVM selector for this function is: 0x7228c327,  or in textual repr: property(uint256,string)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token."
+                            },
+                            "returns": {
+                                "_0": "Property value bytes"
+                            }
+                        },
+                        "removeCollectionAdmin(address)": {
+                            "details": "EVM selector for this function is: 0xfafd7b42,  or in textual repr: removeCollectionAdmin(address)",
+                            "params": {
+                                "admin": "Address of the removed administrator."
+                            }
+                        },
+                        "removeCollectionAdminCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x6c0cd173,  or in textual repr: removeCollectionAdminCross((address,uint256))",
+                            "params": {
+                                "admin": "Cross account administrator address."
+                            }
+                        },
+                        "removeCollectionSponsor()": {
+                            "details": "EVM selector for this function is: 0x6e0326a3,  or in textual repr: removeCollectionSponsor()"
+                        },
+                        "removeFromCollectionAllowList(address)": {
+                            "details": "EVM selector for this function is: 0x85c51acb,  or in textual repr: removeFromCollectionAllowList(address)",
+                            "params": {
+                                "user": "Address of a removed user."
+                            }
+                        },
+                        "removeFromCollectionAllowListCross((address,uint256))": {
+                            "details": "EVM selector for this function is: 0x09ba452a,  or in textual repr: removeFromCollectionAllowListCross((address,uint256))",
+                            "params": {
+                                "user": "User cross account address."
+                            }
+                        },
+                        "safeTransferFrom(address,address,uint256)": {
+                            "details": "Not implementedEVM selector for this function is: 0x42842e0e,  or in textual repr: safeTransferFrom(address,address,uint256)"
+                        },
+                        "safeTransferFromWithData(address,address,uint256,bytes)": {
+                            "details": "Not implementedEVM selector for this function is: 0x60a11672,  or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)"
+                        },
+                        "setApprovalForAll(address,bool)": {
+                            "details": "Not implementedEVM selector for this function is: 0xa22cb465,  or in textual repr: setApprovalForAll(address,bool)"
+                        },
+                        "setCollectionAccess(uint8)": {
+                            "details": "EVM selector for this function is: 0x41835d4c,  or in textual repr: setCollectionAccess(uint8)",
+                            "params": {
+                                "mode": "Access mode \t0 for Normal \t1 for AllowList"
+                            }
+                        },
+                        "setCollectionLimit(string,bool)": {
+                            "details": "Throws error if limit not found.EVM selector for this function is: 0x993b7fba,  or in textual repr: setCollectionLimit(string,bool)",
+                            "params": {
+                                "limit": "Name of the limit. Valid names: \t\"ownerCanTransfer\", \t\"ownerCanDestroy\", \t\"transfersEnabled\"",
+                                "value": "Value of the limit."
+                            }
+                        },
+                        "setCollectionLimit(string,uint32)": {
+                            "details": "Throws error if limit not found.EVM selector for this function is: 0x6a3841db,  or in textual repr: setCollectionLimit(string,uint32)",
+                            "params": {
+                                "limit": "Name of the limit. Valid names: \t\"accountTokenOwnershipLimit\", \t\"sponsoredDataSize\", \t\"sponsoredDataRateLimit\", \t\"tokenLimit\", \t\"sponsorTransferTimeout\", \t\"sponsorApproveTimeout\"",
+                                "value": "Value of the limit."
+                            }
+                        },
+                        "setCollectionMintMode(bool)": {
+                            "details": "EVM selector for this function is: 0x00018e84,  or in textual repr: setCollectionMintMode(bool)",
+                            "params": {
+                                "mode": "Enable if \"true\"."
+                            }
+                        },
+                        "setCollectionNesting(bool)": {
+                            "details": "EVM selector for this function is: 0x112d4586,  or in textual repr: setCollectionNesting(bool)",
+                            "params": {
+                                "enable": "If \"true\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'"
+                            }
+                        },
+                        "setCollectionNesting(bool,address[])": {
+                            "details": "EVM selector for this function is: 0x64872396,  or in textual repr: setCollectionNesting(bool,address[])",
+                            "params": {
+                                "collections": "Addresses of collections that will be available for nesting.",
+                                "enable": "If \"true\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'"
+                            }
+                        },
+                        "setCollectionProperties((string,bytes)[])": {
+                            "details": "EVM selector for this function is: 0x50b26b2a,  or in textual repr: setCollectionProperties((string,bytes)[])",
+                            "params": {
+                                "properties": "Vector of properties key/value pair."
+                            }
+                        },
+                        "setCollectionProperty(string,bytes)": {
+                            "details": "EVM selector for this function is: 0x2f073f66,  or in textual repr: setCollectionProperty(string,bytes)",
+                            "params": {
+                                "key": "Property key.",
+                                "value": "Propery value."
+                            }
+                        },
+                        "setCollectionSponsor(address)": {
+                            "details": "In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x7623402e,  or in textual repr: setCollectionSponsor(address)",
+                            "params": {
+                                "sponsor": "Address of the sponsor from whose account funds will be debited for operations with the contract."
+                            }
+                        },
+                        "setCollectionSponsorCross((address,uint256))": {
+                            "details": "In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x84a1d5a8,  or in textual repr: setCollectionSponsorCross((address,uint256))",
+                            "params": {
+                                "sponsor": "Cross account address of the sponsor from whose account funds will be debited for operations with the contract."
+                            }
+                        },
+                        "setOwnerCross((address,uint256))": {
+                            "details": "Owner can be changed only by current ownerEVM selector for this function is: 0xe5c9913f,  or in textual repr: setOwnerCross((address,uint256))",
+                            "params": {
+                                "newOwner": "new owner cross account"
+                            }
+                        },
+                        "setProperties(uint256,(string,bytes)[])": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x14ed3a6e,  or in textual repr: setProperties(uint256,(string,bytes)[])",
+                            "params": {
+                                "properties": "settable properties",
+                                "tokenId": "ID of the token."
+                            }
+                        },
+                        "setProperty(uint256,string,bytes)": {
+                            "details": "Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x1752d67b,  or in textual repr: setProperty(uint256,string,bytes)",
+                            "params": {
+                                "key": "Property key.",
+                                "tokenId": "ID of the token.",
+                                "value": "Property value."
+                            }
+                        },
+                        "setTokenPropertyPermission(string,bool,bool,bool)": {
+                            "details": "Throws error if `msg.sender` is not admin or owner of the collection.EVM selector for this function is: 0x222d97fa,  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)",
+                            "params": {
+                                "collectionAdmin": "Permission to mutate property by collection admin if property is mutable.",
+                                "isMutable": "Permission to mutate property.",
+                                "key": "Property key.",
+                                "tokenOwner": "Permission to mutate property by token owner if property is mutable."
+                            }
+                        },
+                        "symbol()": {
+                            "details": "EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()"
+                        },
+                        "tokenByIndex(uint256)": {
+                            "details": "EVM selector for this function is: 0x4f6ccce7,  or in textual repr: tokenByIndex(uint256)",
+                            "params": {
+                                "index": "A counter less than `totalSupply()`"
+                            },
+                            "returns": {
+                                "_0": "The token identifier for the `index`th NFT,  (sort order not specified)"
+                            }
+                        },
+                        "tokenContractAddress(uint256)": {
+                            "details": "EVM selector for this function is: 0xab76fac6,  or in textual repr: tokenContractAddress(uint256)",
+                            "params": {
+                                "token": "ID of the token"
+                            }
+                        },
+                        "tokenOfOwnerByIndex(address,uint256)": {
+                            "details": "EVM selector for this function is: 0x2f745c59,  or in textual repr: tokenOfOwnerByIndex(address,uint256)"
+                        },
+                        "tokenURI(uint256)": {
+                            "details": "If the token has a `url` property and it is not empty, it is returned.  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.  If the collection property `baseURI` is empty or absent, return \"\" (empty string)  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).EVM selector for this function is: 0xc87b56dd,  or in textual repr: tokenURI(uint256)",
+                            "returns": {
+                                "_0": "token's const_metadata"
+                            }
+                        },
+                        "totalSupply()": {
+                            "details": "EVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()",
+                            "returns": {
+                                "_0": "A count of valid RFTs tracked by this contract, where each one of  them has an assigned and queryable owner not equal to the zero address"
+                            }
+                        },
+                        "transfer(address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenId": "The RFT to transfer"
+                            }
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)",
+                            "params": {
+                                "from": "The current owner of the NFT",
+                                "to": "The new owner",
+                                "tokenId": "The NFT to transfer"
+                            }
+                        },
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": {
+                            "details": "Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xd5cf430b,  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)",
+                            "params": {
+                                "to": "The new owner",
+                                "tokenId": "The RFT to transfer"
+                            }
+                        },
+                        "uniqueCollectionType()": {
+                            "details": "EVM selector for this function is: 0xd34b55b8,  or in textual repr: uniqueCollectionType()",
+                            "returns": {
+                                "_0": "`Fungible` or `NFT` or `ReFungible`"
+                            }
+                        }
+                    },
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "addCollectionAdmin(address)": "92e462c7",
+                        "addCollectionAdminCross((address,uint256))": "859aa7d6",
+                        "addToCollectionAllowList(address)": "67844fe6",
+                        "addToCollectionAllowListCross((address,uint256))": "a0184a3a",
+                        "allowed(address)": "d63a8e11",
+                        "approve(address,uint256)": "095ea7b3",
+                        "balanceOf(address)": "70a08231",
+                        "burn(uint256)": "42966c68",
+                        "burnFrom(address,uint256)": "79cc6790",
+                        "burnFromCross((address,uint256),uint256)": "bb2f5a58",
+                        "changeCollectionOwner(address)": "4f53e226",
+                        "collectionAdmins()": "5813216b",
+                        "collectionOwner()": "df727d3b",
+                        "collectionProperties(string[])": "285fb8e6",
+                        "collectionProperty(string)": "cf24fd6d",
+                        "collectionSponsor()": "6ec0a9f1",
+                        "confirmCollectionSponsorship()": "3c50e97a",
+                        "contractAddress()": "f6b4dfb4",
+                        "deleteCollectionProperties(string[])": "ee206ee3",
+                        "deleteCollectionProperty(string)": "7b7debce",
+                        "deleteProperty(uint256,string)": "066111d1",
+                        "finishMinting()": "7d64bcb4",
+                        "getApproved(uint256)": "081812fc",
+                        "hasCollectionPendingSponsor()": "058ac185",
+                        "isApprovedForAll(address,address)": "e985e9c5",
+                        "isOwnerOrAdmin(address)": "9811b0c7",
+                        "isOwnerOrAdminCross((address,uint256))": "3e75a905",
+                        "mint(address)": "6a627842",
+                        "mintWithTokenURI(address,string)": "45c17782",
+                        "mintingFinished()": "05d2035b",
+                        "name()": "06fdde03",
+                        "nextTokenId()": "75794a3c",
+                        "ownerOf(uint256)": "6352211e",
+                        "property(uint256,string)": "7228c327",
+                        "removeCollectionAdmin(address)": "fafd7b42",
+                        "removeCollectionAdminCross((address,uint256))": "6c0cd173",
+                        "removeCollectionSponsor()": "6e0326a3",
+                        "removeFromCollectionAllowList(address)": "85c51acb",
+                        "removeFromCollectionAllowListCross((address,uint256))": "09ba452a",
+                        "safeTransferFrom(address,address,uint256)": "42842e0e",
+                        "safeTransferFromWithData(address,address,uint256,bytes)": "60a11672",
+                        "setApprovalForAll(address,bool)": "a22cb465",
+                        "setCollectionAccess(uint8)": "41835d4c",
+                        "setCollectionLimit(string,bool)": "993b7fba",
+                        "setCollectionLimit(string,uint32)": "6a3841db",
+                        "setCollectionMintMode(bool)": "00018e84",
+                        "setCollectionNesting(bool)": "112d4586",
+                        "setCollectionNesting(bool,address[])": "64872396",
+                        "setCollectionProperties((string,bytes)[])": "50b26b2a",
+                        "setCollectionProperty(string,bytes)": "2f073f66",
+                        "setCollectionSponsor(address)": "7623402e",
+                        "setCollectionSponsorCross((address,uint256))": "84a1d5a8",
+                        "setOwnerCross((address,uint256))": "e5c9913f",
+                        "setProperties(uint256,(string,bytes)[])": "14ed3a6e",
+                        "setProperty(uint256,string,bytes)": "1752d67b",
+                        "setTokenPropertyPermission(string,bool,bool,bool)": "222d97fa",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "symbol()": "95d89b41",
+                        "tokenByIndex(uint256)": "4f6ccce7",
+                        "tokenContractAddress(uint256)": "ab76fac6",
+                        "tokenOfOwnerByIndex(address,uint256)": "2f745c59",
+                        "tokenURI(uint256)": "c87b56dd",
+                        "totalSupply()": "18160ddd",
+                        "transfer(address,uint256)": "a9059cbb",
+                        "transferFrom(address,address,uint256)": "23b872dd",
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": "d5cf430b",
+                        "uniqueCollectionType()": "d34b55b8"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MintingFinished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"addCollectionAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"newAdmin\",\"type\":\"tuple\"}],\"name\":\"addCollectionAdminCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"addToCollectionAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"addToCollectionAllowListCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"from\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burnFromCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"changeCollectionOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionAdmins\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionOwner\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"name\":\"collectionProperties\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple20[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"collectionProperty\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectionSponsor\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"field_0\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"field_1\",\"type\":\"uint256\"}],\"internalType\":\"struct Tuple23\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confirmCollectionSponsorship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"name\":\"deleteCollectionProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"deleteCollectionProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"deleteProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finishMinting\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasCollectionPendingSponsor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isOwnerOrAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"isOwnerOrAdminCross\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenUri\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"property\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"removeCollectionAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"admin\",\"type\":\"tuple\"}],\"name\":\"removeCollectionAdminCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeCollectionSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"removeFromCollectionAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"user\",\"type\":\"tuple\"}],\"name\":\"removeFromCollectionAllowListCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFromWithData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setCollectionAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"limit\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"value\",\"type\":\"uint32\"}],\"name\":\"setCollectionLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"limit\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setCollectionLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"mode\",\"type\":\"bool\"}],\"name\":\"setCollectionMintMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"}],\"name\":\"setCollectionNesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enable\",\"type\":\"bool\"},{\"internalType\":\"address[]\",\"name\":\"collections\",\"type\":\"address[]\"}],\"name\":\"setCollectionNesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple20[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"setCollectionProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setCollectionProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sponsor\",\"type\":\"address\"}],\"name\":\"setCollectionSponsor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"sponsor\",\"type\":\"tuple\"}],\"name\":\"setCollectionSponsorCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"newOwner\",\"type\":\"tuple\"}],\"name\":\"setOwnerCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple20[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"setProperties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isMutable\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"collectionAdmin\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"tokenOwner\",\"type\":\"bool\"}],\"name\":\"setTokenPropertyPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"}],\"name\":\"tokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"from\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"eth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sub\",\"type\":\"uint256\"}],\"internalType\":\"struct EthCrossAccount\",\"name\":\"to\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFromCross\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniqueCollectionType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addCollectionAdmin(address)\":{\"details\":\"EVM selector for this function is: 0x92e462c7,  or in textual repr: addCollectionAdmin(address)\",\"params\":{\"newAdmin\":\"Address of the added administrator.\"}},\"addCollectionAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x859aa7d6,  or in textual repr: addCollectionAdminCross((address,uint256))\",\"params\":{\"newAdmin\":\"Cross account administrator address.\"}},\"addToCollectionAllowList(address)\":{\"details\":\"EVM selector for this function is: 0x67844fe6,  or in textual repr: addToCollectionAllowList(address)\",\"params\":{\"user\":\"Address of a trusted user.\"}},\"addToCollectionAllowListCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0xa0184a3a,  or in textual repr: addToCollectionAllowListCross((address,uint256))\",\"params\":{\"user\":\"User cross account address.\"}},\"allowed(address)\":{\"details\":\"EVM selector for this function is: 0xd63a8e11,  or in textual repr: allowed(address)\",\"params\":{\"user\":\"User address to check.\"}},\"approve(address,uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)\"},\"balanceOf(address)\":{\"details\":\"RFTs assigned to the zero address are considered invalid, and this  function throws for queries about the zero address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)\",\"params\":{\"owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of RFTs owned by `owner`, possibly zero\"}},\"burn(uint256)\":{\"details\":\"Throws unless `msg.sender` is the current RFT owner, or an authorized  operator of the current owner.EVM selector for this function is: 0x42966c68,  or in textual repr: burn(uint256)\",\"params\":{\"tokenId\":\"The RFT to approve\"}},\"burnFrom(address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)\",\"params\":{\"from\":\"The current owner of the RFT\",\"tokenId\":\"The RFT to transfer\"}},\"burnFromCross((address,uint256),uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xbb2f5a58,  or in textual repr: burnFromCross((address,uint256),uint256)\",\"params\":{\"from\":\"The current owner of the RFT\",\"tokenId\":\"The RFT to transfer\"}},\"changeCollectionOwner(address)\":{\"details\":\"Owner can be changed only by current ownerEVM selector for this function is: 0x4f53e226,  or in textual repr: changeCollectionOwner(address)\",\"params\":{\"newOwner\":\"new owner account\"}},\"collectionAdmins()\":{\"details\":\"EVM selector for this function is: 0x5813216b,  or in textual repr: collectionAdmins()\",\"returns\":{\"_0\":\"Vector of tuples with admins address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa.\"}},\"collectionOwner()\":{\"details\":\"EVM selector for this function is: 0xdf727d3b,  or in textual repr: collectionOwner()\",\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If address is canonical then substrate mirror is zero and vice versa.\"}},\"collectionProperties(string[])\":{\"details\":\"EVM selector for this function is: 0x285fb8e6,  or in textual repr: collectionProperties(string[])\",\"params\":{\"keys\":\"Properties keys. Empty keys for all propertyes.\"},\"returns\":{\"_0\":\"Vector of properties key/value pairs.\"}},\"collectionProperty(string)\":{\"details\":\"Throws error if key not found.EVM selector for this function is: 0xcf24fd6d,  or in textual repr: collectionProperty(string)\",\"params\":{\"key\":\"Property key.\"},\"returns\":{\"_0\":\"bytes The property corresponding to the key.\"}},\"collectionSponsor()\":{\"details\":\"EVM selector for this function is: 0x6ec0a9f1,  or in textual repr: collectionSponsor()\",\"returns\":{\"_0\":\"Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \\\"Contract has no sponsor\\\" throw.\"}},\"confirmCollectionSponsorship()\":{\"details\":\"After setting the sponsor for the collection, it must be confirmed with this function.EVM selector for this function is: 0x3c50e97a,  or in textual repr: confirmCollectionSponsorship()\"},\"contractAddress()\":{\"details\":\"EVM selector for this function is: 0xf6b4dfb4,  or in textual repr: contractAddress()\"},\"deleteCollectionProperties(string[])\":{\"details\":\"EVM selector for this function is: 0xee206ee3,  or in textual repr: deleteCollectionProperties(string[])\",\"params\":{\"keys\":\"Properties keys.\"}},\"deleteCollectionProperty(string)\":{\"details\":\"EVM selector for this function is: 0x7b7debce,  or in textual repr: deleteCollectionProperty(string)\",\"params\":{\"key\":\"Property key.\"}},\"deleteProperty(uint256,string)\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x066111d1,  or in textual repr: deleteProperty(uint256,string)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\"}},\"finishMinting()\":{\"details\":\"Not implementedEVM selector for this function is: 0x7d64bcb4,  or in textual repr: finishMinting()\"},\"getApproved(uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x081812fc,  or in textual repr: getApproved(uint256)\"},\"hasCollectionPendingSponsor()\":{\"details\":\"EVM selector for this function is: 0x058ac185,  or in textual repr: hasCollectionPendingSponsor()\"},\"isApprovedForAll(address,address)\":{\"details\":\"Not implementedEVM selector for this function is: 0xe985e9c5,  or in textual repr: isApprovedForAll(address,address)\"},\"isOwnerOrAdmin(address)\":{\"details\":\"EVM selector for this function is: 0x9811b0c7,  or in textual repr: isOwnerOrAdmin(address)\",\"params\":{\"user\":\"account to verify\"},\"returns\":{\"_0\":\"\\\"true\\\" if account is the owner or admin\"}},\"isOwnerOrAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x3e75a905,  or in textual repr: isOwnerOrAdminCross((address,uint256))\",\"params\":{\"user\":\"User cross account to verify\"},\"returns\":{\"_0\":\"\\\"true\\\" if account is the owner or admin\"}},\"mint(address)\":{\"details\":\"EVM selector for this function is: 0x6a627842,  or in textual repr: mint(address)\",\"params\":{\"to\":\"The new owner\"},\"returns\":{\"_0\":\"uint256 The id of the newly minted token\"}},\"mintWithTokenURI(address,string)\":{\"details\":\"EVM selector for this function is: 0x45c17782,  or in textual repr: mintWithTokenURI(address,string)\",\"params\":{\"to\":\"The new owner\",\"tokenUri\":\"Token URI that would be stored in the NFT properties\"},\"returns\":{\"_0\":\"uint256 The id of the newly minted token\"}},\"mintingFinished()\":{\"details\":\"EVM selector for this function is: 0x05d2035b,  or in textual repr: mintingFinished()\"},\"name()\":{\"details\":\"EVM selector for this function is: 0x06fdde03,  or in textual repr: name()\"},\"nextTokenId()\":{\"details\":\"EVM selector for this function is: 0x75794a3c,  or in textual repr: nextTokenId()\"},\"ownerOf(uint256)\":{\"details\":\"RFTs assigned to zero address are considered invalid, and queries  about them do throw.  Returns special 0xffffffffffffffffffffffffffffffffffffffff address for  the tokens that are partially owned.EVM selector for this function is: 0x6352211e,  or in textual repr: ownerOf(uint256)\",\"params\":{\"tokenId\":\"The identifier for an RFT\"},\"returns\":{\"_0\":\"The address of the owner of the RFT\"}},\"property(uint256,string)\":{\"details\":\"Throws error if key not foundEVM selector for this function is: 0x7228c327,  or in textual repr: property(uint256,string)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\"},\"returns\":{\"_0\":\"Property value bytes\"}},\"removeCollectionAdmin(address)\":{\"details\":\"EVM selector for this function is: 0xfafd7b42,  or in textual repr: removeCollectionAdmin(address)\",\"params\":{\"admin\":\"Address of the removed administrator.\"}},\"removeCollectionAdminCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x6c0cd173,  or in textual repr: removeCollectionAdminCross((address,uint256))\",\"params\":{\"admin\":\"Cross account administrator address.\"}},\"removeCollectionSponsor()\":{\"details\":\"EVM selector for this function is: 0x6e0326a3,  or in textual repr: removeCollectionSponsor()\"},\"removeFromCollectionAllowList(address)\":{\"details\":\"EVM selector for this function is: 0x85c51acb,  or in textual repr: removeFromCollectionAllowList(address)\",\"params\":{\"user\":\"Address of a removed user.\"}},\"removeFromCollectionAllowListCross((address,uint256))\":{\"details\":\"EVM selector for this function is: 0x09ba452a,  or in textual repr: removeFromCollectionAllowListCross((address,uint256))\",\"params\":{\"user\":\"User cross account address.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Not implementedEVM selector for this function is: 0x42842e0e,  or in textual repr: safeTransferFrom(address,address,uint256)\"},\"safeTransferFromWithData(address,address,uint256,bytes)\":{\"details\":\"Not implementedEVM selector for this function is: 0x60a11672,  or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Not implementedEVM selector for this function is: 0xa22cb465,  or in textual repr: setApprovalForAll(address,bool)\"},\"setCollectionAccess(uint8)\":{\"details\":\"EVM selector for this function is: 0x41835d4c,  or in textual repr: setCollectionAccess(uint8)\",\"params\":{\"mode\":\"Access mode \\t0 for Normal \\t1 for AllowList\"}},\"setCollectionLimit(string,bool)\":{\"details\":\"Throws error if limit not found.EVM selector for this function is: 0x993b7fba,  or in textual repr: setCollectionLimit(string,bool)\",\"params\":{\"limit\":\"Name of the limit. Valid names: \\t\\\"ownerCanTransfer\\\", \\t\\\"ownerCanDestroy\\\", \\t\\\"transfersEnabled\\\"\",\"value\":\"Value of the limit.\"}},\"setCollectionLimit(string,uint32)\":{\"details\":\"Throws error if limit not found.EVM selector for this function is: 0x6a3841db,  or in textual repr: setCollectionLimit(string,uint32)\",\"params\":{\"limit\":\"Name of the limit. Valid names: \\t\\\"accountTokenOwnershipLimit\\\", \\t\\\"sponsoredDataSize\\\", \\t\\\"sponsoredDataRateLimit\\\", \\t\\\"tokenLimit\\\", \\t\\\"sponsorTransferTimeout\\\", \\t\\\"sponsorApproveTimeout\\\"\",\"value\":\"Value of the limit.\"}},\"setCollectionMintMode(bool)\":{\"details\":\"EVM selector for this function is: 0x00018e84,  or in textual repr: setCollectionMintMode(bool)\",\"params\":{\"mode\":\"Enable if \\\"true\\\".\"}},\"setCollectionNesting(bool)\":{\"details\":\"EVM selector for this function is: 0x112d4586,  or in textual repr: setCollectionNesting(bool)\",\"params\":{\"enable\":\"If \\\"true\\\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'\"}},\"setCollectionNesting(bool,address[])\":{\"details\":\"EVM selector for this function is: 0x64872396,  or in textual repr: setCollectionNesting(bool,address[])\",\"params\":{\"collections\":\"Addresses of collections that will be available for nesting.\",\"enable\":\"If \\\"true\\\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'\"}},\"setCollectionProperties((string,bytes)[])\":{\"details\":\"EVM selector for this function is: 0x50b26b2a,  or in textual repr: setCollectionProperties((string,bytes)[])\",\"params\":{\"properties\":\"Vector of properties key/value pair.\"}},\"setCollectionProperty(string,bytes)\":{\"details\":\"EVM selector for this function is: 0x2f073f66,  or in textual repr: setCollectionProperty(string,bytes)\",\"params\":{\"key\":\"Property key.\",\"value\":\"Propery value.\"}},\"setCollectionSponsor(address)\":{\"details\":\"In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x7623402e,  or in textual repr: setCollectionSponsor(address)\",\"params\":{\"sponsor\":\"Address of the sponsor from whose account funds will be debited for operations with the contract.\"}},\"setCollectionSponsorCross((address,uint256))\":{\"details\":\"In order for sponsorship to work, it must be confirmed on behalf of the sponsor.EVM selector for this function is: 0x84a1d5a8,  or in textual repr: setCollectionSponsorCross((address,uint256))\",\"params\":{\"sponsor\":\"Cross account address of the sponsor from whose account funds will be debited for operations with the contract.\"}},\"setOwnerCross((address,uint256))\":{\"details\":\"Owner can be changed only by current ownerEVM selector for this function is: 0xe5c9913f,  or in textual repr: setOwnerCross((address,uint256))\",\"params\":{\"newOwner\":\"new owner cross account\"}},\"setProperties(uint256,(string,bytes)[])\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x14ed3a6e,  or in textual repr: setProperties(uint256,(string,bytes)[])\",\"params\":{\"properties\":\"settable properties\",\"tokenId\":\"ID of the token.\"}},\"setProperty(uint256,string,bytes)\":{\"details\":\"Throws error if `msg.sender` has no permission to edit the property.EVM selector for this function is: 0x1752d67b,  or in textual repr: setProperty(uint256,string,bytes)\",\"params\":{\"key\":\"Property key.\",\"tokenId\":\"ID of the token.\",\"value\":\"Property value.\"}},\"setTokenPropertyPermission(string,bool,bool,bool)\":{\"details\":\"Throws error if `msg.sender` is not admin or owner of the collection.EVM selector for this function is: 0x222d97fa,  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)\",\"params\":{\"collectionAdmin\":\"Permission to mutate property by collection admin if property is mutable.\",\"isMutable\":\"Permission to mutate property.\",\"key\":\"Property key.\",\"tokenOwner\":\"Permission to mutate property by token owner if property is mutable.\"}},\"symbol()\":{\"details\":\"EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()\"},\"tokenByIndex(uint256)\":{\"details\":\"EVM selector for this function is: 0x4f6ccce7,  or in textual repr: tokenByIndex(uint256)\",\"params\":{\"index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `index`th NFT,  (sort order not specified)\"}},\"tokenContractAddress(uint256)\":{\"details\":\"EVM selector for this function is: 0xab76fac6,  or in textual repr: tokenContractAddress(uint256)\",\"params\":{\"token\":\"ID of the token\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"EVM selector for this function is: 0x2f745c59,  or in textual repr: tokenOfOwnerByIndex(address,uint256)\"},\"tokenURI(uint256)\":{\"details\":\"If the token has a `url` property and it is not empty, it is returned.  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.  If the collection property `baseURI` is empty or absent, return \\\"\\\" (empty string)  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).EVM selector for this function is: 0xc87b56dd,  or in textual repr: tokenURI(uint256)\",\"returns\":{\"_0\":\"token's const_metadata\"}},\"totalSupply()\":{\"details\":\"EVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()\",\"returns\":{\"_0\":\"A count of valid RFTs tracked by this contract, where each one of  them has an assigned and queryable owner not equal to the zero address\"}},\"transfer(address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)\",\"params\":{\"to\":\"The new owner\",\"tokenId\":\"The RFT to transfer\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner or an authorized  operator for this RFT. Throws if `from` is not the current owner. Throws  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)\",\"params\":{\"from\":\"The current owner of the NFT\",\"to\":\"The new owner\",\"tokenId\":\"The NFT to transfer\"}},\"transferFromCross((address,uint256),(address,uint256),uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner. Throws if `to`  is the zero address. Throws if `tokenId` is not a valid RFT.  Throws if RFT pieces have multiple owners.EVM selector for this function is: 0xd5cf430b,  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)\",\"params\":{\"to\":\"The new owner\",\"tokenId\":\"The RFT to transfer\"}},\"uniqueCollectionType()\":{\"details\":\"EVM selector for this function is: 0xd34b55b8,  or in textual repr: uniqueCollectionType()\",\"returns\":{\"_0\":\"`Fungible` or `NFT` or `ReFungible`\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addCollectionAdmin(address)\":{\"notice\":\"Add collection admin.\"},\"addCollectionAdminCross((address,uint256))\":{\"notice\":\"Add collection admin.\"},\"addToCollectionAllowList(address)\":{\"notice\":\"Add the user to the allowed list.\"},\"addToCollectionAllowListCross((address,uint256))\":{\"notice\":\"Add user to allowed list.\"},\"allowed(address)\":{\"notice\":\"Checks that user allowed to operate with collection.\"},\"balanceOf(address)\":{\"notice\":\"Count all RFTs assigned to an owner\"},\"burn(uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"burnFrom(address,uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"burnFromCross((address,uint256),uint256)\":{\"notice\":\"Burns a specific ERC721 token.\"},\"changeCollectionOwner(address)\":{\"notice\":\"Changes collection owner to another account\"},\"collectionAdmins()\":{\"notice\":\"Get collection administrators\"},\"collectionOwner()\":{\"notice\":\"Get collection owner.\"},\"collectionProperties(string[])\":{\"notice\":\"Get collection properties.\"},\"collectionProperty(string)\":{\"notice\":\"Get collection property.\"},\"collectionSponsor()\":{\"notice\":\"Get current sponsor.\"},\"confirmCollectionSponsorship()\":{\"notice\":\"Collection sponsorship confirmation.\"},\"contractAddress()\":{\"notice\":\"Get contract address.\"},\"deleteCollectionProperties(string[])\":{\"notice\":\"Delete collection properties.\"},\"deleteCollectionProperty(string)\":{\"notice\":\"Delete collection property.\"},\"deleteProperty(uint256,string)\":{\"notice\":\"Delete token property value.\"},\"hasCollectionPendingSponsor()\":{\"notice\":\"Whether there is a pending sponsor.\"},\"isOwnerOrAdmin(address)\":{\"notice\":\"Check that account is the owner or admin of the collection\"},\"isOwnerOrAdminCross((address,uint256))\":{\"notice\":\"Check that account is the owner or admin of the collection\"},\"mint(address)\":{\"notice\":\"Function to mint token.\"},\"mintWithTokenURI(address,string)\":{\"notice\":\"Function to mint token with the given tokenUri.\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"nextTokenId()\":{\"notice\":\"Returns next free RFT ID.\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an RFT\"},\"property(uint256,string)\":{\"notice\":\"Get token property value.\"},\"removeCollectionAdmin(address)\":{\"notice\":\"Remove collection admin.\"},\"removeCollectionAdminCross((address,uint256))\":{\"notice\":\"Remove collection admin.\"},\"removeCollectionSponsor()\":{\"notice\":\"Remove collection sponsor.\"},\"removeFromCollectionAllowList(address)\":{\"notice\":\"Remove the user from the allowed list.\"},\"removeFromCollectionAllowListCross((address,uint256))\":{\"notice\":\"Remove user from allowed list.\"},\"setCollectionAccess(uint8)\":{\"notice\":\"Set the collection access method.\"},\"setCollectionLimit(string,bool)\":{\"notice\":\"Set limits for the collection.\"},\"setCollectionLimit(string,uint32)\":{\"notice\":\"Set limits for the collection.\"},\"setCollectionMintMode(bool)\":{\"notice\":\"Switch permission for minting.\"},\"setCollectionNesting(bool)\":{\"notice\":\"Toggle accessibility of collection nesting.\"},\"setCollectionNesting(bool,address[])\":{\"notice\":\"Toggle accessibility of collection nesting.\"},\"setCollectionProperties((string,bytes)[])\":{\"notice\":\"Set collection properties.\"},\"setCollectionProperty(string,bytes)\":{\"notice\":\"Set collection property.\"},\"setCollectionSponsor(address)\":{\"notice\":\"Set the sponsor of the collection.\"},\"setCollectionSponsorCross((address,uint256))\":{\"notice\":\"Set the sponsor of the collection.\"},\"setOwnerCross((address,uint256))\":{\"notice\":\"Changes collection owner to another account\"},\"setProperties(uint256,(string,bytes)[])\":{\"notice\":\"Set token properties value.\"},\"setProperty(uint256,string,bytes)\":{\"notice\":\"Set token property value.\"},\"setTokenPropertyPermission(string,bool,bool,bool)\":{\"notice\":\"Set permissions for token property.\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid RFTs\"},\"tokenContractAddress(uint256)\":{\"notice\":\"Returns EVM address for refungible token\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Not implemented\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalSupply()\":{\"notice\":\"Count RFTs tracked by this contract\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer ownership of an RFT\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST\"},\"transferFromCross((address,uint256),(address,uint256),uint256)\":{\"notice\":\"Transfer ownership of an RFT\"},\"uniqueCollectionType()\":{\"notice\":\"Returns collection type\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":\"UniqueRefungible\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {
+                        "addCollectionAdmin(address)": {
+                            "notice": "Add collection admin."
+                        },
+                        "addCollectionAdminCross((address,uint256))": {
+                            "notice": "Add collection admin."
+                        },
+                        "addToCollectionAllowList(address)": {
+                            "notice": "Add the user to the allowed list."
+                        },
+                        "addToCollectionAllowListCross((address,uint256))": {
+                            "notice": "Add user to allowed list."
+                        },
+                        "allowed(address)": {
+                            "notice": "Checks that user allowed to operate with collection."
+                        },
+                        "balanceOf(address)": {
+                            "notice": "Count all RFTs assigned to an owner"
+                        },
+                        "burn(uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "burnFrom(address,uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "burnFromCross((address,uint256),uint256)": {
+                            "notice": "Burns a specific ERC721 token."
+                        },
+                        "changeCollectionOwner(address)": {
+                            "notice": "Changes collection owner to another account"
+                        },
+                        "collectionAdmins()": {
+                            "notice": "Get collection administrators"
+                        },
+                        "collectionOwner()": {
+                            "notice": "Get collection owner."
+                        },
+                        "collectionProperties(string[])": {
+                            "notice": "Get collection properties."
+                        },
+                        "collectionProperty(string)": {
+                            "notice": "Get collection property."
+                        },
+                        "collectionSponsor()": {
+                            "notice": "Get current sponsor."
+                        },
+                        "confirmCollectionSponsorship()": {
+                            "notice": "Collection sponsorship confirmation."
+                        },
+                        "contractAddress()": {
+                            "notice": "Get contract address."
+                        },
+                        "deleteCollectionProperties(string[])": {
+                            "notice": "Delete collection properties."
+                        },
+                        "deleteCollectionProperty(string)": {
+                            "notice": "Delete collection property."
+                        },
+                        "deleteProperty(uint256,string)": {
+                            "notice": "Delete token property value."
+                        },
+                        "hasCollectionPendingSponsor()": {
+                            "notice": "Whether there is a pending sponsor."
+                        },
+                        "isOwnerOrAdmin(address)": {
+                            "notice": "Check that account is the owner or admin of the collection"
+                        },
+                        "isOwnerOrAdminCross((address,uint256))": {
+                            "notice": "Check that account is the owner or admin of the collection"
+                        },
+                        "mint(address)": {
+                            "notice": "Function to mint token."
+                        },
+                        "mintWithTokenURI(address,string)": {
+                            "notice": "Function to mint token with the given tokenUri."
+                        },
+                        "name()": {
+                            "notice": "A descriptive name for a collection of NFTs in this contract"
+                        },
+                        "nextTokenId()": {
+                            "notice": "Returns next free RFT ID."
+                        },
+                        "ownerOf(uint256)": {
+                            "notice": "Find the owner of an RFT"
+                        },
+                        "property(uint256,string)": {
+                            "notice": "Get token property value."
+                        },
+                        "removeCollectionAdmin(address)": {
+                            "notice": "Remove collection admin."
+                        },
+                        "removeCollectionAdminCross((address,uint256))": {
+                            "notice": "Remove collection admin."
+                        },
+                        "removeCollectionSponsor()": {
+                            "notice": "Remove collection sponsor."
+                        },
+                        "removeFromCollectionAllowList(address)": {
+                            "notice": "Remove the user from the allowed list."
+                        },
+                        "removeFromCollectionAllowListCross((address,uint256))": {
+                            "notice": "Remove user from allowed list."
+                        },
+                        "setCollectionAccess(uint8)": {
+                            "notice": "Set the collection access method."
+                        },
+                        "setCollectionLimit(string,bool)": {
+                            "notice": "Set limits for the collection."
+                        },
+                        "setCollectionLimit(string,uint32)": {
+                            "notice": "Set limits for the collection."
+                        },
+                        "setCollectionMintMode(bool)": {
+                            "notice": "Switch permission for minting."
+                        },
+                        "setCollectionNesting(bool)": {
+                            "notice": "Toggle accessibility of collection nesting."
+                        },
+                        "setCollectionNesting(bool,address[])": {
+                            "notice": "Toggle accessibility of collection nesting."
+                        },
+                        "setCollectionProperties((string,bytes)[])": {
+                            "notice": "Set collection properties."
+                        },
+                        "setCollectionProperty(string,bytes)": {
+                            "notice": "Set collection property."
+                        },
+                        "setCollectionSponsor(address)": {
+                            "notice": "Set the sponsor of the collection."
+                        },
+                        "setCollectionSponsorCross((address,uint256))": {
+                            "notice": "Set the sponsor of the collection."
+                        },
+                        "setOwnerCross((address,uint256))": {
+                            "notice": "Changes collection owner to another account"
+                        },
+                        "setProperties(uint256,(string,bytes)[])": {
+                            "notice": "Set token properties value."
+                        },
+                        "setProperty(uint256,string,bytes)": {
+                            "notice": "Set token property value."
+                        },
+                        "setTokenPropertyPermission(string,bool,bool,bool)": {
+                            "notice": "Set permissions for token property."
+                        },
+                        "symbol()": {
+                            "notice": "An abbreviated name for NFTs in this contract"
+                        },
+                        "tokenByIndex(uint256)": {
+                            "notice": "Enumerate valid RFTs"
+                        },
+                        "tokenContractAddress(uint256)": {
+                            "notice": "Returns EVM address for refungible token"
+                        },
+                        "tokenOfOwnerByIndex(address,uint256)": {
+                            "notice": "Not implemented"
+                        },
+                        "tokenURI(uint256)": {
+                            "notice": "A distinct Uniform Resource Identifier (URI) for a given asset."
+                        },
+                        "totalSupply()": {
+                            "notice": "Count RFTs tracked by this contract"
+                        },
+                        "transfer(address,uint256)": {
+                            "notice": "Transfer ownership of an RFT"
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "notice": "Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE  THEY MAY BE PERMANENTLY LOST"
+                        },
+                        "transferFromCross((address,uint256),(address,uint256),uint256)": {
+                            "notice": "Transfer ownership of an RFT"
+                        },
+                        "uniqueCollectionType()": {
+                            "notice": "Returns collection type"
+                        }
+                    },
+                    "version": 1
+                }
+            }
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol": {
+            "Dummy": {
+                "abi": [],
+                "devdoc": {
+                    "details": "common stubs holder",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"common stubs holder\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":\"Dummy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC1633": {
+                "abi": [
+                    {
+                        "inputs": [],
+                        "name": "parentToken",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "parentTokenId",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0x5755c3f2",
+                    "kind": "dev",
+                    "methods": {
+                        "parentToken()": {
+                            "details": "EVM selector for this function is: 0x80a54001,  or in textual repr: parentToken()"
+                        },
+                        "parentTokenId()": {
+                            "details": "EVM selector for this function is: 0xd7f083f3,  or in textual repr: parentTokenId()"
+                        }
+                    },
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "parentToken()": "80a54001",
+                        "parentTokenId()": "d7f083f3",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"parentToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parentTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0x5755c3f2\",\"kind\":\"dev\",\"methods\":{\"parentToken()\":{\"details\":\"EVM selector for this function is: 0x80a54001,  or in textual repr: parentToken()\"},\"parentTokenId()\":{\"details\":\"EVM selector for this function is: 0xd7f083f3,  or in textual repr: parentTokenId()\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":\"ERC1633\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC165": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC20": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "spender",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "uint256",
+                                "name": "value",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "uint256",
+                                "name": "value",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "spender",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "allowance",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "spender",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "approve",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "balanceOf",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "decimals",
+                        "outputs": [
+                            {
+                                "internalType": "uint8",
+                                "name": "",
+                                "type": "uint8"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "name",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "symbol",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "totalSupply",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transfer",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFrom",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "Implementation of the basic standard token. https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.mdthe ERC-165 identifier for this interface is 0x942e8b22",
+                    "kind": "dev",
+                    "methods": {
+                        "allowance(address,address)": {
+                            "details": "Function to check the amount of tokens that an owner allowed to a spender.EVM selector for this function is: 0xdd62ed3e,  or in textual repr: allowance(address,address)",
+                            "params": {
+                                "owner": "address The address which owns the funds.",
+                                "spender": "address The address which will spend the funds."
+                            },
+                            "returns": {
+                                "_0": "A uint256 specifying the amount of tokens still available for the spender."
+                            }
+                        },
+                        "approve(address,uint256)": {
+                            "details": "Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729EVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)",
+                            "params": {
+                                "amount": "The amount of tokens to be spent.",
+                                "spender": "The address which will spend the funds."
+                            }
+                        },
+                        "balanceOf(address)": {
+                            "details": "Gets the balance of the specified address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)",
+                            "params": {
+                                "owner": "The address to query the balance of."
+                            },
+                            "returns": {
+                                "_0": "An uint256 representing the amount owned by the passed address."
+                            }
+                        },
+                        "decimals()": {
+                            "details": "Not supportedEVM selector for this function is: 0x313ce567,  or in textual repr: decimals()"
+                        },
+                        "name()": {
+                            "details": "EVM selector for this function is: 0x06fdde03,  or in textual repr: name()",
+                            "returns": {
+                                "_0": "the name of the token."
+                            }
+                        },
+                        "symbol()": {
+                            "details": "EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()",
+                            "returns": {
+                                "_0": "the symbol of the token."
+                            }
+                        },
+                        "totalSupply()": {
+                            "details": "Total number of tokens in existenceEVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()"
+                        },
+                        "transfer(address,uint256)": {
+                            "details": "Transfer token for a specified addressEVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)",
+                            "params": {
+                                "amount": "The amount to be transferred.",
+                                "to": "The address to transfer to."
+                            }
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "details": "Transfer tokens from one address to anotherEVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)",
+                            "params": {
+                                "amount": "uint256 the amount of tokens to be transferred",
+                                "from": "address The address which you want to send tokens from",
+                                "to": "address The address which you want to transfer to"
+                            }
+                        }
+                    },
+                    "title": "Standard ERC20 token",
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "allowance(address,address)": "dd62ed3e",
+                        "approve(address,uint256)": "095ea7b3",
+                        "balanceOf(address)": "70a08231",
+                        "decimals()": "313ce567",
+                        "name()": "06fdde03",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "symbol()": "95d89b41",
+                        "totalSupply()": "18160ddd",
+                        "transfer(address,uint256)": "a9059cbb",
+                        "transferFrom(address,address,uint256)": "23b872dd"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the basic standard token. https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.mdthe ERC-165 identifier for this interface is 0x942e8b22\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.EVM selector for this function is: 0xdd62ed3e,  or in textual repr: allowance(address,address)\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"returns\":{\"_0\":\"A uint256 specifying the amount of tokens still available for the spender.\"}},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729EVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)\",\"params\":{\"amount\":\"The amount of tokens to be spent.\",\"spender\":\"The address which will spend the funds.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"returns\":{\"_0\":\"An uint256 representing the amount owned by the passed address.\"}},\"decimals()\":{\"details\":\"Not supportedEVM selector for this function is: 0x313ce567,  or in textual repr: decimals()\"},\"name()\":{\"details\":\"EVM selector for this function is: 0x06fdde03,  or in textual repr: name()\",\"returns\":{\"_0\":\"the name of the token.\"}},\"symbol()\":{\"details\":\"EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()\",\"returns\":{\"_0\":\"the symbol of the token.\"}},\"totalSupply()\":{\"details\":\"Total number of tokens in existenceEVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()\"},\"transfer(address,uint256)\":{\"details\":\"Transfer token for a specified addressEVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)\",\"params\":{\"amount\":\"The amount to be transferred.\",\"to\":\"The address to transfer to.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to anotherEVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)\",\"params\":{\"amount\":\"uint256 the amount of tokens to be transferred\",\"from\":\"address The address which you want to send tokens from\",\"to\":\"address The address which you want to transfer to\"}}},\"title\":\"Standard ERC20 token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC20Events": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "spender",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "uint256",
+                                "name": "value",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "uint256",
+                                "name": "value",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    }
+                ],
+                "devdoc": {
+                    "details": "inlined interface",
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {}
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"inlined interface\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":\"ERC20Events\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "ERC20UniqueExtensions": {
+                "abi": [
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFrom",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "repartition",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "details": "the ERC-165 identifier for this interface is 0xab8deb37",
+                    "kind": "dev",
+                    "methods": {
+                        "burnFrom(address,uint256)": {
+                            "details": "Function that burns an amount of the token of a given account, deducting from the sender's allowance for said account.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)",
+                            "params": {
+                                "amount": "The amount that will be burnt.",
+                                "from": "The account whose tokens will be burnt."
+                            }
+                        },
+                        "repartition(uint256)": {
+                            "details": "Function that changes total amount of the tokens.  Throws if `msg.sender` doesn't owns all of the tokens.EVM selector for this function is: 0xd2418ca7,  or in textual repr: repartition(uint256)",
+                            "params": {
+                                "amount": "New total amount of the tokens."
+                            }
+                        }
+                    },
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "burnFrom(address,uint256)": "79cc6790",
+                        "repartition(uint256)": "d2418ca7",
+                        "supportsInterface(bytes4)": "01ffc9a7"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repartition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is 0xab8deb37\",\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256)\":{\"details\":\"Function that burns an amount of the token of a given account, deducting from the sender's allowance for said account.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)\",\"params\":{\"amount\":\"The amount that will be burnt.\",\"from\":\"The account whose tokens will be burnt.\"}},\"repartition(uint256)\":{\"details\":\"Function that changes total amount of the tokens.  Throws if `msg.sender` doesn't owns all of the tokens.EVM selector for this function is: 0xd2418ca7,  or in textual repr: repartition(uint256)\",\"params\":{\"amount\":\"New total amount of the tokens.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":\"ERC20UniqueExtensions\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            },
+            "UniqueRefungibleToken": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "spender",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "uint256",
+                                "name": "value",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Approval",
+                        "type": "event"
+                    },
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": true,
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "uint256",
+                                "name": "value",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "Transfer",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "spender",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "allowance",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "spender",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "approve",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "owner",
+                                "type": "address"
+                            }
+                        ],
+                        "name": "balanceOf",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "burnFrom",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "decimals",
+                        "outputs": [
+                            {
+                                "internalType": "uint8",
+                                "name": "",
+                                "type": "uint8"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "name",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "parentToken",
+                        "outputs": [
+                            {
+                                "internalType": "address",
+                                "name": "",
+                                "type": "address"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "parentTokenId",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "repartition",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "bytes4",
+                                "name": "interfaceID",
+                                "type": "bytes4"
+                            }
+                        ],
+                        "name": "supportsInterface",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "symbol",
+                        "outputs": [
+                            {
+                                "internalType": "string",
+                                "name": "",
+                                "type": "string"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [],
+                        "name": "totalSupply",
+                        "outputs": [
+                            {
+                                "internalType": "uint256",
+                                "name": "",
+                                "type": "uint256"
+                            }
+                        ],
+                        "stateMutability": "view",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transfer",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "from",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "address",
+                                "name": "to",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "amount",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "transferFrom",
+                        "outputs": [
+                            {
+                                "internalType": "bool",
+                                "name": "",
+                                "type": "bool"
+                            }
+                        ],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "kind": "dev",
+                    "methods": {
+                        "allowance(address,address)": {
+                            "details": "Function to check the amount of tokens that an owner allowed to a spender.EVM selector for this function is: 0xdd62ed3e,  or in textual repr: allowance(address,address)",
+                            "params": {
+                                "owner": "address The address which owns the funds.",
+                                "spender": "address The address which will spend the funds."
+                            },
+                            "returns": {
+                                "_0": "A uint256 specifying the amount of tokens still available for the spender."
+                            }
+                        },
+                        "approve(address,uint256)": {
+                            "details": "Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729EVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)",
+                            "params": {
+                                "amount": "The amount of tokens to be spent.",
+                                "spender": "The address which will spend the funds."
+                            }
+                        },
+                        "balanceOf(address)": {
+                            "details": "Gets the balance of the specified address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)",
+                            "params": {
+                                "owner": "The address to query the balance of."
+                            },
+                            "returns": {
+                                "_0": "An uint256 representing the amount owned by the passed address."
+                            }
+                        },
+                        "burnFrom(address,uint256)": {
+                            "details": "Function that burns an amount of the token of a given account, deducting from the sender's allowance for said account.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)",
+                            "params": {
+                                "amount": "The amount that will be burnt.",
+                                "from": "The account whose tokens will be burnt."
+                            }
+                        },
+                        "decimals()": {
+                            "details": "Not supportedEVM selector for this function is: 0x313ce567,  or in textual repr: decimals()"
+                        },
+                        "name()": {
+                            "details": "EVM selector for this function is: 0x06fdde03,  or in textual repr: name()",
+                            "returns": {
+                                "_0": "the name of the token."
+                            }
+                        },
+                        "parentToken()": {
+                            "details": "EVM selector for this function is: 0x80a54001,  or in textual repr: parentToken()"
+                        },
+                        "parentTokenId()": {
+                            "details": "EVM selector for this function is: 0xd7f083f3,  or in textual repr: parentTokenId()"
+                        },
+                        "repartition(uint256)": {
+                            "details": "Function that changes total amount of the tokens.  Throws if `msg.sender` doesn't owns all of the tokens.EVM selector for this function is: 0xd2418ca7,  or in textual repr: repartition(uint256)",
+                            "params": {
+                                "amount": "New total amount of the tokens."
+                            }
+                        },
+                        "symbol()": {
+                            "details": "EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()",
+                            "returns": {
+                                "_0": "the symbol of the token."
+                            }
+                        },
+                        "totalSupply()": {
+                            "details": "Total number of tokens in existenceEVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()"
+                        },
+                        "transfer(address,uint256)": {
+                            "details": "Transfer token for a specified addressEVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)",
+                            "params": {
+                                "amount": "The amount to be transferred.",
+                                "to": "The address to transfer to."
+                            }
+                        },
+                        "transferFrom(address,address,uint256)": {
+                            "details": "Transfer tokens from one address to anotherEVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)",
+                            "params": {
+                                "amount": "uint256 the amount of tokens to be transferred",
+                                "from": "address The address which you want to send tokens from",
+                                "to": "address The address which you want to transfer to"
+                            }
+                        }
+                    },
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "",
+                        "opcodes": "",
+                        "sourceMap": ""
+                    },
+                    "gasEstimates": null,
+                    "methodIdentifiers": {
+                        "allowance(address,address)": "dd62ed3e",
+                        "approve(address,uint256)": "095ea7b3",
+                        "balanceOf(address)": "70a08231",
+                        "burnFrom(address,uint256)": "79cc6790",
+                        "decimals()": "313ce567",
+                        "name()": "06fdde03",
+                        "parentToken()": "80a54001",
+                        "parentTokenId()": "d7f083f3",
+                        "repartition(uint256)": "d2418ca7",
+                        "supportsInterface(bytes4)": "01ffc9a7",
+                        "symbol()": "95d89b41",
+                        "totalSupply()": "18160ddd",
+                        "transfer(address,uint256)": "a9059cbb",
+                        "transferFrom(address,address,uint256)": "23b872dd"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parentToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parentTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repartition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.EVM selector for this function is: 0xdd62ed3e,  or in textual repr: allowance(address,address)\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"returns\":{\"_0\":\"A uint256 specifying the amount of tokens still available for the spender.\"}},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729EVM selector for this function is: 0x095ea7b3,  or in textual repr: approve(address,uint256)\",\"params\":{\"amount\":\"The amount of tokens to be spent.\",\"spender\":\"The address which will spend the funds.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.EVM selector for this function is: 0x70a08231,  or in textual repr: balanceOf(address)\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"returns\":{\"_0\":\"An uint256 representing the amount owned by the passed address.\"}},\"burnFrom(address,uint256)\":{\"details\":\"Function that burns an amount of the token of a given account, deducting from the sender's allowance for said account.EVM selector for this function is: 0x79cc6790,  or in textual repr: burnFrom(address,uint256)\",\"params\":{\"amount\":\"The amount that will be burnt.\",\"from\":\"The account whose tokens will be burnt.\"}},\"decimals()\":{\"details\":\"Not supportedEVM selector for this function is: 0x313ce567,  or in textual repr: decimals()\"},\"name()\":{\"details\":\"EVM selector for this function is: 0x06fdde03,  or in textual repr: name()\",\"returns\":{\"_0\":\"the name of the token.\"}},\"parentToken()\":{\"details\":\"EVM selector for this function is: 0x80a54001,  or in textual repr: parentToken()\"},\"parentTokenId()\":{\"details\":\"EVM selector for this function is: 0xd7f083f3,  or in textual repr: parentTokenId()\"},\"repartition(uint256)\":{\"details\":\"Function that changes total amount of the tokens.  Throws if `msg.sender` doesn't owns all of the tokens.EVM selector for this function is: 0xd2418ca7,  or in textual repr: repartition(uint256)\",\"params\":{\"amount\":\"New total amount of the tokens.\"}},\"symbol()\":{\"details\":\"EVM selector for this function is: 0x95d89b41,  or in textual repr: symbol()\",\"returns\":{\"_0\":\"the symbol of the token.\"}},\"totalSupply()\":{\"details\":\"Total number of tokens in existenceEVM selector for this function is: 0x18160ddd,  or in textual repr: totalSupply()\"},\"transfer(address,uint256)\":{\"details\":\"Transfer token for a specified addressEVM selector for this function is: 0xa9059cbb,  or in textual repr: transfer(address,uint256)\",\"params\":{\"amount\":\"The amount to be transferred.\",\"to\":\"The address to transfer to.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to anotherEVM selector for this function is: 0x23b872dd,  or in textual repr: transferFrom(address,address,uint256)\",\"params\":{\"amount\":\"uint256 the amount of tokens to be transferred\",\"from\":\"address The address which you want to send tokens from\",\"to\":\"address The address which you want to transfer to\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":\"UniqueRefungibleToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            }
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol": {
+            "EvmToSubstrate": {
+                "abi": [
+                    {
+                        "anonymous": false,
+                        "inputs": [
+                            {
+                                "indexed": false,
+                                "internalType": "address",
+                                "name": "_toEth",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "uint256",
+                                "name": "_toSub",
+                                "type": "uint256"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "address",
+                                "name": "_collection",
+                                "type": "address"
+                            },
+                            {
+                                "indexed": false,
+                                "internalType": "uint256",
+                                "name": "_tokenId",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "MintToSub",
+                        "type": "event"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "_collection",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "_substrateReceiver",
+                                "type": "uint256"
+                            }
+                        ],
+                        "name": "mintToSubstrate",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "_collection",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "_substrateReceiver",
+                                "type": "uint256"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "field_0",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "field_1",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Tuple21[]",
+                                "name": "_properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "mintToSubstrateBulkProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    },
+                    {
+                        "inputs": [
+                            {
+                                "internalType": "address",
+                                "name": "_collection",
+                                "type": "address"
+                            },
+                            {
+                                "internalType": "uint256",
+                                "name": "_substrateReceiver",
+                                "type": "uint256"
+                            },
+                            {
+                                "components": [
+                                    {
+                                        "internalType": "string",
+                                        "name": "key",
+                                        "type": "string"
+                                    },
+                                    {
+                                        "internalType": "bytes",
+                                        "name": "value",
+                                        "type": "bytes"
+                                    }
+                                ],
+                                "internalType": "struct Property[]",
+                                "name": "properties",
+                                "type": "tuple[]"
+                            }
+                        ],
+                        "name": "mintToSubstrateWithProperty",
+                        "outputs": [],
+                        "stateMutability": "nonpayable",
+                        "type": "function"
+                    }
+                ],
+                "devdoc": {
+                    "events": {
+                        "MintToSub(address,uint256,address,uint256)": {
+                            "details": "This emits when a mint to a substrate address has been made."
+                        }
+                    },
+                    "kind": "dev",
+                    "methods": {},
+                    "version": 1
+                },
+                "evm": {
+                    "bytecode": {
+                        "functionDebugData": {},
+                        "generatedSources": [],
+                        "linkReferences": {},
+                        "object": "608060405234801561001057600080fd5b506111d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633a0dbb1a14610046578063440dff9d1461005b5780637a8d97861461006e575b600080fd5b610059610054366004610d6f565b610081565b005b610059610069366004610d6f565b610472565b61005961007c366004610dc9565b6109fb565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156100c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ed9190610df3565b6101125760405162461bcd60e51b815260040161010990610e1c565b60405180910390fd5b82806101555760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa15801561019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c29190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201156104165760408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b81523060048201528a906001600160a01b03821690636a627842906024016020604051808303816000875af11580156102a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c69190610f4c565b604051630a769d3760e11b81529092506001600160a01b038216906314ed3a6e906102f99085908d908d90600401610fd4565b600060405180830381600087803b15801561031357600080fd5b505af1158015610327573d6000803e3d6000fd5b5050604080518082018252308152600060208083018290528351808501855291825281018f9052915163d5cf430b60e01b81526001600160a01b038616945063d5cf430b935061037c92908790600401611088565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b5050505050610416565b60405162461bcd60e51b815260206004820152603160248201527f57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c6044820152701e481dda5d1a08139195081bdc88149195607a1b6064820152608401610109565b6040805160008152602081018b90526001600160a01b038c16818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050505050565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104de9190610df3565b6104fa5760405162461bcd60e51b815260040161010990610e1c565b828061053d5760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105aa9190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b29582016108065760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106669190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d39190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c85818110610701576107016110c1565b905060200281019061071391906110d7565b61071d90806110f7565b8e8e8781811061072f5761072f6110c1565b905060200281019061074191906110d7565b61074f9060208101906110f7565b6040518663ffffffff1660e01b815260040161076f95949392919061113e565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050806107ab90611177565b90506106d7565b50604080518082018252308152600060208083018290528351808501855291825281018d9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b9261037c929091908790600401611088565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b45760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af9190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c8581811061094a5761094a6110c1565b905060200281019061095c91906110d7565b61096690806110f7565b8e8e87818110610978576109786110c1565b905060200281019061098a91906110d7565b6109989060208101906110f7565b6040518663ffffffff1660e01b81526004016109b895949392919061113e565b600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b50505050806109f490611177565b9050610920565b604051639811b0c760e01b8152336004820152829081906001600160a01b03821690639811b0c790602401602060405180830381865afa158015610a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a679190610df3565b610a835760405162461bcd60e51b815260040161010990610e1c565b60008490506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af09190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201610c3e576040516335313c2160e11b815230600482015287906001600160a01b03821690636a627842906024015b6020604051808303816000875af1158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb29190610f4c565b604080518082018252308152600060208083018290528351808501855291825281018b9052915163d5cf430b60e01b81529294506001600160a01b0384169263d5cf430b92610c0692918790600401611088565b600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b5050505050610cae565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b815230600482015287906001600160a01b03821690636a62784290602401610b6f565b6040805160008152602081018890526001600160a01b038916818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050565b80356001600160a01b0381168114610d1e57600080fd5b919050565b60008083601f840112610d3557600080fd5b50813567ffffffffffffffff811115610d4d57600080fd5b6020830191508360208260051b8501011115610d6857600080fd5b9250929050565b60008060008060608587031215610d8557600080fd5b610d8e85610d07565b935060208501359250604085013567ffffffffffffffff811115610db157600080fd5b610dbd87828801610d23565b95989497509550505050565b60008060408385031215610ddc57600080fd5b610de583610d07565b946020939093013593505050565b600060208284031215610e0557600080fd5b81518015158114610e1557600080fd5b9392505050565b60208082526030908201527f4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2060408201526f18d85b1b081d1a1a5cc81b595d1a1bd960821b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610e9557600080fd5b825167ffffffffffffffff80821115610ead57600080fd5b818501915085601f830112610ec157600080fd5b815181811115610ed357610ed3610e6c565b604051601f8201601f19908116603f01168101908382118183101715610efb57610efb610e6c565b816040528281528886848701011115610f1357600080fd5b600093505b82841015610f355784840186015181850187015292850192610f18565b600086848301015280965050505050505092915050565b600060208284031215610f5e57600080fd5b5051919050565b6000808335601e19843603018112610f7c57600080fd5b830160208101925035905067ffffffffffffffff811115610f9c57600080fd5b803603821315610d6857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006040808301868452602082818601528186835260608601905060608760051b8701019250876000805b8981101561107857888603605f190184528235368c9003603e19018112611024578283fd5b8b016110308180610f65565b8989526110408a8a018284610fab565b91505061104f87830183610f65565b9250888203888a0152611063828483610fab565b98505050938501935091840191600101610fff565b50939a9950505050505050505050565b83516001600160a01b03908116825260209485015185830152835116604082015291909201516060820152608081019190915260a00190565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126110ed57600080fd5b9190910192915050565b6000808335601e1984360301811261110e57600080fd5b83018035915067ffffffffffffffff82111561112957600080fd5b602001915036819003821315610d6857600080fd5b858152606060208201526000611158606083018688610fab565b828103604084015261116b818587610fab565b98975050505050505050565b60006001820161119757634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212206fee43cab49543809f191e238525b8a47306c665c42f86e318153d2b9e9d1de064736f6c63430008110033",
+                        "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D4 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3A0DBB1A EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x440DFF9D EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0x7A8D9786 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6F JUMP JUMPDEST PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x59 PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6F JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH2 0x59 PUSH2 0x7C CALLDATASIZE PUSH1 0x4 PUSH2 0xDC9 JUMP JUMPDEST PUSH2 0x9FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9811B0C7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE DUP5 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x9811B0C7 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xED SWAP2 SWAP1 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0x112 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP1 PUSH2 0xE1C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP1 PUSH2 0x155 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x50726F70657269657320697320656D707479 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x109 JUMP JUMPDEST PUSH1 0x0 DUP8 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD34B55B8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1C2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE82 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x526546756E6769626C65 PUSH1 0xB0 SHL SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP PUSH1 0x0 PUSH32 0x3248D02B1E2F292B1142854EBDEEC13D4B4F9224DBCDB24A3D7810FE54B7B295 DUP3 ADD ISZERO PUSH2 0x416 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x139195 PUSH1 0xEA SHL PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH32 0x63BEC732F5ECEE1B8B708F2F01C23AA0F0A08A1F0DF248CEDDA343C476EBFE96 DUP3 ADD PUSH2 0x3B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP11 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C6 SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA769D37 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x14ED3A6E SWAP1 PUSH2 0x2F9 SWAP1 DUP6 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0xFD4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x327 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE ADDRESS DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE SWAP2 DUP3 MSTORE DUP2 ADD DUP16 SWAP1 MSTORE SWAP2 MLOAD PUSH4 0xD5CF430B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP5 POP PUSH4 0xD5CF430B SWAP4 POP PUSH2 0x37C SWAP3 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x416 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57726F6E6720636F6C6C656374696F6E20747970652E20576F726B73206F6E6C PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1E481DDA5D1A08139195081BDC88149195 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x109 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP2 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFB3433367F20C42151D30B3D2C634726A94C4F9FA7D45120606029741AEB7535 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9811B0C7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE DUP5 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x9811B0C7 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4DE SWAP2 SWAP1 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0x4FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP1 PUSH2 0xE1C JUMP JUMPDEST DUP3 DUP1 PUSH2 0x53D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x50726F70657269657320697320656D707479 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x109 JUMP JUMPDEST PUSH1 0x0 DUP8 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD34B55B8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x5AA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE82 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x526546756E6769626C65 PUSH1 0xB0 SHL SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP PUSH1 0x0 PUSH32 0x3248D02B1E2F292B1142854EBDEEC13D4B4F9224DBCDB24A3D7810FE54B7B295 DUP3 ADD PUSH2 0x806 JUMPI PUSH1 0x0 DUP11 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x75794A3C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x642 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x666 SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6D3 SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x7B2 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1752D67B DUP5 DUP13 DUP13 DUP6 DUP2 DUP2 LT PUSH2 0x701 JUMPI PUSH2 0x701 PUSH2 0x10C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x713 SWAP2 SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x71D SWAP1 DUP1 PUSH2 0x10F7 JUMP JUMPDEST DUP15 DUP15 DUP8 DUP2 DUP2 LT PUSH2 0x72F JUMPI PUSH2 0x72F PUSH2 0x10C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x741 SWAP2 SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x74F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x76F SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x113E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x79D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH2 0x7AB SWAP1 PUSH2 0x1177 JUMP JUMPDEST SWAP1 POP PUSH2 0x6D7 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE ADDRESS DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE SWAP2 DUP3 MSTORE DUP2 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD PUSH4 0xD5CF430B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH4 0xD5CF430B SWAP3 PUSH2 0x37C SWAP3 SWAP1 SWAP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x139195 PUSH1 0xEA SHL PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH32 0x63BEC732F5ECEE1B8B708F2F01C23AA0F0A08A1F0DF248CEDDA343C476EBFE96 DUP3 ADD PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP11 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x75794A3C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AF SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x91C SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x7B2 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1752D67B DUP5 DUP13 DUP13 DUP6 DUP2 DUP2 LT PUSH2 0x94A JUMPI PUSH2 0x94A PUSH2 0x10C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x95C SWAP2 SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x966 SWAP1 DUP1 PUSH2 0x10F7 JUMP JUMPDEST DUP15 DUP15 DUP8 DUP2 DUP2 LT PUSH2 0x978 JUMPI PUSH2 0x978 PUSH2 0x10C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x98A SWAP2 SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x998 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x113E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH2 0x9F4 SWAP1 PUSH2 0x1177 JUMP JUMPDEST SWAP1 POP PUSH2 0x920 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9811B0C7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x9811B0C7 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA43 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA67 SWAP2 SWAP1 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0xA83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP1 PUSH2 0xE1C JUMP JUMPDEST PUSH1 0x0 DUP5 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD34B55B8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xAF0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE82 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x526546756E6769626C65 PUSH1 0xB0 SHL SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP PUSH1 0x0 PUSH32 0x3248D02B1E2F292B1142854EBDEEC13D4B4F9224DBCDB24A3D7810FE54B7B295 DUP3 ADD PUSH2 0xC3E JUMPI PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBB2 SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE ADDRESS DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE SWAP2 DUP3 MSTORE DUP2 ADD DUP12 SWAP1 MSTORE SWAP2 MLOAD PUSH4 0xD5CF430B PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH4 0xD5CF430B SWAP3 PUSH2 0xC06 SWAP3 SWAP2 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x139195 PUSH1 0xEA SHL PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH32 0x63BEC732F5ECEE1B8B708F2F01C23AA0F0A08A1F0DF248CEDDA343C476EBFE96 DUP3 ADD PUSH2 0x3B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD PUSH2 0xB6F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFB3433367F20C42151D30B3D2C634726A94C4F9FA7D45120606029741AEB7535 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xD35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xD68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8E DUP6 PUSH2 0xD07 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDBD DUP8 DUP3 DUP9 ADD PUSH2 0xD23 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDE5 DUP4 PUSH2 0xD07 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x30 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6C6C656374696F6E2061646D696E2F6F776E65722063616E20 PUSH1 0x40 DUP3 ADD MSTORE PUSH16 0x18D85B1B081D1A1A5CC81B595D1A1BD9 PUSH1 0x82 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xED3 JUMPI PUSH2 0xED3 PUSH2 0xE6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEFB JUMPI PUSH2 0xEFB PUSH2 0xE6C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xF13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0xF35 JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH2 0xF18 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xF7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x20 DUP2 ADD SWAP3 POP CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0xD68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP7 DUP4 MSTORE PUSH1 0x60 DUP7 ADD SWAP1 POP PUSH1 0x60 DUP8 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP8 PUSH1 0x0 DUP1 JUMPDEST DUP10 DUP2 LT ISZERO PUSH2 0x1078 JUMPI DUP9 DUP7 SUB PUSH1 0x5F NOT ADD DUP5 MSTORE DUP3 CALLDATALOAD CALLDATASIZE DUP13 SWAP1 SUB PUSH1 0x3E NOT ADD DUP2 SLT PUSH2 0x1024 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP12 ADD PUSH2 0x1030 DUP2 DUP1 PUSH2 0xF65 JUMP JUMPDEST DUP10 DUP10 MSTORE PUSH2 0x1040 DUP11 DUP11 ADD DUP3 DUP5 PUSH2 0xFAB JUMP JUMPDEST SWAP2 POP POP PUSH2 0x104F DUP8 DUP4 ADD DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP3 POP DUP9 DUP3 SUB DUP9 DUP11 ADD MSTORE PUSH2 0x1063 DUP3 DUP5 DUP4 PUSH2 0xFAB JUMP JUMPDEST SWAP9 POP POP POP SWAP4 DUP6 ADD SWAP4 POP SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xFFF JUMP JUMPDEST POP SWAP4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 SWAP5 DUP6 ADD MLOAD DUP6 DUP4 ADD MSTORE DUP4 MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH1 0x3E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x10ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x110E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xD68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1158 PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0xFAB JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x116B DUP2 DUP6 DUP8 PUSH2 0xFAB JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1197 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH16 0xEE43CAB49543809F191E238525B8A473 MOD 0xC6 PUSH6 0xC42F86E31815 RETURNDATASIZE 0x2B SWAP15 SWAP14 SAR 0xE0 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
+                        "sourceMap": "673:5833:5:-:0;;;;;;;;;;;;;;;;;;;"
+                    },
+                    "deployedBytecode": {
+                        "functionDebugData": {
+                            "@mintToSubstrateBulkProperty_2268": {
+                                "entryPoint": 129,
+                                "id": 2268,
+                                "parameterSlots": 4,
+                                "returnSlots": 0
+                            },
+                            "@mintToSubstrateWithProperty_2151": {
+                                "entryPoint": 1138,
+                                "id": 2151,
+                                "parameterSlots": 4,
+                                "returnSlots": 0
+                            },
+                            "@mintToSubstrate_1942": {
+                                "entryPoint": 2555,
+                                "id": 1942,
+                                "parameterSlots": 2,
+                                "returnSlots": 0
+                            },
+                            "abi_decode_address": {
+                                "entryPoint": 3335,
+                                "id": null,
+                                "parameterSlots": 1,
+                                "returnSlots": 1
+                            },
+                            "abi_decode_array_struct_Tuple21_calldata_dyn_calldata": {
+                                "entryPoint": 3363,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 2
+                            },
+                            "abi_decode_tuple_t_addresst_uint256": {
+                                "entryPoint": 3529,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 2
+                            },
+                            "abi_decode_tuple_t_addresst_uint256t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr": {
+                                "entryPoint": null,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 4
+                            },
+                            "abi_decode_tuple_t_addresst_uint256t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr": {
+                                "entryPoint": 3439,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 4
+                            },
+                            "abi_decode_tuple_t_bool_fromMemory": {
+                                "entryPoint": 3571,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 1
+                            },
+                            "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
+                                "entryPoint": 3714,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 1
+                            },
+                            "abi_decode_tuple_t_uint256_fromMemory": {
+                                "entryPoint": 3916,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_string_calldata": {
+                                "entryPoint": 4011,
+                                "id": null,
+                                "parameterSlots": 3,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_struct_EthCrossAccount": {
+                                "entryPoint": null,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 0
+                            },
+                            "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
+                                "entryPoint": null,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_tuple_t_address_t_uint256_t_address_t_uint256__to_t_address_t_uint256_t_address_t_uint256__fromStack_reversed": {
+                                "entryPoint": null,
+                                "id": null,
+                                "parameterSlots": 5,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_tuple_t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1__to_t_string_memory_ptr__fromStack_reversed": {
+                                "entryPoint": null,
+                                "id": null,
+                                "parameterSlots": 1,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_tuple_t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3__to_t_string_memory_ptr__fromStack_reversed": {
+                                "entryPoint": 3612,
+                                "id": null,
+                                "parameterSlots": 1,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_tuple_t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a__to_t_string_memory_ptr__fromStack_reversed": {
+                                "entryPoint": null,
+                                "id": null,
+                                "parameterSlots": 1,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_tuple_t_struct$_EthCrossAccount_$1253_memory_ptr_t_struct$_EthCrossAccount_$1253_memory_ptr_t_uint256__to_t_struct$_EthCrossAccount_$1253_memory_ptr_t_struct$_EthCrossAccount_$1253_memory_ptr_t_uint256__fromStack_reversed": {
+                                "entryPoint": null,
+                                "id": null,
+                                "parameterSlots": 4,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_tuple_t_struct$_EthCrossAccount_$610_memory_ptr_t_struct$_EthCrossAccount_$610_memory_ptr_t_uint256__to_t_struct$_EthCrossAccount_$610_memory_ptr_t_struct$_EthCrossAccount_$610_memory_ptr_t_uint256__fromStack_reversed": {
+                                "entryPoint": 4232,
+                                "id": null,
+                                "parameterSlots": 4,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_tuple_t_uint256_t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr__to_t_uint256_t_array$_t_struct$_Tuple21_$620_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
+                                "entryPoint": 4052,
+                                "id": null,
+                                "parameterSlots": 4,
+                                "returnSlots": 1
+                            },
+                            "abi_encode_tuple_t_uint256_t_string_calldata_ptr_t_bytes_calldata_ptr__to_t_uint256_t_string_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
+                                "entryPoint": 4414,
+                                "id": null,
+                                "parameterSlots": 6,
+                                "returnSlots": 1
+                            },
+                            "access_calldata_tail_t_bytes_calldata_ptr": {
+                                "entryPoint": null,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 2
+                            },
+                            "access_calldata_tail_t_string_calldata_ptr": {
+                                "entryPoint": 4343,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 2
+                            },
+                            "access_calldata_tail_t_struct$_Property_$1762_calldata_ptr": {
+                                "entryPoint": 4311,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 1
+                            },
+                            "calldata_access_string_calldata": {
+                                "entryPoint": 3941,
+                                "id": null,
+                                "parameterSlots": 2,
+                                "returnSlots": 2
+                            },
+                            "increment_t_uint256": {
+                                "entryPoint": 4471,
+                                "id": null,
+                                "parameterSlots": 1,
+                                "returnSlots": 1
+                            },
+                            "panic_error_0x32": {
+                                "entryPoint": 4289,
+                                "id": null,
+                                "parameterSlots": 0,
+                                "returnSlots": 0
+                            },
+                            "panic_error_0x41": {
+                                "entryPoint": 3692,
+                                "id": null,
+                                "parameterSlots": 0,
+                                "returnSlots": 0
+                            }
+                        },
+                        "generatedSources": [
+                            {
+                                "ast": {
+                                    "nodeType": "YulBlock",
+                                    "src": "0:11384:6",
+                                    "statements": [
+                                        {
+                                            "nodeType": "YulBlock",
+                                            "src": "6:3:6",
+                                            "statements": []
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "63:124:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "73:29:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "offset",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "95:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "82:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "82:20:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "73:5:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "165:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "174:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "177:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "167:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "167:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "167:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "value",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "124:5:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "value",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "135:5:6"
+                                                                                },
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "arguments": [
+                                                                                                {
+                                                                                                    "kind": "number",
+                                                                                                    "nodeType": "YulLiteral",
+                                                                                                    "src": "150:3:6",
+                                                                                                    "type": "",
+                                                                                                    "value": "160"
+                                                                                                },
+                                                                                                {
+                                                                                                    "kind": "number",
+                                                                                                    "nodeType": "YulLiteral",
+                                                                                                    "src": "155:1:6",
+                                                                                                    "type": "",
+                                                                                                    "value": "1"
+                                                                                                }
+                                                                                            ],
+                                                                                            "functionName": {
+                                                                                                "name": "shl",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "146:3:6"
+                                                                                            },
+                                                                                            "nodeType": "YulFunctionCall",
+                                                                                            "src": "146:11:6"
+                                                                                        },
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "159:1:6",
+                                                                                            "type": "",
+                                                                                            "value": "1"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "sub",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "142:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "142:19:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "and",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "131:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "131:31:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "eq",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "121:2:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "121:42:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "iszero",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "114:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "114:50:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "111:70:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_decode_address",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "offset",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "42:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "value",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "53:5:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "14:173:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "292:283:6",
+                                                "statements": [
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "341:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "350:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "353:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "343:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "343:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "343:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "offset",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "320:6:6"
+                                                                                },
+                                                                                {
+                                                                                    "kind": "number",
+                                                                                    "nodeType": "YulLiteral",
+                                                                                    "src": "328:4:6",
+                                                                                    "type": "",
+                                                                                    "value": "0x1f"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "316:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "316:17:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "end",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "335:3:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "slt",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "312:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "312:27:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "iszero",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "305:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "305:35:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "302:55:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "366:30:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "offset",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "389:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "376:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "376:20:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "length",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "366:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "439:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "448:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "451:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "441:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "441:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "441:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "length",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "411:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "419:18:6",
+                                                                    "type": "",
+                                                                    "value": "0xffffffffffffffff"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "408:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "408:30:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "405:50:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "464:29:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "offset",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "480:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "488:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x20"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "476:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "476:17:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "arrayPos",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "464:8:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "553:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "562:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "565:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "555:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "555:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "555:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "offset",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "516:6:6"
+                                                                                },
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "528:1:6",
+                                                                                            "type": "",
+                                                                                            "value": "5"
+                                                                                        },
+                                                                                        {
+                                                                                            "name": "length",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "531:6:6"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "shl",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "524:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "524:14:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "512:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "512:27:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "541:4:6",
+                                                                            "type": "",
+                                                                            "value": "0x20"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "508:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "508:38:6"
+                                                                },
+                                                                {
+                                                                    "name": "end",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "548:3:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "505:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "505:47:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "502:67:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_decode_array_struct_Tuple21_calldata_dyn_calldata",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "offset",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "255:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "end",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "263:3:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "arrayPos",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "271:8:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "length",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "281:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "192:383:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "745:456:6",
+                                                "statements": [
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "791:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "800:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "803:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "793:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "793:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "793:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "dataEnd",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "766:7:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "775:9:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "762:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "762:23:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "787:2:6",
+                                                                    "type": "",
+                                                                    "value": "96"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "slt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "758:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "758:32:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "755:52:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "816:39:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "845:9:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_decode_address",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "826:18:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "826:29:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value0",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "816:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "864:42:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "891:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "902:2:6",
+                                                                            "type": "",
+                                                                            "value": "32"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "887:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "887:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "874:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "874:32:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value1",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "864:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "915:46:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "946:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "957:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "942:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "942:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "929:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "929:32:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "offset",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "919:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "1004:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "1013:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "1016:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1006:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "1006:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "1006:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "offset",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "976:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "984:18:6",
+                                                                    "type": "",
+                                                                    "value": "0xffffffffffffffff"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "973:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "973:30:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "970:50:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "1029:112:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1113:9:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "offset",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1124:6:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "1109:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "1109:22:6"
+                                                                },
+                                                                {
+                                                                    "name": "dataEnd",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "1133:7:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_decode_array_struct_Tuple21_calldata_dyn_calldata",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1055:53:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "1055:86:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "value2_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "1033:8:6",
+                                                                "type": ""
+                                                            },
+                                                            {
+                                                                "name": "value3_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "1043:8:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "1150:18:6",
+                                                        "value": {
+                                                            "name": "value2_1",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "1160:8:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value2",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1150:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "1177:18:6",
+                                                        "value": {
+                                                            "name": "value3_1",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "1187:8:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value3",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1177:6:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_decode_tuple_t_addresst_uint256t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "687:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "dataEnd",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "698:7:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "710:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value1",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "718:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value2",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "726:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value3",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "734:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "580:621:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "1373:456:6",
+                                                "statements": [
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "1419:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "1428:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "1431:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1421:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "1421:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "1421:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "dataEnd",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1394:7:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1403:9:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "1390:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "1390:23:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "1415:2:6",
+                                                                    "type": "",
+                                                                    "value": "96"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "slt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1386:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "1386:32:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "1383:52:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "1444:39:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "1473:9:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_decode_address",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1454:18:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "1454:29:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value0",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1444:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "1492:42:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1519:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "1530:2:6",
+                                                                            "type": "",
+                                                                            "value": "32"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "1515:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "1515:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1502:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "1502:32:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value1",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1492:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "1543:46:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1574:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "1585:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "1570:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "1570:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1557:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "1557:32:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "offset",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "1547:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "1632:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "1641:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "1644:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1634:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "1634:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "1634:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "offset",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "1604:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "1612:18:6",
+                                                                    "type": "",
+                                                                    "value": "0xffffffffffffffff"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1601:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "1601:30:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "1598:50:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "1657:112:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1741:9:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "offset",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1752:6:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "1737:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "1737:22:6"
+                                                                },
+                                                                {
+                                                                    "name": "dataEnd",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "1761:7:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_decode_array_struct_Tuple21_calldata_dyn_calldata",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1683:53:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "1683:86:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "value2_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "1661:8:6",
+                                                                "type": ""
+                                                            },
+                                                            {
+                                                                "name": "value3_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "1671:8:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "1778:18:6",
+                                                        "value": {
+                                                            "name": "value2_1",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "1788:8:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value2",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1778:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "1805:18:6",
+                                                        "value": {
+                                                            "name": "value3_1",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "1815:8:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value3",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1805:6:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_decode_tuple_t_addresst_uint256t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1315:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "dataEnd",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1326:7:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1338:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value1",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1346:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value2",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1354:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value3",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1362:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "1206:623:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "1921:167:6",
+                                                "statements": [
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "1967:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "1976:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "1979:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1969:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "1969:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "1969:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "dataEnd",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1942:7:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "1951:9:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "1938:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "1938:23:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "1963:2:6",
+                                                                    "type": "",
+                                                                    "value": "64"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "slt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1934:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "1934:32:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "1931:52:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "1992:39:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "2021:9:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_decode_address",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2002:18:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2002:29:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value0",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "1992:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "2040:42:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2067:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "2078:2:6",
+                                                                            "type": "",
+                                                                            "value": "32"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "2063:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "2063:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2050:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2050:32:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value1",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2040:6:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_decode_tuple_t_addresst_uint256",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1879:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "dataEnd",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1890:7:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1902:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value1",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "1910:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "1834:254:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "2194:102:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "2204:26:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "2216:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "2227:2:6",
+                                                                    "type": "",
+                                                                    "value": "32"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2212:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2212:18:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2204:4:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "2246:9:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "value0",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2261:6:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "2277:3:6",
+                                                                                            "type": "",
+                                                                                            "value": "160"
+                                                                                        },
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "2282:1:6",
+                                                                                            "type": "",
+                                                                                            "value": "1"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "shl",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "2273:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "2273:11:6"
+                                                                                },
+                                                                                {
+                                                                                    "kind": "number",
+                                                                                    "nodeType": "YulLiteral",
+                                                                                    "src": "2286:1:6",
+                                                                                    "type": "",
+                                                                                    "value": "1"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "sub",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "2269:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "2269:19:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "and",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "2257:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "2257:32:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2239:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2239:51:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "2239:51:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "2163:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "2174:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "2185:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "2093:203:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "2379:199:6",
+                                                "statements": [
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "2425:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "2434:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "2437:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2427:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "2427:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "2427:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "dataEnd",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2400:7:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2409:9:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "2396:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "2396:23:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "2421:2:6",
+                                                                    "type": "",
+                                                                    "value": "32"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "slt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2392:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2392:32:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "2389:52:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "2450:29:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "2469:9:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2463:5:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2463:16:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "value",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "2454:5:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "2532:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "2541:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "2544:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2534:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "2534:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "2534:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "value",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2501:5:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "name": "value",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "2522:5:6"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "iszero",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "2515:6:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "2515:13:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "iszero",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "2508:6:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "2508:21:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "eq",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "2498:2:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "2498:32:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "iszero",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2491:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2491:40:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "2488:60:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "2557:15:6",
+                                                        "value": {
+                                                            "name": "value",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "2567:5:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value0",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2557:6:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_decode_tuple_t_bool_fromMemory",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "2345:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "dataEnd",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "2356:7:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "2368:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "2301:277:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "2757:238:6",
+                                                "statements": [
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "2774:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "2785:2:6",
+                                                                    "type": "",
+                                                                    "value": "32"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2767:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2767:21:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "2767:21:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2808:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "2819:2:6",
+                                                                            "type": "",
+                                                                            "value": "32"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "2804:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "2804:18:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "2824:2:6",
+                                                                    "type": "",
+                                                                    "value": "48"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2797:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2797:30:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "2797:30:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2847:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "2858:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "2843:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "2843:18:6"
+                                                                },
+                                                                {
+                                                                    "hexValue": "4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e20",
+                                                                    "kind": "string",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "2863:34:6",
+                                                                    "type": "",
+                                                                    "value": "Only collection admin/owner can "
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2836:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2836:62:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "2836:62:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "2918:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "2929:2:6",
+                                                                            "type": "",
+                                                                            "value": "96"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "2914:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "2914:18:6"
+                                                                },
+                                                                {
+                                                                    "hexValue": "63616c6c2074686973206d6574686f64",
+                                                                    "kind": "string",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "2934:18:6",
+                                                                    "type": "",
+                                                                    "value": "call this method"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2907:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2907:46:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "2907:46:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "2962:27:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "2974:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "2985:3:6",
+                                                                    "type": "",
+                                                                    "value": "128"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2970:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "2970:19:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "2962:4:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3__to_t_string_memory_ptr__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "2734:9:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "2748:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "2583:412:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "3174:168:6",
+                                                "statements": [
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3191:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3202:2:6",
+                                                                    "type": "",
+                                                                    "value": "32"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3184:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3184:21:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "3184:21:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3225:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "3236:2:6",
+                                                                            "type": "",
+                                                                            "value": "32"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "3221:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "3221:18:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3241:2:6",
+                                                                    "type": "",
+                                                                    "value": "18"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3214:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3214:30:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "3214:30:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3264:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "3275:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "3260:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "3260:18:6"
+                                                                },
+                                                                {
+                                                                    "hexValue": "50726f70657269657320697320656d707479",
+                                                                    "kind": "string",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3280:20:6",
+                                                                    "type": "",
+                                                                    "value": "Properies is empty"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3253:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3253:48:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "3253:48:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "3310:26:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3322:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3333:2:6",
+                                                                    "type": "",
+                                                                    "value": "96"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3318:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3318:18:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3310:4:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1__to_t_string_memory_ptr__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "3151:9:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "3165:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "3000:342:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "3379:95:6",
+                                                "statements": [
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3396:1:6",
+                                                                    "type": "",
+                                                                    "value": "0"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "3403:3:6",
+                                                                            "type": "",
+                                                                            "value": "224"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "3408:10:6",
+                                                                            "type": "",
+                                                                            "value": "0x4e487b71"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "shl",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "3399:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "3399:20:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3389:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3389:31:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "3389:31:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3436:1:6",
+                                                                    "type": "",
+                                                                    "value": "4"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3439:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x41"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3429:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3429:15:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "3429:15:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3460:1:6",
+                                                                    "type": "",
+                                                                    "value": "0"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3463:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x24"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "revert",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3453:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3453:15:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "3453:15:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "panic_error_0x41",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "src": "3347:127:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "3570:951:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "3580:12:6",
+                                                        "value": {
+                                                            "kind": "number",
+                                                            "nodeType": "YulLiteral",
+                                                            "src": "3590:2:6",
+                                                            "type": "",
+                                                            "value": "32"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "3584:2:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "3637:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "3646:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "3649:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3639:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "3639:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "3639:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "dataEnd",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3612:7:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3621:9:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "3608:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "3608:23:6"
+                                                                },
+                                                                {
+                                                                    "name": "_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3633:2:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "slt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3604:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3604:32:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "3601:52:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "3662:30:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3682:9:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3676:5:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3676:16:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "offset",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "3666:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "3701:28:6",
+                                                        "value": {
+                                                            "kind": "number",
+                                                            "nodeType": "YulLiteral",
+                                                            "src": "3711:18:6",
+                                                            "type": "",
+                                                            "value": "0xffffffffffffffff"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "_2",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "3705:2:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "3756:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "3765:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "3768:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3758:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "3758:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "3758:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "offset",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3744:6:6"
+                                                                },
+                                                                {
+                                                                    "name": "_2",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3752:2:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3741:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3741:14:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "3738:34:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "3781:32:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3795:9:6"
+                                                                },
+                                                                {
+                                                                    "name": "offset",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3806:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3791:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3791:22:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "_3",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "3785:2:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "3861:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "3870:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "3873:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3863:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "3863:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "3863:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "_3",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "3840:2:6"
+                                                                                },
+                                                                                {
+                                                                                    "kind": "number",
+                                                                                    "nodeType": "YulLiteral",
+                                                                                    "src": "3844:4:6",
+                                                                                    "type": "",
+                                                                                    "value": "0x1f"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "3836:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "3836:13:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "dataEnd",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3851:7:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "slt",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "3832:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "3832:27:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "iszero",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3825:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3825:35:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "3822:55:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "3886:19:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "_3",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3902:2:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3896:5:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3896:9:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "_4",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "3890:2:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "3928:22:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [],
+                                                                        "functionName": {
+                                                                            "name": "panic_error_0x41",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "3930:16:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "3930:18:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "3930:18:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "_4",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3920:2:6"
+                                                                },
+                                                                {
+                                                                    "name": "_2",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "3924:2:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3917:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3917:10:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "3914:36:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "3959:17:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "3973:2:6",
+                                                                    "type": "",
+                                                                    "value": "31"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "not",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3969:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3969:7:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "_5",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "3963:2:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "3985:23:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "4005:2:6",
+                                                                    "type": "",
+                                                                    "value": "64"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "3999:5:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "3999:9:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "memPtr",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "3989:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "4017:71:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "memPtr",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4039:6:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "arguments": [
+                                                                                                {
+                                                                                                    "name": "_4",
+                                                                                                    "nodeType": "YulIdentifier",
+                                                                                                    "src": "4063:2:6"
+                                                                                                },
+                                                                                                {
+                                                                                                    "kind": "number",
+                                                                                                    "nodeType": "YulLiteral",
+                                                                                                    "src": "4067:4:6",
+                                                                                                    "type": "",
+                                                                                                    "value": "0x1f"
+                                                                                                }
+                                                                                            ],
+                                                                                            "functionName": {
+                                                                                                "name": "add",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "4059:3:6"
+                                                                                            },
+                                                                                            "nodeType": "YulFunctionCall",
+                                                                                            "src": "4059:13:6"
+                                                                                        },
+                                                                                        {
+                                                                                            "name": "_5",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "4074:2:6"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "and",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "4055:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "4055:22:6"
+                                                                                },
+                                                                                {
+                                                                                    "kind": "number",
+                                                                                    "nodeType": "YulLiteral",
+                                                                                    "src": "4079:2:6",
+                                                                                    "type": "",
+                                                                                    "value": "63"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "4051:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "4051:31:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "_5",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4084:2:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "and",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "4047:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "4047:40:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4035:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4035:53:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "newFreePtr",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "4021:10:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "4147:22:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [],
+                                                                        "functionName": {
+                                                                            "name": "panic_error_0x41",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4149:16:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "4149:18:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "4149:18:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "newFreePtr",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4106:10:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "_2",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4118:2:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "gt",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "4103:2:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "4103:18:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "newFreePtr",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4126:10:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "memPtr",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4138:6:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "lt",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "4123:2:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "4123:22:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "or",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4100:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4100:46:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "4097:72:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "4185:2:6",
+                                                                    "type": "",
+                                                                    "value": "64"
+                                                                },
+                                                                {
+                                                                    "name": "newFreePtr",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4189:10:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4178:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4178:22:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "4178:22:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "memPtr",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4216:6:6"
+                                                                },
+                                                                {
+                                                                    "name": "_4",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4224:2:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4209:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4209:18:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "4209:18:6"
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "4273:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "4282:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "4285:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4275:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "4275:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "4275:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "_3",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "4250:2:6"
+                                                                                },
+                                                                                {
+                                                                                    "name": "_4",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "4254:2:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "4246:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "4246:11:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "_1",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4259:2:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "4242:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "4242:20:6"
+                                                                },
+                                                                {
+                                                                    "name": "dataEnd",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4264:7:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4239:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4239:33:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "4236:53:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "4298:10:6",
+                                                        "value": {
+                                                            "kind": "number",
+                                                            "nodeType": "YulLiteral",
+                                                            "src": "4307:1:6",
+                                                            "type": "",
+                                                            "value": "0"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "i",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "4302:1:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "4363:83:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "arguments": [
+                                                                                            {
+                                                                                                "name": "memPtr",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "4392:6:6"
+                                                                                            },
+                                                                                            {
+                                                                                                "name": "i",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "4400:1:6"
+                                                                                            }
+                                                                                        ],
+                                                                                        "functionName": {
+                                                                                            "name": "add",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "4388:3:6"
+                                                                                        },
+                                                                                        "nodeType": "YulFunctionCall",
+                                                                                        "src": "4388:14:6"
+                                                                                    },
+                                                                                    {
+                                                                                        "name": "_1",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "4404:2:6"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "add",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "4384:3:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "4384:23:6"
+                                                                            },
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "arguments": [
+                                                                                            {
+                                                                                                "arguments": [
+                                                                                                    {
+                                                                                                        "name": "_3",
+                                                                                                        "nodeType": "YulIdentifier",
+                                                                                                        "src": "4423:2:6"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "name": "i",
+                                                                                                        "nodeType": "YulIdentifier",
+                                                                                                        "src": "4427:1:6"
+                                                                                                    }
+                                                                                                ],
+                                                                                                "functionName": {
+                                                                                                    "name": "add",
+                                                                                                    "nodeType": "YulIdentifier",
+                                                                                                    "src": "4419:3:6"
+                                                                                                },
+                                                                                                "nodeType": "YulFunctionCall",
+                                                                                                "src": "4419:10:6"
+                                                                                            },
+                                                                                            {
+                                                                                                "name": "_1",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "4431:2:6"
+                                                                                            }
+                                                                                        ],
+                                                                                        "functionName": {
+                                                                                            "name": "add",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "4415:3:6"
+                                                                                        },
+                                                                                        "nodeType": "YulFunctionCall",
+                                                                                        "src": "4415:19:6"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "mload",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "4409:5:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "4409:26:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "mstore",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4377:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "4377:59:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "4377:59:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "i",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4328:1:6"
+                                                                },
+                                                                {
+                                                                    "name": "_4",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4331:2:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "lt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4325:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4325:9:6"
+                                                        },
+                                                        "nodeType": "YulForLoop",
+                                                        "post": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "4335:19:6",
+                                                            "statements": [
+                                                                {
+                                                                    "nodeType": "YulAssignment",
+                                                                    "src": "4337:15:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "i",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "4346:1:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "_1",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "4349:2:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "add",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4342:3:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "4342:10:6"
+                                                                    },
+                                                                    "variableNames": [
+                                                                        {
+                                                                            "name": "i",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4337:1:6"
+                                                                        }
+                                                                    ]
+                                                                }
+                                                            ]
+                                                        },
+                                                        "pre": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "4321:3:6",
+                                                            "statements": []
+                                                        },
+                                                        "src": "4317:129:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "memPtr",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "4470:6:6"
+                                                                                },
+                                                                                {
+                                                                                    "name": "_4",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "4478:2:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "4466:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "4466:15:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "_1",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4483:2:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "4462:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "4462:24:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "4488:1:6",
+                                                                    "type": "",
+                                                                    "value": "0"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4455:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4455:35:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "4455:35:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "4499:16:6",
+                                                        "value": {
+                                                            "name": "memPtr",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "4509:6:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value0",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4499:6:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "3536:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "dataEnd",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "3547:7:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "3559:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "3479:1042:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "4607:103:6",
+                                                "statements": [
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "4653:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "4662:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "4665:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4655:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "4655:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "4655:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "dataEnd",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4628:7:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4637:9:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "4624:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "4624:23:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "4649:2:6",
+                                                                    "type": "",
+                                                                    "value": "32"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "slt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4620:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4620:32:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "4617:52:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "4678:26:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4694:9:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4688:5:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4688:16:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value0",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4678:6:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_decode_tuple_t_uint256_fromMemory",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "4573:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "dataEnd",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "4584:7:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "4596:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "4526:184:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "4792:424:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "4802:43:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "ptr",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4841:3:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4828:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4828:17:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "rel_offset_of_tail",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "4806:18:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "4934:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "4943:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "4946:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4936:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "4936:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "4936:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "rel_offset_of_tail",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "4868:18:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "arguments": [],
+                                                                                            "functionName": {
+                                                                                                "name": "calldatasize",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "4896:12:6"
+                                                                                            },
+                                                                                            "nodeType": "YulFunctionCall",
+                                                                                            "src": "4896:14:6"
+                                                                                        },
+                                                                                        {
+                                                                                            "name": "base_ref",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "4912:8:6"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "sub",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "4892:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "4892:29:6"
+                                                                                },
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "4927:2:6",
+                                                                                            "type": "",
+                                                                                            "value": "30"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "not",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "4923:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "4923:7:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "4888:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "4888:43:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "slt",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "4864:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "4864:68:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "iszero",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4857:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4857:76:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "4854:96:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "4959:48:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "rel_offset_of_tail",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4978:18:6"
+                                                                },
+                                                                {
+                                                                    "name": "base_ref",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "4998:8:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "4974:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "4974:33:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "value_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "4963:7:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "5016:31:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5039:7:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5026:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5026:21:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "length",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5016:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "5056:27:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5069:7:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "5078:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x20"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5065:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5065:18:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "value",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5056:5:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "5126:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "5135:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "5138:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "5128:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "5128:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "5128:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "length",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5098:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "5106:18:6",
+                                                                    "type": "",
+                                                                    "value": "0xffffffffffffffff"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5095:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5095:30:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "5092:50:6"
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "5194:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "5203:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "5206:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "5196:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "5196:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "5196:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5158:5:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [],
+                                                                            "functionName": {
+                                                                                "name": "calldatasize",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "5169:12:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "5169:14:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "length",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "5185:6:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "5165:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "5165:27:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "sgt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5154:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5154:39:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "5151:59:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "calldata_access_string_calldata",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "base_ref",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "4756:8:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "ptr",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "4766:3:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "value",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "4774:5:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "length",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "4781:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "4715:501:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "5288:200:6",
+                                                "statements": [
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "pos",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5305:3:6"
+                                                                },
+                                                                {
+                                                                    "name": "length",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5310:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5298:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5298:19:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "5298:19:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "pos",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "5343:3:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "5348:4:6",
+                                                                            "type": "",
+                                                                            "value": "0x20"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "5339:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "5339:14:6"
+                                                                },
+                                                                {
+                                                                    "name": "start",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5355:5:6"
+                                                                },
+                                                                {
+                                                                    "name": "length",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5362:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldatacopy",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5326:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5326:43:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "5326:43:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "pos",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "5393:3:6"
+                                                                                },
+                                                                                {
+                                                                                    "name": "length",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "5398:6:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "5389:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "5389:16:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "5407:4:6",
+                                                                            "type": "",
+                                                                            "value": "0x20"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "5385:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "5385:27:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "5414:1:6",
+                                                                    "type": "",
+                                                                    "value": "0"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5378:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5378:38:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "5378:38:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "5425:57:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "pos",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "5440:3:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "name": "length",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "5453:6:6"
+                                                                                        },
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "5461:2:6",
+                                                                                            "type": "",
+                                                                                            "value": "31"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "add",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "5449:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "5449:15:6"
+                                                                                },
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "5470:2:6",
+                                                                                            "type": "",
+                                                                                            "value": "31"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "not",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "5466:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "5466:7:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "and",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "5445:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "5445:29:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "5436:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "5436:39:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "5477:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x20"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5432:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5432:50:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "end",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5425:3:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_string_calldata",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "start",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5257:5:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "length",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5264:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "pos",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5272:3:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "end",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5280:3:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "5221:267:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "5732:1310:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "5742:12:6",
+                                                        "value": {
+                                                            "kind": "number",
+                                                            "nodeType": "YulLiteral",
+                                                            "src": "5752:2:6",
+                                                            "type": "",
+                                                            "value": "64"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "5746:2:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "5763:32:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5781:9:6"
+                                                                },
+                                                                {
+                                                                    "name": "_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5792:2:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5777:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5777:18:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "tail_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "5767:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5811:9:6"
+                                                                },
+                                                                {
+                                                                    "name": "value0",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5822:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5804:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5804:25:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "5804:25:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "5838:12:6",
+                                                        "value": {
+                                                            "kind": "number",
+                                                            "nodeType": "YulLiteral",
+                                                            "src": "5848:2:6",
+                                                            "type": "",
+                                                            "value": "32"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "_2",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "5842:2:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "5870:9:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "_2",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "5881:2:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "5866:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "5866:18:6"
+                                                                },
+                                                                {
+                                                                    "name": "_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5886:2:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5859:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5859:30:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "5859:30:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "5898:17:6",
+                                                        "value": {
+                                                            "name": "tail_1",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "5909:6:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "pos",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "5902:3:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "tail_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5931:6:6"
+                                                                },
+                                                                {
+                                                                    "name": "value2",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5939:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5924:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5924:22:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "5924:22:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "5955:25:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "5966:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "5977:2:6",
+                                                                    "type": "",
+                                                                    "value": "96"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5962:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "5962:18:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "pos",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "5955:3:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "5989:53:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6011:9:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "kind": "number",
+                                                                                    "nodeType": "YulLiteral",
+                                                                                    "src": "6026:1:6",
+                                                                                    "type": "",
+                                                                                    "value": "5"
+                                                                                },
+                                                                                {
+                                                                                    "name": "value2",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "6029:6:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "shl",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6022:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "6022:14:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "6007:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "6007:30:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "6039:2:6",
+                                                                    "type": "",
+                                                                    "value": "96"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "6003:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "6003:39:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "tail_2",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "5993:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "6051:20:6",
+                                                        "value": {
+                                                            "name": "value1",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "6065:6:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "srcPtr",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "6055:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "6080:10:6",
+                                                        "value": {
+                                                            "kind": "number",
+                                                            "nodeType": "YulLiteral",
+                                                            "src": "6089:1:6",
+                                                            "type": "",
+                                                            "value": "0"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "i",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "6084:1:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "6099:12:6",
+                                                        "value": {
+                                                            "name": "i",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "6110:1:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "i_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "6103:3:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "6175:838:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "pos",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6196:3:6"
+                                                                            },
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "arguments": [
+                                                                                            {
+                                                                                                "name": "tail_2",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "6209:6:6"
+                                                                                            },
+                                                                                            {
+                                                                                                "name": "headStart",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "6217:9:6"
+                                                                                            }
+                                                                                        ],
+                                                                                        "functionName": {
+                                                                                            "name": "sub",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "6205:3:6"
+                                                                                        },
+                                                                                        "nodeType": "YulFunctionCall",
+                                                                                        "src": "6205:22:6"
+                                                                                    },
+                                                                                    {
+                                                                                        "arguments": [
+                                                                                            {
+                                                                                                "kind": "number",
+                                                                                                "nodeType": "YulLiteral",
+                                                                                                "src": "6233:2:6",
+                                                                                                "type": "",
+                                                                                                "value": "95"
+                                                                                            }
+                                                                                        ],
+                                                                                        "functionName": {
+                                                                                            "name": "not",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "6229:3:6"
+                                                                                        },
+                                                                                        "nodeType": "YulFunctionCall",
+                                                                                        "src": "6229:7:6"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "add",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "6201:3:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "6201:36:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "mstore",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6189:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6189:49:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "6189:49:6"
+                                                                },
+                                                                {
+                                                                    "nodeType": "YulVariableDeclaration",
+                                                                    "src": "6251:46:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "srcPtr",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6290:6:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "calldataload",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6277:12:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6277:20:6"
+                                                                    },
+                                                                    "variables": [
+                                                                        {
+                                                                            "name": "rel_offset_of_tail",
+                                                                            "nodeType": "YulTypedName",
+                                                                            "src": "6255:18:6",
+                                                                            "type": ""
+                                                                        }
+                                                                    ]
+                                                                },
+                                                                {
+                                                                    "body": {
+                                                                        "nodeType": "YulBlock",
+                                                                        "src": "6388:16:6",
+                                                                        "statements": [
+                                                                            {
+                                                                                "expression": {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "name": "i",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "6397:1:6"
+                                                                                        },
+                                                                                        {
+                                                                                            "name": "i",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "6400:1:6"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "revert",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6390:6:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "6390:12:6"
+                                                                                },
+                                                                                "nodeType": "YulExpressionStatement",
+                                                                                "src": "6390:12:6"
+                                                                            }
+                                                                        ]
+                                                                    },
+                                                                    "condition": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "name": "rel_offset_of_tail",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6324:18:6"
+                                                                                    },
+                                                                                    {
+                                                                                        "arguments": [
+                                                                                            {
+                                                                                                "arguments": [
+                                                                                                    {
+                                                                                                        "arguments": [],
+                                                                                                        "functionName": {
+                                                                                                            "name": "calldatasize",
+                                                                                                            "nodeType": "YulIdentifier",
+                                                                                                            "src": "6352:12:6"
+                                                                                                        },
+                                                                                                        "nodeType": "YulFunctionCall",
+                                                                                                        "src": "6352:14:6"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "name": "value1",
+                                                                                                        "nodeType": "YulIdentifier",
+                                                                                                        "src": "6368:6:6"
+                                                                                                    }
+                                                                                                ],
+                                                                                                "functionName": {
+                                                                                                    "name": "sub",
+                                                                                                    "nodeType": "YulIdentifier",
+                                                                                                    "src": "6348:3:6"
+                                                                                                },
+                                                                                                "nodeType": "YulFunctionCall",
+                                                                                                "src": "6348:27:6"
+                                                                                            },
+                                                                                            {
+                                                                                                "arguments": [
+                                                                                                    {
+                                                                                                        "kind": "number",
+                                                                                                        "nodeType": "YulLiteral",
+                                                                                                        "src": "6381:2:6",
+                                                                                                        "type": "",
+                                                                                                        "value": "62"
+                                                                                                    }
+                                                                                                ],
+                                                                                                "functionName": {
+                                                                                                    "name": "not",
+                                                                                                    "nodeType": "YulIdentifier",
+                                                                                                    "src": "6377:3:6"
+                                                                                                },
+                                                                                                "nodeType": "YulFunctionCall",
+                                                                                                "src": "6377:7:6"
+                                                                                            }
+                                                                                        ],
+                                                                                        "functionName": {
+                                                                                            "name": "add",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "6344:3:6"
+                                                                                        },
+                                                                                        "nodeType": "YulFunctionCall",
+                                                                                        "src": "6344:41:6"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "slt",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "6320:3:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "6320:66:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "iszero",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6313:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6313:74:6"
+                                                                    },
+                                                                    "nodeType": "YulIf",
+                                                                    "src": "6310:94:6"
+                                                                },
+                                                                {
+                                                                    "nodeType": "YulVariableDeclaration",
+                                                                    "src": "6417:44:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "rel_offset_of_tail",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6434:18:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "value1",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6454:6:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "add",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6430:3:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6430:31:6"
+                                                                    },
+                                                                    "variables": [
+                                                                        {
+                                                                            "name": "value",
+                                                                            "nodeType": "YulTypedName",
+                                                                            "src": "6421:5:6",
+                                                                            "type": ""
+                                                                        }
+                                                                    ]
+                                                                },
+                                                                {
+                                                                    "nodeType": "YulVariableDeclaration",
+                                                                    "src": "6474:79:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "value",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6540:5:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "value",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6547:5:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "calldata_access_string_calldata",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6508:31:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6508:45:6"
+                                                                    },
+                                                                    "variables": [
+                                                                        {
+                                                                            "name": "memberValue0",
+                                                                            "nodeType": "YulTypedName",
+                                                                            "src": "6478:12:6",
+                                                                            "type": ""
+                                                                        },
+                                                                        {
+                                                                            "name": "memberValue1",
+                                                                            "nodeType": "YulTypedName",
+                                                                            "src": "6492:12:6",
+                                                                            "type": ""
+                                                                        }
+                                                                    ]
+                                                                },
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "tail_2",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6573:6:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "_1",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6581:2:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "mstore",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6566:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6566:18:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "6566:18:6"
+                                                                },
+                                                                {
+                                                                    "nodeType": "YulVariableDeclaration",
+                                                                    "src": "6597:85:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "memberValue0",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6638:12:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "memberValue1",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6652:12:6"
+                                                                            },
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "name": "tail_2",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6670:6:6"
+                                                                                    },
+                                                                                    {
+                                                                                        "name": "_1",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6678:2:6"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "add",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "6666:3:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "6666:15:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "abi_encode_string_calldata",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6611:26:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6611:71:6"
+                                                                    },
+                                                                    "variables": [
+                                                                        {
+                                                                            "name": "tail_3",
+                                                                            "nodeType": "YulTypedName",
+                                                                            "src": "6601:6:6",
+                                                                            "type": ""
+                                                                        }
+                                                                    ]
+                                                                },
+                                                                {
+                                                                    "nodeType": "YulVariableDeclaration",
+                                                                    "src": "6695:92:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "value",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6765:5:6"
+                                                                            },
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "name": "value",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6776:5:6"
+                                                                                    },
+                                                                                    {
+                                                                                        "name": "_2",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6783:2:6"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "add",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "6772:3:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "6772:14:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "calldata_access_string_calldata",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6733:31:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6733:54:6"
+                                                                    },
+                                                                    "variables": [
+                                                                        {
+                                                                            "name": "memberValue0_1",
+                                                                            "nodeType": "YulTypedName",
+                                                                            "src": "6699:14:6",
+                                                                            "type": ""
+                                                                        },
+                                                                        {
+                                                                            "name": "memberValue1_1",
+                                                                            "nodeType": "YulTypedName",
+                                                                            "src": "6715:14:6",
+                                                                            "type": ""
+                                                                        }
+                                                                    ]
+                                                                },
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "name": "tail_2",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6811:6:6"
+                                                                                    },
+                                                                                    {
+                                                                                        "name": "_2",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6819:2:6"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "add",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "6807:3:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "6807:15:6"
+                                                                            },
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "name": "tail_3",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6828:6:6"
+                                                                                    },
+                                                                                    {
+                                                                                        "name": "tail_2",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "6836:6:6"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "sub",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "6824:3:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "6824:19:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "mstore",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6800:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6800:44:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "6800:44:6"
+                                                                },
+                                                                {
+                                                                    "nodeType": "YulAssignment",
+                                                                    "src": "6857:76:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "memberValue0_1",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6894:14:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "memberValue1_1",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6910:14:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "tail_3",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6926:6:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "abi_encode_string_calldata",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6867:26:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6867:66:6"
+                                                                    },
+                                                                    "variableNames": [
+                                                                        {
+                                                                            "name": "tail_2",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6857:6:6"
+                                                                        }
+                                                                    ]
+                                                                },
+                                                                {
+                                                                    "nodeType": "YulAssignment",
+                                                                    "src": "6946:25:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "srcPtr",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6960:6:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "_2",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6968:2:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "add",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6956:3:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6956:15:6"
+                                                                    },
+                                                                    "variableNames": [
+                                                                        {
+                                                                            "name": "srcPtr",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6946:6:6"
+                                                                        }
+                                                                    ]
+                                                                },
+                                                                {
+                                                                    "nodeType": "YulAssignment",
+                                                                    "src": "6984:19:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "pos",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6995:3:6"
+                                                                            },
+                                                                            {
+                                                                                "name": "_2",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "7000:2:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "add",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6991:3:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6991:12:6"
+                                                                    },
+                                                                    "variableNames": [
+                                                                        {
+                                                                            "name": "pos",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6984:3:6"
+                                                                        }
+                                                                    ]
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "i_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "6131:3:6"
+                                                                },
+                                                                {
+                                                                    "name": "value2",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "6136:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "lt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "6128:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "6128:15:6"
+                                                        },
+                                                        "nodeType": "YulForLoop",
+                                                        "post": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "6144:22:6",
+                                                            "statements": [
+                                                                {
+                                                                    "nodeType": "YulAssignment",
+                                                                    "src": "6146:18:6",
+                                                                    "value": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "name": "i_1",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "6157:3:6"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "6162:1:6",
+                                                                                "type": "",
+                                                                                "value": "1"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "add",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6153:3:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "6153:11:6"
+                                                                    },
+                                                                    "variableNames": [
+                                                                        {
+                                                                            "name": "i_1",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "6146:3:6"
+                                                                        }
+                                                                    ]
+                                                                }
+                                                            ]
+                                                        },
+                                                        "pre": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "6124:3:6",
+                                                            "statements": []
+                                                        },
+                                                        "src": "6120:893:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "7022:14:6",
+                                                        "value": {
+                                                            "name": "tail_2",
+                                                            "nodeType": "YulIdentifier",
+                                                            "src": "7030:6:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7022:4:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_uint256_t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr__to_t_uint256_t_array$_t_struct$_Tuple21_$620_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5685:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value2",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5696:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value1",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5704:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5712:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "5723:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "5493:1549:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "7106:123:6",
+                                                "statements": [
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "pos",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "7123:3:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "value",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "7138:5:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "mload",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "7132:5:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "7132:12:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "7154:3:6",
+                                                                                            "type": "",
+                                                                                            "value": "160"
+                                                                                        },
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "7159:1:6",
+                                                                                            "type": "",
+                                                                                            "value": "1"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "shl",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "7150:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "7150:11:6"
+                                                                                },
+                                                                                {
+                                                                                    "kind": "number",
+                                                                                    "nodeType": "YulLiteral",
+                                                                                    "src": "7163:1:6",
+                                                                                    "type": "",
+                                                                                    "value": "1"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "sub",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "7146:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "7146:19:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "and",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "7128:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "7128:38:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7116:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7116:51:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "7116:51:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "pos",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "7187:3:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "7192:4:6",
+                                                                            "type": "",
+                                                                            "value": "0x20"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "7183:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "7183:14:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "name": "value",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "7209:5:6"
+                                                                                },
+                                                                                {
+                                                                                    "kind": "number",
+                                                                                    "nodeType": "YulLiteral",
+                                                                                    "src": "7216:4:6",
+                                                                                    "type": "",
+                                                                                    "value": "0x20"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "7205:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "7205:16:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "mload",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "7199:5:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "7199:23:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7176:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7176:47:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "7176:47:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_struct_EthCrossAccount",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "value",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7090:5:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "pos",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7097:3:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "7047:182:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "7519:218:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "7529:27:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "7541:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "7552:3:6",
+                                                                    "type": "",
+                                                                    "value": "160"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7537:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7537:19:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7529:4:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value0",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "7599:6:6"
+                                                                },
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "7607:9:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_encode_struct_EthCrossAccount",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7565:33:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7565:52:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "7565:52:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "7660:6:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "7672:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "7683:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "7668:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "7668:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_encode_struct_EthCrossAccount",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7626:33:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7626:61:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "7626:61:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "7707:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "7718:3:6",
+                                                                            "type": "",
+                                                                            "value": "128"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "7703:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "7703:19:6"
+                                                                },
+                                                                {
+                                                                    "name": "value2",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "7724:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7696:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7696:35:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "7696:35:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_struct$_EthCrossAccount_$610_memory_ptr_t_struct$_EthCrossAccount_$610_memory_ptr_t_uint256__to_t_struct$_EthCrossAccount_$610_memory_ptr_t_struct$_EthCrossAccount_$610_memory_ptr_t_uint256__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7472:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value2",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7483:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value1",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7491:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7499:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7510:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "7234:503:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "7916:239:6",
+                                                "statements": [
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "7933:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "7944:2:6",
+                                                                    "type": "",
+                                                                    "value": "32"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7926:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7926:21:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "7926:21:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "7967:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "7978:2:6",
+                                                                            "type": "",
+                                                                            "value": "32"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "7963:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "7963:18:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "7983:2:6",
+                                                                    "type": "",
+                                                                    "value": "49"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7956:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7956:30:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "7956:30:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8006:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8017:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8002:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8002:18:6"
+                                                                },
+                                                                {
+                                                                    "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c",
+                                                                    "kind": "string",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8022:34:6",
+                                                                    "type": "",
+                                                                    "value": "Wrong collection type. Works onl"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "7995:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "7995:62:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "7995:62:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8077:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8088:2:6",
+                                                                            "type": "",
+                                                                            "value": "96"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8073:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8073:18:6"
+                                                                },
+                                                                {
+                                                                    "hexValue": "792077697468204e4654206f7220524654",
+                                                                    "kind": "string",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8093:19:6",
+                                                                    "type": "",
+                                                                    "value": "y with NFT or RFT"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8066:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8066:47:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "8066:47:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "8122:27:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "8134:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8145:3:6",
+                                                                    "type": "",
+                                                                    "value": "128"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8130:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8130:19:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8122:4:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a__to_t_string_memory_ptr__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7893:9:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "7907:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "7742:413:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "8345:262:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "8355:27:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "8367:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8378:3:6",
+                                                                    "type": "",
+                                                                    "value": "128"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8363:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8363:19:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8355:4:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "8391:29:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8409:3:6",
+                                                                            "type": "",
+                                                                            "value": "160"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8414:1:6",
+                                                                            "type": "",
+                                                                            "value": "1"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "shl",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8405:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8405:11:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8418:1:6",
+                                                                    "type": "",
+                                                                    "value": "1"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "sub",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8401:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8401:19:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "8395:2:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "8436:9:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "value0",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8451:6:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "_1",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8459:2:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "and",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8447:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8447:15:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8429:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8429:34:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "8429:34:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8483:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8494:2:6",
+                                                                            "type": "",
+                                                                            "value": "32"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8479:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8479:18:6"
+                                                                },
+                                                                {
+                                                                    "name": "value1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "8499:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8472:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8472:34:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "8472:34:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8526:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8537:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8522:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8522:18:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "value2",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8546:6:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "_1",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8554:2:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "and",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8542:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8542:15:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8515:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8515:43:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "8515:43:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8578:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8589:2:6",
+                                                                            "type": "",
+                                                                            "value": "96"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8574:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8574:18:6"
+                                                                },
+                                                                {
+                                                                    "name": "value3",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "8594:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8567:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8567:34:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "8567:34:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_address_t_uint256_t_address_t_uint256__to_t_address_t_uint256_t_address_t_uint256__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8290:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value3",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8301:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value2",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8309:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value1",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8317:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8325:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8336:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "8160:447:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "8644:95:6",
+                                                "statements": [
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8661:1:6",
+                                                                    "type": "",
+                                                                    "value": "0"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8668:3:6",
+                                                                            "type": "",
+                                                                            "value": "224"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "8673:10:6",
+                                                                            "type": "",
+                                                                            "value": "0x4e487b71"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "shl",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8664:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8664:20:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8654:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8654:31:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "8654:31:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8701:1:6",
+                                                                    "type": "",
+                                                                    "value": "4"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8704:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x32"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8694:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8694:15:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "8694:15:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8725:1:6",
+                                                                    "type": "",
+                                                                    "value": "0"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "8728:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x24"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "revert",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8718:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8718:15:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "8718:15:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "panic_error_0x32",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "src": "8612:127:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "8847:222:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "8857:51:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "ptr_to_tail",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "8896:11:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8883:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8883:25:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "rel_offset_of_tail",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "8861:18:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "8997:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9006:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9009:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8999:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "8999:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "8999:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "rel_offset_of_tail",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "8931:18:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "arguments": [],
+                                                                                            "functionName": {
+                                                                                                "name": "calldatasize",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "8959:12:6"
+                                                                                            },
+                                                                                            "nodeType": "YulFunctionCall",
+                                                                                            "src": "8959:14:6"
+                                                                                        },
+                                                                                        {
+                                                                                            "name": "base_ref",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "8975:8:6"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "sub",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "8955:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "8955:29:6"
+                                                                                },
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "8990:2:6",
+                                                                                            "type": "",
+                                                                                            "value": "62"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "not",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "8986:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "8986:7:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "8951:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "8951:43:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "slt",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "8927:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "8927:68:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "iszero",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "8920:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "8920:76:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "8917:96:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "9022:41:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "base_ref",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9034:8:6"
+                                                                },
+                                                                {
+                                                                    "name": "rel_offset_of_tail",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9044:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9030:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9030:33:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "addr",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9022:4:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "access_calldata_tail_t_struct$_Property_$1762_calldata_ptr",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "base_ref",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8812:8:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "ptr_to_tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8822:11:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "addr",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "8838:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "8744:325:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "9169:427:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "9179:51:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "ptr_to_tail",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9218:11:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9205:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9205:25:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "rel_offset_of_tail",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "9183:18:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "9319:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9328:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9331:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "9321:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "9321:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "9321:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "rel_offset_of_tail",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "9253:18:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "arguments": [],
+                                                                                            "functionName": {
+                                                                                                "name": "calldatasize",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "9281:12:6"
+                                                                                            },
+                                                                                            "nodeType": "YulFunctionCall",
+                                                                                            "src": "9281:14:6"
+                                                                                        },
+                                                                                        {
+                                                                                            "name": "base_ref",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "9297:8:6"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "sub",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "9277:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "9277:29:6"
+                                                                                },
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "9312:2:6",
+                                                                                            "type": "",
+                                                                                            "value": "30"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "not",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "9308:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "9308:7:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "9273:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "9273:43:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "slt",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "9249:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "9249:68:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "iszero",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9242:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9242:76:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "9239:96:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "9344:47:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "base_ref",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9362:8:6"
+                                                                },
+                                                                {
+                                                                    "name": "rel_offset_of_tail",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9372:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9358:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9358:33:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "addr_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "9348:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "9400:30:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "addr_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9423:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9410:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9410:20:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "length",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9400:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "9473:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9482:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9485:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "9475:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "9475:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "9475:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "length",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9445:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "9453:18:6",
+                                                                    "type": "",
+                                                                    "value": "0xffffffffffffffff"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9442:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9442:30:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "9439:50:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "9498:25:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "addr_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9510:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "9518:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x20"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9506:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9506:17:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "addr",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9498:4:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "9574:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9583:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9586:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "9576:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "9576:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "9576:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "addr",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9539:4:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [],
+                                                                            "functionName": {
+                                                                                "name": "calldatasize",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "9549:12:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "9549:14:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "length",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "9565:6:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "9545:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "9545:27:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "sgt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9535:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9535:38:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "9532:58:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "access_calldata_tail_t_string_calldata_ptr",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "base_ref",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "9126:8:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "ptr_to_tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "9136:11:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "addr",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "9152:4:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "length",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "9158:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "9074:522:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "9695:427:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "9705:51:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "ptr_to_tail",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9744:11:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9731:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9731:25:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "rel_offset_of_tail",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "9709:18:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "9845:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9854:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "9857:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "9847:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "9847:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "9847:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "rel_offset_of_tail",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "9779:18:6"
+                                                                        },
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "arguments": [],
+                                                                                            "functionName": {
+                                                                                                "name": "calldatasize",
+                                                                                                "nodeType": "YulIdentifier",
+                                                                                                "src": "9807:12:6"
+                                                                                            },
+                                                                                            "nodeType": "YulFunctionCall",
+                                                                                            "src": "9807:14:6"
+                                                                                        },
+                                                                                        {
+                                                                                            "name": "base_ref",
+                                                                                            "nodeType": "YulIdentifier",
+                                                                                            "src": "9823:8:6"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "sub",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "9803:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "9803:29:6"
+                                                                                },
+                                                                                {
+                                                                                    "arguments": [
+                                                                                        {
+                                                                                            "kind": "number",
+                                                                                            "nodeType": "YulLiteral",
+                                                                                            "src": "9838:2:6",
+                                                                                            "type": "",
+                                                                                            "value": "30"
+                                                                                        }
+                                                                                    ],
+                                                                                    "functionName": {
+                                                                                        "name": "not",
+                                                                                        "nodeType": "YulIdentifier",
+                                                                                        "src": "9834:3:6"
+                                                                                    },
+                                                                                    "nodeType": "YulFunctionCall",
+                                                                                    "src": "9834:7:6"
+                                                                                }
+                                                                            ],
+                                                                            "functionName": {
+                                                                                "name": "add",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "9799:3:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "9799:43:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "slt",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "9775:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "9775:68:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "iszero",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9768:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9768:76:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "9765:96:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "9870:47:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "base_ref",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9888:8:6"
+                                                                },
+                                                                {
+                                                                    "name": "rel_offset_of_tail",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9898:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9884:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9884:33:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "addr_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "9874:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "9926:30:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "addr_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9949:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "calldataload",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9936:12:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9936:20:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "length",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9926:6:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "9999:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10008:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10011:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10001:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "10001:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "10001:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "length",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "9971:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "9979:18:6",
+                                                                    "type": "",
+                                                                    "value": "0xffffffffffffffff"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "gt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "9968:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "9968:30:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "9965:50:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "10024:25:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "addr_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10036:6:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "10044:4:6",
+                                                                    "type": "",
+                                                                    "value": "0x20"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10032:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10032:17:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "addr",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10024:4:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "10100:16:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10109:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10112:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10102:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "10102:12:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "10102:12:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "addr",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10065:4:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [],
+                                                                            "functionName": {
+                                                                                "name": "calldatasize",
+                                                                                "nodeType": "YulIdentifier",
+                                                                                "src": "10075:12:6"
+                                                                            },
+                                                                            "nodeType": "YulFunctionCall",
+                                                                            "src": "10075:14:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "length",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10091:6:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "10071:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "10071:27:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "sgt",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10061:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10061:38:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "10058:58:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "access_calldata_tail_t_bytes_calldata_ptr",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "base_ref",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "9652:8:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "ptr_to_tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "9662:11:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "addr",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "9678:4:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "length",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "9684:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "9601:521:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "10342:291:6",
+                                                "statements": [
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10359:9:6"
+                                                                },
+                                                                {
+                                                                    "name": "value0",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10370:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10352:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10352:25:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "10352:25:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10397:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "10408:2:6",
+                                                                            "type": "",
+                                                                            "value": "32"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "10393:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "10393:18:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "10413:2:6",
+                                                                    "type": "",
+                                                                    "value": "96"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10386:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10386:30:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "10386:30:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulVariableDeclaration",
+                                                        "src": "10425:76:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10466:6:6"
+                                                                },
+                                                                {
+                                                                    "name": "value2",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10474:6:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10486:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "10497:2:6",
+                                                                            "type": "",
+                                                                            "value": "96"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "10482:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "10482:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_encode_string_calldata",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10439:26:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10439:62:6"
+                                                        },
+                                                        "variables": [
+                                                            {
+                                                                "name": "tail_1",
+                                                                "nodeType": "YulTypedName",
+                                                                "src": "10429:6:6",
+                                                                "type": ""
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10521:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "10532:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "10517:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "10517:18:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "tail_1",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10541:6:6"
+                                                                        },
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10549:9:6"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "sub",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "10537:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "10537:22:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10510:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10510:50:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "10510:50:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "10569:58:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value3",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10604:6:6"
+                                                                },
+                                                                {
+                                                                    "name": "value4",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10612:6:6"
+                                                                },
+                                                                {
+                                                                    "name": "tail_1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10620:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_encode_string_calldata",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10577:26:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10577:50:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10569:4:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_uint256_t_string_calldata_ptr_t_bytes_calldata_ptr__to_t_uint256_t_string_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10279:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value4",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10290:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value3",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10298:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value2",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10306:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value1",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10314:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10322:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10333:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "10127:506:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "10685:185:6",
+                                                "statements": [
+                                                    {
+                                                        "body": {
+                                                            "nodeType": "YulBlock",
+                                                            "src": "10724:111:6",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10745:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "kind": "number",
+                                                                                        "nodeType": "YulLiteral",
+                                                                                        "src": "10752:3:6",
+                                                                                        "type": "",
+                                                                                        "value": "224"
+                                                                                    },
+                                                                                    {
+                                                                                        "kind": "number",
+                                                                                        "nodeType": "YulLiteral",
+                                                                                        "src": "10757:10:6",
+                                                                                        "type": "",
+                                                                                        "value": "0x4e487b71"
+                                                                                    }
+                                                                                ],
+                                                                                "functionName": {
+                                                                                    "name": "shl",
+                                                                                    "nodeType": "YulIdentifier",
+                                                                                    "src": "10748:3:6"
+                                                                                },
+                                                                                "nodeType": "YulFunctionCall",
+                                                                                "src": "10748:20:6"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "mstore",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10738:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "10738:31:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "10738:31:6"
+                                                                },
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10789:1:6",
+                                                                                "type": "",
+                                                                                "value": "4"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10792:4:6",
+                                                                                "type": "",
+                                                                                "value": "0x11"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "mstore",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10782:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "10782:15:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "10782:15:6"
+                                                                },
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10817:1:6",
+                                                                                "type": "",
+                                                                                "value": "0"
+                                                                            },
+                                                                            {
+                                                                                "kind": "number",
+                                                                                "nodeType": "YulLiteral",
+                                                                                "src": "10820:4:6",
+                                                                                "type": "",
+                                                                                "value": "0x24"
+                                                                            }
+                                                                        ],
+                                                                        "functionName": {
+                                                                            "name": "revert",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "10810:6:6"
+                                                                        },
+                                                                        "nodeType": "YulFunctionCall",
+                                                                        "src": "10810:15:6"
+                                                                    },
+                                                                    "nodeType": "YulExpressionStatement",
+                                                                    "src": "10810:15:6"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10701:5:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "10712:1:6",
+                                                                            "type": "",
+                                                                            "value": "0"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "not",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "10708:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "10708:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "eq",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10698:2:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10698:17:6"
+                                                        },
+                                                        "nodeType": "YulIf",
+                                                        "src": "10695:140:6"
+                                                    },
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "10844:20:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "10855:5:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "10862:1:6",
+                                                                    "type": "",
+                                                                    "value": "1"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10851:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "10851:13:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "ret",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "10844:3:6"
+                                                            }
+                                                        ]
+                                                    }
+                                                ]
+                                            },
+                                            "name": "increment_t_uint256",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "value",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10667:5:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "ret",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "10677:3:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "10638:232:6"
+                                        },
+                                        {
+                                            "body": {
+                                                "nodeType": "YulBlock",
+                                                "src": "11164:218:6",
+                                                "statements": [
+                                                    {
+                                                        "nodeType": "YulAssignment",
+                                                        "src": "11174:27:6",
+                                                        "value": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "11186:9:6"
+                                                                },
+                                                                {
+                                                                    "kind": "number",
+                                                                    "nodeType": "YulLiteral",
+                                                                    "src": "11197:3:6",
+                                                                    "type": "",
+                                                                    "value": "160"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "add",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "11182:3:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "11182:19:6"
+                                                        },
+                                                        "variableNames": [
+                                                            {
+                                                                "name": "tail",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "11174:4:6"
+                                                            }
+                                                        ]
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value0",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "11244:6:6"
+                                                                },
+                                                                {
+                                                                    "name": "headStart",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "11252:9:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_encode_struct_EthCrossAccount",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "11210:33:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "11210:52:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "11210:52:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "name": "value1",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "11305:6:6"
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "11317:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "11328:2:6",
+                                                                            "type": "",
+                                                                            "value": "64"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "11313:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "11313:18:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "abi_encode_struct_EthCrossAccount",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "11271:33:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "11271:61:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "11271:61:6"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "name": "headStart",
+                                                                            "nodeType": "YulIdentifier",
+                                                                            "src": "11352:9:6"
+                                                                        },
+                                                                        {
+                                                                            "kind": "number",
+                                                                            "nodeType": "YulLiteral",
+                                                                            "src": "11363:3:6",
+                                                                            "type": "",
+                                                                            "value": "128"
+                                                                        }
+                                                                    ],
+                                                                    "functionName": {
+                                                                        "name": "add",
+                                                                        "nodeType": "YulIdentifier",
+                                                                        "src": "11348:3:6"
+                                                                    },
+                                                                    "nodeType": "YulFunctionCall",
+                                                                    "src": "11348:19:6"
+                                                                },
+                                                                {
+                                                                    "name": "value2",
+                                                                    "nodeType": "YulIdentifier",
+                                                                    "src": "11369:6:6"
+                                                                }
+                                                            ],
+                                                            "functionName": {
+                                                                "name": "mstore",
+                                                                "nodeType": "YulIdentifier",
+                                                                "src": "11341:6:6"
+                                                            },
+                                                            "nodeType": "YulFunctionCall",
+                                                            "src": "11341:35:6"
+                                                        },
+                                                        "nodeType": "YulExpressionStatement",
+                                                        "src": "11341:35:6"
+                                                    }
+                                                ]
+                                            },
+                                            "name": "abi_encode_tuple_t_struct$_EthCrossAccount_$1253_memory_ptr_t_struct$_EthCrossAccount_$1253_memory_ptr_t_uint256__to_t_struct$_EthCrossAccount_$1253_memory_ptr_t_struct$_EthCrossAccount_$1253_memory_ptr_t_uint256__fromStack_reversed",
+                                            "nodeType": "YulFunctionDefinition",
+                                            "parameters": [
+                                                {
+                                                    "name": "headStart",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "11117:9:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value2",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "11128:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value1",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "11136:6:6",
+                                                    "type": ""
+                                                },
+                                                {
+                                                    "name": "value0",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "11144:6:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "returnVariables": [
+                                                {
+                                                    "name": "tail",
+                                                    "nodeType": "YulTypedName",
+                                                    "src": "11155:4:6",
+                                                    "type": ""
+                                                }
+                                            ],
+                                            "src": "10875:507:6"
+                                        }
+                                    ]
+                                },
+                                "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_array_struct_Tuple21_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_struct_Tuple21_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_struct_Tuple21_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"Only collection admin/owner can \")\n        mstore(add(headStart, 96), \"call this method\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Properies is empty\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _4) { i := add(i, _1) }\n        {\n            mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n        }\n        mstore(add(add(memPtr, _4), _1), 0)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function calldata_access_string_calldata(base_ref, ptr) -> value, length\n    {\n        let rel_offset_of_tail := calldataload(ptr)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let value_1 := add(rel_offset_of_tail, base_ref)\n        length := calldataload(value_1)\n        value := add(value_1, 0x20)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        if sgt(value, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_string_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_uint256_t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr__to_t_uint256_t_array$_t_struct$_Tuple21_$620_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        let _1 := 64\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, value0)\n        let _2 := 32\n        mstore(add(headStart, _2), _1)\n        let pos := tail_1\n        mstore(tail_1, value2)\n        pos := add(headStart, 96)\n        let tail_2 := add(add(headStart, shl(5, value2)), 96)\n        let srcPtr := value1\n        let i := 0\n        let i_1 := i\n        for { } lt(i_1, value2) { i_1 := add(i_1, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(95)))\n            let rel_offset_of_tail := calldataload(srcPtr)\n            if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value1), not(62)))) { revert(i, i) }\n            let value := add(rel_offset_of_tail, value1)\n            let memberValue0, memberValue1 := calldata_access_string_calldata(value, value)\n            mstore(tail_2, _1)\n            let tail_3 := abi_encode_string_calldata(memberValue0, memberValue1, add(tail_2, _1))\n            let memberValue0_1, memberValue1_1 := calldata_access_string_calldata(value, add(value, _2))\n            mstore(add(tail_2, _2), sub(tail_3, tail_2))\n            tail_2 := abi_encode_string_calldata(memberValue0_1, memberValue1_1, tail_3)\n            srcPtr := add(srcPtr, _2)\n            pos := add(pos, _2)\n        }\n        tail := tail_2\n    }\n    function abi_encode_struct_EthCrossAccount(value, pos)\n    {\n        mstore(pos, and(mload(value), sub(shl(160, 1), 1)))\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n    }\n    function abi_encode_tuple_t_struct$_EthCrossAccount_$610_memory_ptr_t_struct$_EthCrossAccount_$610_memory_ptr_t_uint256__to_t_struct$_EthCrossAccount_$610_memory_ptr_t_struct$_EthCrossAccount_$610_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        abi_encode_struct_EthCrossAccount(value0, headStart)\n        abi_encode_struct_EthCrossAccount(value1, add(headStart, 64))\n        mstore(add(headStart, 128), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Wrong collection type. Works onl\")\n        mstore(add(headStart, 96), \"y with NFT or RFT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_address_t_uint256__to_t_address_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_struct$_Property_$1762_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(62)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_string_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_t_uint256_t_string_calldata_ptr_t_bytes_calldata_ptr__to_t_uint256_t_string_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string_calldata(value1, value2, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string_calldata(value3, value4, tail_1)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_struct$_EthCrossAccount_$1253_memory_ptr_t_struct$_EthCrossAccount_$1253_memory_ptr_t_uint256__to_t_struct$_EthCrossAccount_$1253_memory_ptr_t_struct$_EthCrossAccount_$1253_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        abi_encode_struct_EthCrossAccount(value0, headStart)\n        abi_encode_struct_EthCrossAccount(value1, add(headStart, 64))\n        mstore(add(headStart, 128), value2)\n    }\n}",
+                                "id": 6,
+                                "language": "Yul",
+                                "name": "#utility.yul"
+                            }
+                        ],
+                        "immutableReferences": {},
+                        "linkReferences": {},
+                        "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c80633a0dbb1a14610046578063440dff9d1461005b5780637a8d97861461006e575b600080fd5b610059610054366004610d6f565b610081565b005b610059610069366004610d6f565b610472565b61005961007c366004610dc9565b6109fb565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156100c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ed9190610df3565b6101125760405162461bcd60e51b815260040161010990610e1c565b60405180910390fd5b82806101555760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa15801561019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c29190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201156104165760408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b81523060048201528a906001600160a01b03821690636a627842906024016020604051808303816000875af11580156102a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c69190610f4c565b604051630a769d3760e11b81529092506001600160a01b038216906314ed3a6e906102f99085908d908d90600401610fd4565b600060405180830381600087803b15801561031357600080fd5b505af1158015610327573d6000803e3d6000fd5b5050604080518082018252308152600060208083018290528351808501855291825281018f9052915163d5cf430b60e01b81526001600160a01b038616945063d5cf430b935061037c92908790600401611088565b600060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b5050505050610416565b60405162461bcd60e51b815260206004820152603160248201527f57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c6044820152701e481dda5d1a08139195081bdc88149195607a1b6064820152608401610109565b6040805160008152602081018b90526001600160a01b038c16818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050505050565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104de9190610df3565b6104fa5760405162461bcd60e51b815260040161010990610e1c565b828061053d5760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b6044820152606401610109565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105aa9190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b29582016108065760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106669190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d39190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c85818110610701576107016110c1565b905060200281019061071391906110d7565b61071d90806110f7565b8e8e8781811061072f5761072f6110c1565b905060200281019061074191906110d7565b61074f9060208101906110f7565b6040518663ffffffff1660e01b815260040161076f95949392919061113e565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050806107ab90611177565b90506106d7565b50604080518082018252308152600060208083018290528351808501855291825281018d9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b9261037c929091908790600401611088565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b45760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af9190610f4c565b6040516335313c2160e11b81523060048201529092506001600160a01b03821690636a627842906024016020604051808303816000875af11580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190610f4c565b5060005b858110156107b257816001600160a01b0316631752d67b848c8c8581811061094a5761094a6110c1565b905060200281019061095c91906110d7565b61096690806110f7565b8e8e87818110610978576109786110c1565b905060200281019061098a91906110d7565b6109989060208101906110f7565b6040518663ffffffff1660e01b81526004016109b895949392919061113e565b600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b50505050806109f490611177565b9050610920565b604051639811b0c760e01b8152336004820152829081906001600160a01b03821690639811b0c790602401602060405180830381865afa158015610a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a679190610df3565b610a835760405162461bcd60e51b815260040161010990610e1c565b60008490506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af09190810190610e82565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b2958201610c3e576040516335313c2160e11b815230600482015287906001600160a01b03821690636a627842906024015b6020604051808303816000875af1158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb29190610f4c565b604080518082018252308152600060208083018290528351808501855291825281018b9052915163d5cf430b60e01b81529294506001600160a01b0384169263d5cf430b92610c0692918790600401611088565b600060405180830381600087803b158015610c2057600080fd5b505af1158015610c34573d6000803e3d6000fd5b5050505050610cae565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe9682016103b4576040516335313c2160e11b815230600482015287906001600160a01b03821690636a62784290602401610b6f565b6040805160008152602081018890526001600160a01b038916818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050565b80356001600160a01b0381168114610d1e57600080fd5b919050565b60008083601f840112610d3557600080fd5b50813567ffffffffffffffff811115610d4d57600080fd5b6020830191508360208260051b8501011115610d6857600080fd5b9250929050565b60008060008060608587031215610d8557600080fd5b610d8e85610d07565b935060208501359250604085013567ffffffffffffffff811115610db157600080fd5b610dbd87828801610d23565b95989497509550505050565b60008060408385031215610ddc57600080fd5b610de583610d07565b946020939093013593505050565b600060208284031215610e0557600080fd5b81518015158114610e1557600080fd5b9392505050565b60208082526030908201527f4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2060408201526f18d85b1b081d1a1a5cc81b595d1a1bd960821b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610e9557600080fd5b825167ffffffffffffffff80821115610ead57600080fd5b818501915085601f830112610ec157600080fd5b815181811115610ed357610ed3610e6c565b604051601f8201601f19908116603f01168101908382118183101715610efb57610efb610e6c565b816040528281528886848701011115610f1357600080fd5b600093505b82841015610f355784840186015181850187015292850192610f18565b600086848301015280965050505050505092915050565b600060208284031215610f5e57600080fd5b5051919050565b6000808335601e19843603018112610f7c57600080fd5b830160208101925035905067ffffffffffffffff811115610f9c57600080fd5b803603821315610d6857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006040808301868452602082818601528186835260608601905060608760051b8701019250876000805b8981101561107857888603605f190184528235368c9003603e19018112611024578283fd5b8b016110308180610f65565b8989526110408a8a018284610fab565b91505061104f87830183610f65565b9250888203888a0152611063828483610fab565b98505050938501935091840191600101610fff565b50939a9950505050505050505050565b83516001600160a01b03908116825260209485015185830152835116604082015291909201516060820152608081019190915260a00190565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126110ed57600080fd5b9190910192915050565b6000808335601e1984360301811261110e57600080fd5b83018035915067ffffffffffffffff82111561112957600080fd5b602001915036819003821315610d6857600080fd5b858152606060208201526000611158606083018688610fab565b828103604084015261116b818587610fab565b98975050505050505050565b60006001820161119757634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212206fee43cab49543809f191e238525b8a47306c665c42f86e318153d2b9e9d1de064736f6c63430008110033",
+                        "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3A0DBB1A EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x440DFF9D EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0x7A8D9786 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6F JUMP JUMPDEST PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x59 PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6F JUMP JUMPDEST PUSH2 0x472 JUMP JUMPDEST PUSH2 0x59 PUSH2 0x7C CALLDATASIZE PUSH1 0x4 PUSH2 0xDC9 JUMP JUMPDEST PUSH2 0x9FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9811B0C7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE DUP5 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x9811B0C7 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xED SWAP2 SWAP1 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0x112 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP1 PUSH2 0xE1C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP1 PUSH2 0x155 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x50726F70657269657320697320656D707479 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x109 JUMP JUMPDEST PUSH1 0x0 DUP8 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD34B55B8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1C2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE82 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x526546756E6769626C65 PUSH1 0xB0 SHL SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP PUSH1 0x0 PUSH32 0x3248D02B1E2F292B1142854EBDEEC13D4B4F9224DBCDB24A3D7810FE54B7B295 DUP3 ADD ISZERO PUSH2 0x416 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x139195 PUSH1 0xEA SHL PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH32 0x63BEC732F5ECEE1B8B708F2F01C23AA0F0A08A1F0DF248CEDDA343C476EBFE96 DUP3 ADD PUSH2 0x3B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP11 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C6 SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA769D37 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x14ED3A6E SWAP1 PUSH2 0x2F9 SWAP1 DUP6 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0xFD4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x327 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE ADDRESS DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE SWAP2 DUP3 MSTORE DUP2 ADD DUP16 SWAP1 MSTORE SWAP2 MLOAD PUSH4 0xD5CF430B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP5 POP PUSH4 0xD5CF430B SWAP4 POP PUSH2 0x37C SWAP3 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x416 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57726F6E6720636F6C6C656374696F6E20747970652E20576F726B73206F6E6C PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1E481DDA5D1A08139195081BDC88149195 PUSH1 0x7A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x109 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP2 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFB3433367F20C42151D30B3D2C634726A94C4F9FA7D45120606029741AEB7535 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9811B0C7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE DUP5 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x9811B0C7 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4DE SWAP2 SWAP1 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0x4FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP1 PUSH2 0xE1C JUMP JUMPDEST DUP3 DUP1 PUSH2 0x53D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x50726F70657269657320697320656D707479 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x109 JUMP JUMPDEST PUSH1 0x0 DUP8 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD34B55B8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x5AA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE82 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x526546756E6769626C65 PUSH1 0xB0 SHL SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP PUSH1 0x0 PUSH32 0x3248D02B1E2F292B1142854EBDEEC13D4B4F9224DBCDB24A3D7810FE54B7B295 DUP3 ADD PUSH2 0x806 JUMPI PUSH1 0x0 DUP11 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x75794A3C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x642 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x666 SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6D3 SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x7B2 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1752D67B DUP5 DUP13 DUP13 DUP6 DUP2 DUP2 LT PUSH2 0x701 JUMPI PUSH2 0x701 PUSH2 0x10C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x713 SWAP2 SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x71D SWAP1 DUP1 PUSH2 0x10F7 JUMP JUMPDEST DUP15 DUP15 DUP8 DUP2 DUP2 LT PUSH2 0x72F JUMPI PUSH2 0x72F PUSH2 0x10C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x741 SWAP2 SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x74F SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x76F SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x113E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x79D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH2 0x7AB SWAP1 PUSH2 0x1177 JUMP JUMPDEST SWAP1 POP PUSH2 0x6D7 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE ADDRESS DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE SWAP2 DUP3 MSTORE DUP2 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD PUSH4 0xD5CF430B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH4 0xD5CF430B SWAP3 PUSH2 0x37C SWAP3 SWAP1 SWAP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x139195 PUSH1 0xEA SHL PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH32 0x63BEC732F5ECEE1B8B708F2F01C23AA0F0A08A1F0DF248CEDDA343C476EBFE96 DUP3 ADD PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP11 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x75794A3C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AF SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x91C SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x7B2 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1752D67B DUP5 DUP13 DUP13 DUP6 DUP2 DUP2 LT PUSH2 0x94A JUMPI PUSH2 0x94A PUSH2 0x10C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x95C SWAP2 SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x966 SWAP1 DUP1 PUSH2 0x10F7 JUMP JUMPDEST DUP15 DUP15 DUP8 DUP2 DUP2 LT PUSH2 0x978 JUMPI PUSH2 0x978 PUSH2 0x10C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x98A SWAP2 SWAP1 PUSH2 0x10D7 JUMP JUMPDEST PUSH2 0x998 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x113E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH2 0x9F4 SWAP1 PUSH2 0x1177 JUMP JUMPDEST SWAP1 POP PUSH2 0x920 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9811B0C7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x9811B0C7 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA43 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA67 SWAP2 SWAP1 PUSH2 0xDF3 JUMP JUMPDEST PUSH2 0xA83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP1 PUSH2 0xE1C JUMP JUMPDEST PUSH1 0x0 DUP5 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD34B55B8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xAF0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE82 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x526546756E6769626C65 PUSH1 0xB0 SHL SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP PUSH1 0x0 PUSH32 0x3248D02B1E2F292B1142854EBDEEC13D4B4F9224DBCDB24A3D7810FE54B7B295 DUP3 ADD PUSH2 0xC3E JUMPI PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBB2 SWAP2 SWAP1 PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE ADDRESS DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE SWAP2 DUP3 MSTORE DUP2 ADD DUP12 SWAP1 MSTORE SWAP2 MLOAD PUSH4 0xD5CF430B PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH4 0xD5CF430B SWAP3 PUSH2 0xC06 SWAP3 SWAP2 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x139195 PUSH1 0xEA SHL PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH32 0x63BEC732F5ECEE1B8B708F2F01C23AA0F0A08A1F0DF248CEDDA343C476EBFE96 DUP3 ADD PUSH2 0x3B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35313C21 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE DUP8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH1 0x24 ADD PUSH2 0xB6F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xFB3433367F20C42151D30B3D2C634726A94C4F9FA7D45120606029741AEB7535 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xD35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xD68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8E DUP6 PUSH2 0xD07 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDBD DUP8 DUP3 DUP9 ADD PUSH2 0xD23 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDE5 DUP4 PUSH2 0xD07 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x30 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F6E6C7920636F6C6C656374696F6E2061646D696E2F6F776E65722063616E20 PUSH1 0x40 DUP3 ADD MSTORE PUSH16 0x18D85B1B081D1A1A5CC81B595D1A1BD9 PUSH1 0x82 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xED3 JUMPI PUSH2 0xED3 PUSH2 0xE6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEFB JUMPI PUSH2 0xEFB PUSH2 0xE6C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xF13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0xF35 JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH2 0xF18 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xF7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x20 DUP2 ADD SWAP3 POP CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0xD68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP7 DUP4 MSTORE PUSH1 0x60 DUP7 ADD SWAP1 POP PUSH1 0x60 DUP8 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP8 PUSH1 0x0 DUP1 JUMPDEST DUP10 DUP2 LT ISZERO PUSH2 0x1078 JUMPI DUP9 DUP7 SUB PUSH1 0x5F NOT ADD DUP5 MSTORE DUP3 CALLDATALOAD CALLDATASIZE DUP13 SWAP1 SUB PUSH1 0x3E NOT ADD DUP2 SLT PUSH2 0x1024 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP12 ADD PUSH2 0x1030 DUP2 DUP1 PUSH2 0xF65 JUMP JUMPDEST DUP10 DUP10 MSTORE PUSH2 0x1040 DUP11 DUP11 ADD DUP3 DUP5 PUSH2 0xFAB JUMP JUMPDEST SWAP2 POP POP PUSH2 0x104F DUP8 DUP4 ADD DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP3 POP DUP9 DUP3 SUB DUP9 DUP11 ADD MSTORE PUSH2 0x1063 DUP3 DUP5 DUP4 PUSH2 0xFAB JUMP JUMPDEST SWAP9 POP POP POP SWAP4 DUP6 ADD SWAP4 POP SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xFFF JUMP JUMPDEST POP SWAP4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 SWAP5 DUP6 ADD MLOAD DUP6 DUP4 ADD MSTORE DUP4 MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH1 0x3E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x10ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x110E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xD68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1158 PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0xFAB JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x116B DUP2 DUP6 DUP8 PUSH2 0xFAB JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1197 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH16 0xEE43CAB49543809F191E238525B8A473 MOD 0xC6 PUSH6 0xC42F86E31815 RETURNDATASIZE 0x2B SWAP15 SWAP14 SAR 0xE0 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
+                        "sourceMap": "673:5833:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5448:1056;;;;;;:::i;:::-;;:::i;:::-;;3688:1757;;;;;;:::i;:::-;;:::i;2212:1473::-;;;;;;:::i;:::-;;:::i;5448:1056::-;1226:41;;-1:-1:-1;;;1226:41:5;;1256:10;1226:41;;;2239:51:6;5606:11:5;;;;-1:-1:-1;;;;;1226:29:5;;;;;2212:18:6;;1226:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1218:102;;;;-1:-1:-1;;;1218:102:5;;;;;;;:::i;:::-;;;;;;;;;5650:11;5680:20;5672:51:::1;;;::::0;-1:-1:-1;;;5672:51:5;;3202:2:6;5672:51:5::1;::::0;::::1;3184:21:6::0;3241:2;3221:18;;;3214:30;-1:-1:-1;;;3260:18:6;;;3253:48;3318:18;;5672:51:5::1;3000:342:6::0;5672:51:5::1;5728:25;5767:11;5728:51;;5783:22;5824:14;-1:-1:-1::0;;;;;5824:35:5::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5824:37:5::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;5808:55:::0;;::::1;::::0;;::::1;::::0;756:19:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;756:19:5;::::1;::::0;;;;5808:55;-1:-1:-1;5867:15:5::1;5891:44:::0;;;5887:541;::::1;;836:12;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;836:12:5::1;::::0;;::::1;::::0;5949:45;;;5945:483:::1;;6109:33;::::0;-1:-1:-1;;;6109:33:5;;6136:4:::1;6109:33;::::0;::::1;2239:51:6::0;6037:11:5;;-1:-1:-1;;;;;6109:18:5;::::1;::::0;::::1;::::0;2212::6;;6109:33:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6148:49;::::0;-1:-1:-1;;;6148:49:5;;6099:43;;-1:-1:-1;;;;;;6148:27:5;::::1;::::0;::::1;::::0;:49:::1;::::0;6099:43;;6185:11;;;;6148:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6240:35:5::1;::::0;;;;::::1;::::0;;6266:4:::1;6240:35:::0;;-1:-1:-1;6240:35:5::1;::::0;;::::1;::::0;;;6281:49;;;;::::1;::::0;;;;;;::::1;::::0;;;6203:145;;-1:-1:-1;;;6203:145:5;;-1:-1:-1;;;;;6203:31:5;::::1;::::0;-1:-1:-1;6203:31:5::1;::::0;-1:-1:-1;6203:145:5::1;::::0;6281:49;6336:7;;6203:145:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5996:357;5945:483;;;6364:59;::::0;-1:-1:-1;;;6364:59:5;;7944:2:6;6364:59:5::1;::::0;::::1;7926:21:6::0;7983:2;7963:18;;;7956:30;8022:34;8002:18;;;7995:62;-1:-1:-1;;;8073:18:6;;;8066:47;8130:19;;6364:59:5::1;7742:413:6::0;5945:483:5::1;6437:63;::::0;;6455:1:::1;8429:34:6::0;;8494:2;8479:18;;8472:34;;;-1:-1:-1;;;;;8542:15:6;;8522:18;;;8515:43;8589:2;8574:18;;8567:34;;;6437:63:5;;::::1;::::0;;;;8378:3:6;6437:63:5;;::::1;5619:885;;;;1159:889:::0;5448:1056;;;;;:::o;3688:1757::-;1226:41;;-1:-1:-1;;;1226:41:5;;1256:10;1226:41;;;2239:51:6;3842:11:5;;;;-1:-1:-1;;;;;1226:29:5;;;;;2212:18:6;;1226:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1218:102;;;;-1:-1:-1;;;1218:102:5;;;;;;;:::i;:::-;4035:10;4064:20;4056:51:::1;;;::::0;-1:-1:-1;;;4056:51:5;;3202:2:6;4056:51:5::1;::::0;::::1;3184:21:6::0;3241:2;3221:18;;;3214:30;-1:-1:-1;;;3260:18:6;;;3253:48;3318:18;;4056:51:5::1;3000:342:6::0;4056:51:5::1;4112:25;4151:11;4112:51;;4167:22;4208:14;-1:-1:-1::0;;;;;4208:35:5::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;4208:37:5::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;4192:55:::0;;::::1;::::0;;::::1;::::0;756:19:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;756:19:5;::::1;::::0;;;;4192:55;-1:-1:-1;4251:15:5::1;4275:44:::0;;;4271:1046:::1;;4326:30;4376:11;4326:62;;4403:13;-1:-1:-1::0;;;;;4403:25:5::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4435:33;::::0;-1:-1:-1;;;4435:33:5;;4462:4:::1;4435:33;::::0;::::1;2239:51:6::0;4393:37:5;;-1:-1:-1;;;;;;4435:18:5;::::1;::::0;::::1;::::0;2212::6;;4435:33:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4478:9;4473:133;4497:16;4493:1;:20;4473:133;;;4526:13;-1:-1:-1::0;;;;;4526:25:5::1;;4552:7;4561:10;;4572:1;4561:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:17;::::0;;::::1;:::i;:::-;4580:10;;4591:1;4580:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;4526:74;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4515:3;;;;:::i;:::-;;;4473:133;;;-1:-1:-1::0;4647:35:5::1;::::0;;;;::::1;::::0;;4673:4:::1;4647:35:::0;;-1:-1:-1;4647:35:5::1;::::0;;::::1;::::0;;;4688:49;;;;::::1;::::0;;;;;;::::1;::::0;;;4610:145;;-1:-1:-1;;;4610:145:5;;-1:-1:-1;;;;;4610:31:5;::::1;::::0;::::1;::::0;:145:::1;::::0;4647:35;;4688:49;4743:7;;4610:145:::1;;;:::i;4271:1046::-;836:12;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;836:12:5::1;::::0;;::::1;::::0;4770:45;;;4766:551:::1;;4822:23;4858:11;4822:48;;4885:13;-1:-1:-1::0;;;;;4885:25:5::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4917:33;::::0;-1:-1:-1;;;4917:33:5;;4944:4:::1;4917:33;::::0;::::1;2239:51:6::0;4875:37:5;;-1:-1:-1;;;;;;4917:18:5;::::1;::::0;::::1;::::0;2212::6;;4917:33:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4960:9;4955:133;4979:16;4975:1;:20;4955:133;;;5008:13;-1:-1:-1::0;;;;;5008:25:5::1;;5034:7;5043:10;;5054:1;5043:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:17;::::0;;::::1;:::i;:::-;5062:10;;5073:1;5062:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;5008:74;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4997:3;;;;:::i;:::-;;;4955:133;;2212:1473:::0;1226:41;;-1:-1:-1;;;1226:41:5;;1256:10;1226:41;;;2239:51:6;2313:11:5;;;;-1:-1:-1;;;;;1226:29:5;;;;;2212:18:6;;1226:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1218:102;;;;-1:-1:-1;;;1218:102:5;;;;;;;:::i;:::-;2476:25:::1;2515:11;2476:51;;2531:22;2572:14;-1:-1:-1::0;;;;;2572:35:5::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;2572:37:5::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;2556:55:::0;;::::1;::::0;;::::1;::::0;756:19:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;756:19:5;::::1;::::0;;;;2556:55;-1:-1:-1;2615:15:5::1;2639:44:::0;;;2635:759:::1;;2771:33;::::0;-1:-1:-1;;;2771:33:5;;2798:4:::1;2771:33;::::0;::::1;2239:51:6::0;2740:11:5;;-1:-1:-1;;;;;2771:18:5;::::1;::::0;::::1;::::0;2212::6;;2771:33:5::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2847:35;::::0;;;;::::1;::::0;;2873:4:::1;2847:35:::0;;-1:-1:-1;2847:35:5::1;::::0;;::::1;::::0;;;2888:49;;;;::::1;::::0;;;;;;::::1;::::0;;;2810:145;;-1:-1:-1;;;2810:145:5;;2761:43;;-1:-1:-1;;;;;;2810:31:5;::::1;::::0;::::1;::::0;:145:::1;::::0;2847:35;2761:43;;2810:145:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2685:275;2635:759;;;836:12;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;836:12:5::1;::::0;;::::1;::::0;2970:45;;;2966:428:::1;;3130:33;::::0;-1:-1:-1;;;3130:33:5;;3157:4:::1;3130:33;::::0;::::1;2239:51:6::0;3058:11:5;;-1:-1:-1;;;;;3130:18:5;::::1;::::0;::::1;::::0;2212::6;;3130:33:5::1;2093:203:6::0;2966:428:5::1;3618:63;::::0;;3636:1:::1;8429:34:6::0;;8494:2;8479:18;;8472:34;;;-1:-1:-1;;;;;8542:15:6;;8522:18;;;8515:43;8589:2;8574:18;;8567:34;;;3618:63:5;;::::1;::::0;;;;8378:3:6;3618:63:5;;::::1;2326:1359;;;1159:889:::0;2212:1473;;;:::o;14:173:6:-;82:20;;-1:-1:-1;;;;;131:31:6;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:383::-;271:8;281:6;335:3;328:4;320:6;316:17;312:27;302:55;;353:1;350;343:12;302:55;-1:-1:-1;376:20:6;;419:18;408:30;;405:50;;;451:1;448;441:12;405:50;488:4;480:6;476:17;464:29;;548:3;541:4;531:6;528:1;524:14;516:6;512:27;508:38;505:47;502:67;;;565:1;562;555:12;502:67;192:383;;;;;:::o;580:621::-;710:6;718;726;734;787:2;775:9;766:7;762:23;758:32;755:52;;;803:1;800;793:12;755:52;826:29;845:9;826:29;:::i;:::-;816:39;;902:2;891:9;887:18;874:32;864:42;;957:2;946:9;942:18;929:32;984:18;976:6;973:30;970:50;;;1016:1;1013;1006:12;970:50;1055:86;1133:7;1124:6;1113:9;1109:22;1055:86;:::i;:::-;580:621;;;;-1:-1:-1;1160:8:6;-1:-1:-1;;;;580:621:6:o;1834:254::-;1902:6;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2002:29;2021:9;2002:29;:::i;:::-;1992:39;2078:2;2063:18;;;;2050:32;;-1:-1:-1;;;1834:254:6:o;2301:277::-;2368:6;2421:2;2409:9;2400:7;2396:23;2392:32;2389:52;;;2437:1;2434;2427:12;2389:52;2469:9;2463:16;2522:5;2515:13;2508:21;2501:5;2498:32;2488:60;;2544:1;2541;2534:12;2488:60;2567:5;2301:277;-1:-1:-1;;;2301:277:6:o;2583:412::-;2785:2;2767:21;;;2824:2;2804:18;;;2797:30;2863:34;2858:2;2843:18;;2836:62;-1:-1:-1;;;2929:2:6;2914:18;;2907:46;2985:3;2970:19;;2583:412::o;3347:127::-;3408:10;3403:3;3399:20;3396:1;3389:31;3439:4;3436:1;3429:15;3463:4;3460:1;3453:15;3479:1042;3559:6;3590:2;3633;3621:9;3612:7;3608:23;3604:32;3601:52;;;3649:1;3646;3639:12;3601:52;3682:9;3676:16;3711:18;3752:2;3744:6;3741:14;3738:34;;;3768:1;3765;3758:12;3738:34;3806:6;3795:9;3791:22;3781:32;;3851:7;3844:4;3840:2;3836:13;3832:27;3822:55;;3873:1;3870;3863:12;3822:55;3902:2;3896:9;3924:2;3920;3917:10;3914:36;;;3930:18;;:::i;:::-;4005:2;3999:9;3973:2;4059:13;;-1:-1:-1;;4055:22:6;;;4079:2;4051:31;4047:40;4035:53;;;4103:18;;;4123:22;;;4100:46;4097:72;;;4149:18;;:::i;:::-;4189:10;4185:2;4178:22;4224:2;4216:6;4209:18;4264:7;4259:2;4254;4250;4246:11;4242:20;4239:33;4236:53;;;4285:1;4282;4275:12;4236:53;4307:1;4298:10;;4317:129;4331:2;4328:1;4325:9;4317:129;;;4419:10;;;4415:19;;4409:26;4388:14;;;4384:23;;4377:59;4342:10;;;;4317:129;;;4488:1;4483:2;4478;4470:6;4466:15;4462:24;4455:35;4509:6;4499:16;;;;;;;;3479:1042;;;;:::o;4526:184::-;4596:6;4649:2;4637:9;4628:7;4624:23;4620:32;4617:52;;;4665:1;4662;4655:12;4617:52;-1:-1:-1;4688:16:6;;4526:184;-1:-1:-1;4526:184:6:o;4715:501::-;4774:5;4781:6;4841:3;4828:17;4927:2;4923:7;4912:8;4896:14;4892:29;4888:43;4868:18;4864:68;4854:96;;4946:1;4943;4936:12;4854:96;4974:33;;5078:4;5065:18;;;-1:-1:-1;5026:21:6;;-1:-1:-1;5106:18:6;5095:30;;5092:50;;;5138:1;5135;5128:12;5092:50;5185:6;5169:14;5165:27;5158:5;5154:39;5151:59;;;5206:1;5203;5196:12;5221:267;5310:6;5305:3;5298:19;5362:6;5355:5;5348:4;5343:3;5339:14;5326:43;-1:-1:-1;5414:1:6;5389:16;;;5407:4;5385:27;;;5378:38;;;;5470:2;5449:15;;;-1:-1:-1;;5445:29:6;5436:39;;;5432:50;;5221:267::o;5493:1549::-;5723:4;5752:2;5792;5781:9;5777:18;5822:6;5811:9;5804:25;5848:2;5886;5881;5870:9;5866:18;5859:30;5909:6;5939;5931;5924:22;5977:2;5966:9;5962:18;5955:25;;6039:2;6029:6;6026:1;6022:14;6011:9;6007:30;6003:39;5989:53;;6065:6;6089:1;6110;6120:893;6136:6;6131:3;6128:15;6120:893;;;6205:22;;;-1:-1:-1;;6201:36:6;6189:49;;6277:20;;6352:14;6348:27;;;-1:-1:-1;;6344:41:6;6320:66;;6310:94;;6400:1;6397;6390:12;6310:94;6430:31;;6508:45;6430:31;;6508:45;:::i;:::-;6581:2;6573:6;6566:18;6611:71;6678:2;6670:6;6666:15;6652:12;6638;6611:71;:::i;:::-;6597:85;;;6733:54;6783:2;6776:5;6772:14;6765:5;6733:54;:::i;:::-;6695:92;;6836:6;6828;6824:19;6819:2;6811:6;6807:15;6800:44;6867:66;6926:6;6910:14;6894;6867:66;:::i;:::-;6857:76;-1:-1:-1;;;6991:12:6;;;;-1:-1:-1;6956:15:6;;;;6162:1;6153:11;6120:893;;;-1:-1:-1;7030:6:6;;5493:1549;-1:-1:-1;;;;;;;;;;5493:1549:6:o;7234:503::-;7132:12;;-1:-1:-1;;;;;7128:38:6;;;7116:51;;7216:4;7205:16;;;7199:23;7183:14;;;7176:47;7132:12;;7128:38;7683:2;7668:18;;7116:51;7205:16;;;;7199:23;7183:14;;;7176:47;7718:3;7703:19;;7696:35;;;;7552:3;7537:19;;7234:503::o;8612:127::-;8673:10;8668:3;8664:20;8661:1;8654:31;8704:4;8701:1;8694:15;8728:4;8725:1;8718:15;8744:325;8838:4;8896:11;8883:25;8990:2;8986:7;8975:8;8959:14;8955:29;8951:43;8931:18;8927:68;8917:96;;9009:1;9006;8999:12;8917:96;9030:33;;;;;8744:325;-1:-1:-1;;8744:325:6:o;9074:522::-;9152:4;9158:6;9218:11;9205:25;9312:2;9308:7;9297:8;9281:14;9277:29;9273:43;9253:18;9249:68;9239:96;;9331:1;9328;9321:12;9239:96;9358:33;;9410:20;;;-1:-1:-1;9453:18:6;9442:30;;9439:50;;;9485:1;9482;9475:12;9439:50;9518:4;9506:17;;-1:-1:-1;9549:14:6;9545:27;;;9535:38;;9532:58;;;9586:1;9583;9576:12;10127:506;10370:6;10359:9;10352:25;10413:2;10408;10397:9;10393:18;10386:30;10333:4;10439:62;10497:2;10486:9;10482:18;10474:6;10466;10439:62;:::i;:::-;10549:9;10541:6;10537:22;10532:2;10521:9;10517:18;10510:50;10577;10620:6;10612;10604;10577:50;:::i;:::-;10569:58;10127:506;-1:-1:-1;;;;;;;;10127:506:6:o;10638:232::-;10677:3;10698:17;;;10695:140;;10757:10;10752:3;10748:20;10745:1;10738:31;10792:4;10789:1;10782:15;10820:4;10817:1;10810:15;10695:140;-1:-1:-1;10862:1:6;10851:13;;10638:232::o"
+                    },
+                    "gasEstimates": {
+                        "creation": {
+                            "codeDepositCost": "912800",
+                            "executionCost": "948",
+                            "totalCost": "913748"
+                        },
+                        "external": {
+                            "mintToSubstrate(address,uint256)": "infinite",
+                            "mintToSubstrateBulkProperty(address,uint256,(string,bytes)[])": "infinite",
+                            "mintToSubstrateWithProperty(address,uint256,(string,bytes)[])": "infinite"
+                        }
+                    },
+                    "methodIdentifiers": {
+                        "mintToSubstrate(address,uint256)": "7a8d9786",
+                        "mintToSubstrateBulkProperty(address,uint256,(string,bytes)[])": "3a0dbb1a",
+                        "mintToSubstrateWithProperty(address,uint256,(string,bytes)[])": "440dff9d"
+                    }
+                },
+                "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_toEth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toSub\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MintToSub\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_substrateReceiver\",\"type\":\"uint256\"}],\"name\":\"mintToSubstrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_substrateReceiver\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"field_0\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"field_1\",\"type\":\"bytes\"}],\"internalType\":\"struct Tuple21[]\",\"name\":\"_properties\",\"type\":\"tuple[]\"}],\"name\":\"mintToSubstrateBulkProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_substrateReceiver\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"internalType\":\"struct Property[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"mintToSubstrateWithProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"MintToSub(address,uint256,address,uint256)\":{\"details\":\"This emits when a mint to a substrate address has been made.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol\":\"EvmToSubstrate\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":{\"keccak256\":\"0x7ded5e99243528ed63a0986417ad670c277ad42d348bf06f407fd06a12cc08a3\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://43a6299b0510c8feb55800153cee0ea845f7b06a4002bb122d99c6cc938f93c2\",\"dweb:/ipfs/QmPcgPtBkeyMe6LkTYcT6xD5WJhw8nLGaCrbEu2kUHGjgu\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":{\"keccak256\":\"0xbf6cbc8921b46aceef74fcb0218f8af41a5c1c8c09278cd29b055d39af4ba06c\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://cb309a7e806ab15bf7db1469c70ce547e358783a8be709d48632062600bbdf58\",\"dweb:/ipfs/QmcUViezUamzuLB9Pp5AjwNbSNLdVqnrSbvrRMkHoEb5DY\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x4ea6c5371aadbfd3e928377a01f5d3c72906286e0fd544a1391d7e362a131164\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://9a6c96c943b3e49bae15ad680883f197445d25f7207fbc6142d4271e1e4029b6\",\"dweb:/ipfs/QmNb1vMoHALNcrF3pZYCJ3Y9VQjfm9Ee8osrHvyjx5Q5yj\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x43f6d5e7e68be2a64b49dd44b1f40758b9aa37cf3bf01225d1ddfc98619ef4d2\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://45d55a2b15d867662783e015bef922daf59f40734d3bf668ddfa2373731589ac\",\"dweb:/ipfs/QmaF69m8kBKzJ8Av6jmYruhRySMcLtv1myeHjeHuN3gSvG\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol\":{\"keccak256\":\"0x36f13dcad1a598bad13e4019319da9ca6161782448bd7fc698c1e265140e5460\",\"license\":\"Apache License\",\"urls\":[\"bzz-raw://2e32be5bdb8265a44cbdb50306ea53fb56c52dbbe7b8d742af30f46e48133e13\",\"dweb:/ipfs/QmZfaDgiXDvyERJvYuvGXWT5FeRpPSdH5UuGgDnDxP5RVk\"]}},\"version\":1}",
+                "storageLayout": {
+                    "storage": [],
+                    "types": null
+                },
+                "userdoc": {
+                    "kind": "user",
+                    "methods": {},
+                    "version": 1
+                }
+            }
+        }
+    },
+    "sources": {
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol": {
+            "ast": {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol",
+                "exportedSymbols": {
+                    "CollectionHelpers": [
+                        99
+                    ],
+                    "CollectionHelpersEvents": [
+                        25
+                    ],
+                    "Dummy": [
+                        3
+                    ],
+                    "ERC165": [
+                        13
+                    ]
+                },
+                "id": 100,
+                "license": "OTHER",
+                "nodeType": "SourceUnit",
+                "nodes": [
+                    {
+                        "id": 1,
+                        "literals": [
+                            "solidity",
+                            ">=",
+                            "0.8",
+                            ".0",
+                            "<",
+                            "0.9",
+                            ".0"
+                        ],
+                        "nodeType": "PragmaDirective",
+                        "src": "75:31:0"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "Dummy",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 2,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "108:29:0",
+                            "text": "@dev common stubs holder"
+                        },
+                        "fullyImplemented": true,
+                        "id": 3,
+                        "linearizedBaseContracts": [
+                            3
+                        ],
+                        "name": "Dummy",
+                        "nameLocation": "147:5:0",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [],
+                        "scope": 100,
+                        "src": "137:20:0",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 4,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "179:5:0"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 3,
+                                    "src": "179:5:0"
+                                },
+                                "id": 5,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "179:5:0"
+                            }
+                        ],
+                        "canonicalName": "ERC165",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "fullyImplemented": false,
+                        "id": 13,
+                        "linearizedBaseContracts": [
+                            13,
+                            3
+                        ],
+                        "name": "ERC165",
+                        "nameLocation": "169:6:0",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "functionSelector": "01ffc9a7",
+                                "id": 12,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "supportsInterface",
+                                "nameLocation": "197:17:0",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 8,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 7,
+                                            "mutability": "mutable",
+                                            "name": "interfaceID",
+                                            "nameLocation": "222:11:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 12,
+                                            "src": "215:18:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes4",
+                                                "typeString": "bytes4"
+                                            },
+                                            "typeName": {
+                                                "id": 6,
+                                                "name": "bytes4",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "215:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes4",
+                                                    "typeString": "bytes4"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "214:20:0"
+                                },
+                                "returnParameters": {
+                                    "id": 11,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 10,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 12,
+                                            "src": "258:4:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 9,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "258:4:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "257:6:0"
+                                },
+                                "scope": 13,
+                                "src": "188:76:0",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 100,
+                        "src": "159:107:0",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "CollectionHelpersEvents",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 14,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "268:27:0",
+                            "text": "@dev inlined interface"
+                        },
+                        "fullyImplemented": true,
+                        "id": 25,
+                        "linearizedBaseContracts": [
+                            25
+                        ],
+                        "name": "CollectionHelpersEvents",
+                        "nameLocation": "305:23:0",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "anonymous": false,
+                                "eventSelector": "5d0de243db1669e3a7056744cd715c625f0c1c348736c2c2d53d0ddebff1a6c7",
+                                "id": 20,
+                                "name": "CollectionCreated",
+                                "nameLocation": "338:17:0",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 19,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 16,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "372:5:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 20,
+                                            "src": "356:21:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 15,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "356:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 18,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "collectionId",
+                                            "nameLocation": "395:12:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 20,
+                                            "src": "379:28:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 17,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "379:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "355:53:0"
+                                },
+                                "src": "332:77:0"
+                            },
+                            {
+                                "anonymous": false,
+                                "eventSelector": "196b128b0e7d555858ba17c2a76be0a94558be342698cd6c02837195e0b0bcbc",
+                                "id": 24,
+                                "name": "CollectionDestroyed",
+                                "nameLocation": "417:19:0",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 23,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 22,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "collectionId",
+                                            "nameLocation": "453:12:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 24,
+                                            "src": "437:28:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 21,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "437:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "436:30:0"
+                                },
+                                "src": "411:56:0"
+                            }
+                        ],
+                        "scope": 100,
+                        "src": "295:174:0",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 27,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "635:5:0"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 3,
+                                    "src": "635:5:0"
+                                },
+                                "id": 28,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "635:5:0"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 29,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "642:6:0"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 13,
+                                    "src": "642:6:0"
+                                },
+                                "id": 30,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "642:6:0"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 31,
+                                    "name": "CollectionHelpersEvents",
+                                    "nameLocations": [
+                                        "650:23:0"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 25,
+                                    "src": "650:23:0"
+                                },
+                                "id": 32,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "650:23:0"
+                            }
+                        ],
+                        "canonicalName": "CollectionHelpers",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 26,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "471:133:0",
+                            "text": "@title Contract, which allows users to operate with collections\n @dev the ERC-165 identifier for this interface is 0x7dea03b1"
+                        },
+                        "fullyImplemented": false,
+                        "id": 99,
+                        "linearizedBaseContracts": [
+                            99,
+                            25,
+                            13,
+                            3
+                        ],
+                        "name": "CollectionHelpers",
+                        "nameLocation": "614:17:0",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 33,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "677:420:0",
+                                    "text": "Create an NFT collection\n @param name Name of the collection\n @param description Informative description of the collection\n @param tokenPrefix Token prefix to represent the collection tokens in UI and user applications\n @return address Address of the newly created collection\n @dev EVM selector for this function is: 0x844af658,\n  or in textual repr: createNFTCollection(string,string,string)"
+                                },
+                                "functionSelector": "844af658",
+                                "id": 44,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "createNFTCollection",
+                                "nameLocation": "1108:19:0",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 40,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 35,
+                                            "mutability": "mutable",
+                                            "name": "name",
+                                            "nameLocation": "1145:4:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 44,
+                                            "src": "1131:18:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 34,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1131:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 37,
+                                            "mutability": "mutable",
+                                            "name": "description",
+                                            "nameLocation": "1167:11:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 44,
+                                            "src": "1153:25:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 36,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1153:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 39,
+                                            "mutability": "mutable",
+                                            "name": "tokenPrefix",
+                                            "nameLocation": "1196:11:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 44,
+                                            "src": "1182:25:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 38,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1182:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1127:83:0"
+                                },
+                                "returnParameters": {
+                                    "id": 43,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 42,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 44,
+                                            "src": "1237:7:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 41,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1237:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1236:9:0"
+                                },
+                                "scope": 99,
+                                "src": "1099:147:0",
+                                "stateMutability": "payable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 45,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1852:123:0",
+                                    "text": "@dev EVM selector for this function is: 0xab173450,\n  or in textual repr: createRFTCollection(string,string,string)"
+                                },
+                                "functionSelector": "ab173450",
+                                "id": 56,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "createRFTCollection",
+                                "nameLocation": "1986:19:0",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 52,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 47,
+                                            "mutability": "mutable",
+                                            "name": "name",
+                                            "nameLocation": "2023:4:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 56,
+                                            "src": "2009:18:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 46,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2009:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 49,
+                                            "mutability": "mutable",
+                                            "name": "description",
+                                            "nameLocation": "2045:11:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 56,
+                                            "src": "2031:25:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 48,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2031:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 51,
+                                            "mutability": "mutable",
+                                            "name": "tokenPrefix",
+                                            "nameLocation": "2074:11:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 56,
+                                            "src": "2060:25:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 50,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2060:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2005:83:0"
+                                },
+                                "returnParameters": {
+                                    "id": 55,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 54,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 56,
+                                            "src": "2115:7:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 53,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2115:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2114:9:0"
+                                },
+                                "scope": 99,
+                                "src": "1977:147:0",
+                                "stateMutability": "payable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 57,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2127:128:0",
+                                    "text": "@dev EVM selector for this function is: 0x7335b79f,\n  or in textual repr: createFTCollection(string,uint8,string,string)"
+                                },
+                                "functionSelector": "7335b79f",
+                                "id": 70,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "createFTCollection",
+                                "nameLocation": "2266:18:0",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 66,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 59,
+                                            "mutability": "mutable",
+                                            "name": "name",
+                                            "nameLocation": "2302:4:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 70,
+                                            "src": "2288:18:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 58,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2288:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 61,
+                                            "mutability": "mutable",
+                                            "name": "decimals",
+                                            "nameLocation": "2316:8:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 70,
+                                            "src": "2310:14:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint8",
+                                                "typeString": "uint8"
+                                            },
+                                            "typeName": {
+                                                "id": 60,
+                                                "name": "uint8",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2310:5:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint8",
+                                                    "typeString": "uint8"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 63,
+                                            "mutability": "mutable",
+                                            "name": "description",
+                                            "nameLocation": "2342:11:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 70,
+                                            "src": "2328:25:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 62,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2328:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 65,
+                                            "mutability": "mutable",
+                                            "name": "tokenPrefix",
+                                            "nameLocation": "2371:11:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 70,
+                                            "src": "2357:25:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 64,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2357:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2284:101:0"
+                                },
+                                "returnParameters": {
+                                    "id": 69,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 68,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 70,
+                                            "src": "2412:7:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 67,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2412:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2411:9:0"
+                                },
+                                "scope": 99,
+                                "src": "2257:164:0",
+                                "stateMutability": "payable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 71,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2424:136:0",
+                                    "text": "@dev EVM selector for this function is: 0x85624258,\n  or in textual repr: makeCollectionERC721MetadataCompatible(address,string)"
+                                },
+                                "functionSelector": "85624258",
+                                "id": 78,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "makeCollectionERC721MetadataCompatible",
+                                "nameLocation": "2571:38:0",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 76,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 73,
+                                            "mutability": "mutable",
+                                            "name": "collection",
+                                            "nameLocation": "2618:10:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 78,
+                                            "src": "2610:18:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 72,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2610:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 75,
+                                            "mutability": "mutable",
+                                            "name": "baseUri",
+                                            "nameLocation": "2644:7:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 78,
+                                            "src": "2630:21:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 74,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2630:6:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2609:43:0"
+                                },
+                                "returnParameters": {
+                                    "id": 77,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2661:0:0"
+                                },
+                                "scope": 99,
+                                "src": "2562:100:0",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 79,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2665:108:0",
+                                    "text": "@dev EVM selector for this function is: 0x564e321f,\n  or in textual repr: destroyCollection(address)"
+                                },
+                                "functionSelector": "564e321f",
+                                "id": 84,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "destroyCollection",
+                                "nameLocation": "2784:17:0",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 82,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 81,
+                                            "mutability": "mutable",
+                                            "name": "collectionAddress",
+                                            "nameLocation": "2810:17:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 84,
+                                            "src": "2802:25:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 80,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2802:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2801:27:0"
+                                },
+                                "returnParameters": {
+                                    "id": 83,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2837:0:0"
+                                },
+                                "scope": 99,
+                                "src": "2775:63:0",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 85,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2841:255:0",
+                                    "text": "Check if a collection exists\n @param collectionAddress Address of the collection in question\n @return bool Does the collection exist?\n @dev EVM selector for this function is: 0xc3de1494,\n  or in textual repr: isCollectionExist(address)"
+                                },
+                                "functionSelector": "c3de1494",
+                                "id": 92,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "isCollectionExist",
+                                "nameLocation": "3107:17:0",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 88,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 87,
+                                            "mutability": "mutable",
+                                            "name": "collectionAddress",
+                                            "nameLocation": "3133:17:0",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 92,
+                                            "src": "3125:25:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 86,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3125:7:0",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3124:27:0"
+                                },
+                                "returnParameters": {
+                                    "id": 91,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 90,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 92,
+                                            "src": "3175:4:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 89,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3175:4:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3174:6:0"
+                                },
+                                "scope": 99,
+                                "src": "3098:83:0",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 93,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3184:105:0",
+                                    "text": "@dev EVM selector for this function is: 0xd23a7ab1,\n  or in textual repr: collectionCreationFee()"
+                                },
+                                "functionSelector": "d23a7ab1",
+                                "id": 98,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionCreationFee",
+                                "nameLocation": "3300:21:0",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 94,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "3321:2:0"
+                                },
+                                "returnParameters": {
+                                    "id": 97,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 96,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 98,
+                                            "src": "3347:7:0",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 95,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3347:7:0",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3346:9:0"
+                                },
+                                "scope": 99,
+                                "src": "3291:65:0",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 100,
+                        "src": "604:2754:0",
+                        "usedErrors": []
+                    }
+                ],
+                "src": "75:3284:0"
+            },
+            "id": 0
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol": {
+            "ast": {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol",
+                "exportedSymbols": {
+                    "ContractHelpers": [
+                        282
+                    ],
+                    "ContractHelpersEvents": [
+                        131
+                    ],
+                    "Dummy": [
+                        103
+                    ],
+                    "ERC165": [
+                        113
+                    ],
+                    "Tuple0": [
+                        287
+                    ]
+                },
+                "id": 288,
+                "license": "OTHER",
+                "nodeType": "SourceUnit",
+                "nodes": [
+                    {
+                        "id": 101,
+                        "literals": [
+                            "solidity",
+                            ">=",
+                            "0.8",
+                            ".0",
+                            "<",
+                            "0.9",
+                            ".0"
+                        ],
+                        "nodeType": "PragmaDirective",
+                        "src": "75:31:1"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "Dummy",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 102,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "108:29:1",
+                            "text": "@dev common stubs holder"
+                        },
+                        "fullyImplemented": true,
+                        "id": 103,
+                        "linearizedBaseContracts": [
+                            103
+                        ],
+                        "name": "Dummy",
+                        "nameLocation": "147:5:1",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [],
+                        "scope": 288,
+                        "src": "137:20:1",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 104,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "179:5:1"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 103,
+                                    "src": "179:5:1"
+                                },
+                                "id": 105,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "179:5:1"
+                            }
+                        ],
+                        "canonicalName": "ERC165",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "fullyImplemented": false,
+                        "id": 113,
+                        "linearizedBaseContracts": [
+                            113,
+                            103
+                        ],
+                        "name": "ERC165",
+                        "nameLocation": "169:6:1",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "functionSelector": "01ffc9a7",
+                                "id": 112,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "supportsInterface",
+                                "nameLocation": "197:17:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 108,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 107,
+                                            "mutability": "mutable",
+                                            "name": "interfaceID",
+                                            "nameLocation": "222:11:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 112,
+                                            "src": "215:18:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes4",
+                                                "typeString": "bytes4"
+                                            },
+                                            "typeName": {
+                                                "id": 106,
+                                                "name": "bytes4",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "215:6:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes4",
+                                                    "typeString": "bytes4"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "214:20:1"
+                                },
+                                "returnParameters": {
+                                    "id": 111,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 110,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 112,
+                                            "src": "258:4:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 109,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "258:4:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "257:6:1"
+                                },
+                                "scope": 113,
+                                "src": "188:76:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 288,
+                        "src": "159:107:1",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "ContractHelpersEvents",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 114,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "268:27:1",
+                            "text": "@dev inlined interface"
+                        },
+                        "fullyImplemented": true,
+                        "id": 131,
+                        "linearizedBaseContracts": [
+                            131
+                        ],
+                        "name": "ContractHelpersEvents",
+                        "nameLocation": "305:21:1",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "anonymous": false,
+                                "eventSelector": "1a1c87da5016fa729dc202aa81e8d0a809b34bf7fcb57a99caddc101f4001ad0",
+                                "id": 120,
+                                "name": "ContractSponsorSet",
+                                "nameLocation": "336:18:1",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 119,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 116,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "371:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 120,
+                                            "src": "355:31:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 115,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "355:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 118,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "sponsor",
+                                            "nameLocation": "396:7:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 120,
+                                            "src": "388:15:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 117,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "388:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "354:50:1"
+                                },
+                                "src": "330:75:1"
+                            },
+                            {
+                                "anonymous": false,
+                                "eventSelector": "76acd7576df9f9a27aef2632090837bda53ceafa4f2cb770de453088279f5f2b",
+                                "id": 126,
+                                "name": "ContractSponsorshipConfirmed",
+                                "nameLocation": "413:28:1",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 125,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 122,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "458:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 126,
+                                            "src": "442:31:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 121,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "442:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 124,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "sponsor",
+                                            "nameLocation": "483:7:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 126,
+                                            "src": "475:15:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 123,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "475:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "441:50:1"
+                                },
+                                "src": "407:85:1"
+                            },
+                            {
+                                "anonymous": false,
+                                "eventSelector": "764fe8f3a546c4830e1e035cce906bbd280fc109199af66d7b5f1d7a793bed54",
+                                "id": 130,
+                                "name": "ContractSponsorRemoved",
+                                "nameLocation": "500:22:1",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 129,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 128,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "539:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 130,
+                                            "src": "523:31:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 127,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "523:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "522:33:1"
+                                },
+                                "src": "494:62:1"
+                            }
+                        ],
+                        "scope": 288,
+                        "src": "295:263:1",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 133,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "731:5:1"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 103,
+                                    "src": "731:5:1"
+                                },
+                                "id": 134,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "731:5:1"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 135,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "738:6:1"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 113,
+                                    "src": "738:6:1"
+                                },
+                                "id": 136,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "738:6:1"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 137,
+                                    "name": "ContractHelpersEvents",
+                                    "nameLocations": [
+                                        "746:21:1"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 131,
+                                    "src": "746:21:1"
+                                },
+                                "id": 138,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "746:21:1"
+                            }
+                        ],
+                        "canonicalName": "ContractHelpers",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 132,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "560:142:1",
+                            "text": "@title Magic contract, which allows users to reconfigure other contracts\n @dev the ERC-165 identifier for this interface is 0x30afad04"
+                        },
+                        "fullyImplemented": false,
+                        "id": 282,
+                        "linearizedBaseContracts": [
+                            282,
+                            131,
+                            113,
+                            103
+                        ],
+                        "name": "ContractHelpers",
+                        "nameLocation": "712:15:1",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 139,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "771:472:1",
+                                    "text": "Get user, which deployed specified contract\n @dev May return zero address in case if contract is deployed\n  using uniquenetwork evm-migration pallet, or using other terms not\n  intended by pallet-evm\n @dev Returns zero address if contract does not exists\n @param contractAddress Contract to get owner of\n @return address Owner of contract\n @dev EVM selector for this function is: 0x5152b14c,\n  or in textual repr: contractOwner(address)"
+                                },
+                                "functionSelector": "5152b14c",
+                                "id": 146,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "contractOwner",
+                                "nameLocation": "1254:13:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 142,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 141,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "1276:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 146,
+                                            "src": "1268:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 140,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1268:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1267:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 145,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 144,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 146,
+                                            "src": "1316:7:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 143,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1316:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1315:9:1"
+                                },
+                                "scope": 282,
+                                "src": "1245:80:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 147,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1328:267:1",
+                                    "text": "Set sponsor.\n @param contractAddress Contract for which a sponsor is being established.\n @param sponsor User address who set as pending sponsor.\n @dev EVM selector for this function is: 0xf01fba93,\n  or in textual repr: setSponsor(address,address)"
+                                },
+                                "functionSelector": "f01fba93",
+                                "id": 154,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setSponsor",
+                                "nameLocation": "1606:10:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 152,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 149,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "1625:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 154,
+                                            "src": "1617:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 148,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1617:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 151,
+                                            "mutability": "mutable",
+                                            "name": "sponsor",
+                                            "nameLocation": "1650:7:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 154,
+                                            "src": "1642:15:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 150,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1642:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1616:42:1"
+                                },
+                                "returnParameters": {
+                                    "id": 153,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "1667:0:1"
+                                },
+                                "scope": 282,
+                                "src": "1597:71:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 155,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1671:235:1",
+                                    "text": "Set contract as self sponsored.\n @param contractAddress Contract for which a self sponsoring is being enabled.\n @dev EVM selector for this function is: 0x89f7d9ae,\n  or in textual repr: selfSponsoredEnable(address)"
+                                },
+                                "functionSelector": "89f7d9ae",
+                                "id": 160,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "selfSponsoredEnable",
+                                "nameLocation": "1917:19:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 158,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 157,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "1945:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 160,
+                                            "src": "1937:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 156,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1937:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1936:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 159,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "1970:0:1"
+                                },
+                                "scope": 282,
+                                "src": "1908:63:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 161,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1974:209:1",
+                                    "text": "Remove sponsor.\n @param contractAddress Contract for which a sponsorship is being removed.\n @dev EVM selector for this function is: 0xef784250,\n  or in textual repr: removeSponsor(address)"
+                                },
+                                "functionSelector": "ef784250",
+                                "id": 166,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeSponsor",
+                                "nameLocation": "2194:13:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 164,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 163,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "2216:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 166,
+                                            "src": "2208:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 162,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2208:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2207:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 165,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2241:0:1"
+                                },
+                                "scope": 282,
+                                "src": "2185:57:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 167,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2245:281:1",
+                                    "text": "Confirm sponsorship.\n @dev Caller must be same that set via [`setSponsor`].\n @param contractAddress Сontract for which need to confirm sponsorship.\n @dev EVM selector for this function is: 0xabc00001,\n  or in textual repr: confirmSponsorship(address)"
+                                },
+                                "functionSelector": "abc00001",
+                                "id": 172,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "confirmSponsorship",
+                                "nameLocation": "2537:18:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 170,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 169,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "2564:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 172,
+                                            "src": "2556:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 168,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2556:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2555:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 171,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2589:0:1"
+                                },
+                                "scope": 282,
+                                "src": "2528:62:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 173,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2593:342:1",
+                                    "text": "Get current sponsor.\n @param contractAddress The contract for which a sponsor is requested.\n @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \"Contract has no sponsor\" throw.\n @dev EVM selector for this function is: 0x766c4f37,\n  or in textual repr: sponsor(address)"
+                                },
+                                "functionSelector": "766c4f37",
+                                "id": 181,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "sponsor",
+                                "nameLocation": "2946:7:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 176,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 175,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "2962:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 181,
+                                            "src": "2954:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 174,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2954:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2953:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 180,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 179,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 181,
+                                            "src": "3002:13:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_Tuple0_$287_memory_ptr",
+                                                "typeString": "struct Tuple0"
+                                            },
+                                            "typeName": {
+                                                "id": 178,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 177,
+                                                    "name": "Tuple0",
+                                                    "nameLocations": [
+                                                        "3002:6:1"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 287,
+                                                    "src": "3002:6:1"
+                                                },
+                                                "referencedDeclaration": 287,
+                                                "src": "3002:6:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_Tuple0_$287_storage_ptr",
+                                                    "typeString": "struct Tuple0"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3001:15:1"
+                                },
+                                "scope": 282,
+                                "src": "2937:80:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 182,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3020:309:1",
+                                    "text": "Check tat contract has confirmed sponsor.\n @param contractAddress The contract for which the presence of a confirmed sponsor is checked.\n @return **true** if contract has confirmed sponsor.\n @dev EVM selector for this function is: 0x97418603,\n  or in textual repr: hasSponsor(address)"
+                                },
+                                "functionSelector": "97418603",
+                                "id": 189,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "hasSponsor",
+                                "nameLocation": "3340:10:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 185,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 184,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "3359:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 189,
+                                            "src": "3351:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 183,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3351:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3350:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 188,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 187,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 189,
+                                            "src": "3399:4:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 186,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3399:4:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3398:6:1"
+                                },
+                                "scope": 282,
+                                "src": "3331:74:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 190,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3408:310:1",
+                                    "text": "Check tat contract has pending sponsor.\n @param contractAddress The contract for which the presence of a pending sponsor is checked.\n @return **true** if contract has pending sponsor.\n @dev EVM selector for this function is: 0x39b9b242,\n  or in textual repr: hasPendingSponsor(address)"
+                                },
+                                "functionSelector": "39b9b242",
+                                "id": 197,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "hasPendingSponsor",
+                                "nameLocation": "3729:17:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 193,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 192,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "3755:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 197,
+                                            "src": "3747:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 191,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3747:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3746:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 196,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 195,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 197,
+                                            "src": "3795:4:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 194,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3795:4:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3794:6:1"
+                                },
+                                "scope": 282,
+                                "src": "3720:81:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 198,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3804:108:1",
+                                    "text": "@dev EVM selector for this function is: 0x6027dc61,\n  or in textual repr: sponsoringEnabled(address)"
+                                },
+                                "functionSelector": "6027dc61",
+                                "id": 205,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "sponsoringEnabled",
+                                "nameLocation": "3923:17:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 201,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 200,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "3949:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 205,
+                                            "src": "3941:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 199,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3941:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3940:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 204,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 203,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 205,
+                                            "src": "3989:4:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 202,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3989:4:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3988:6:1"
+                                },
+                                "scope": 282,
+                                "src": "3914:81:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 206,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3998:114:1",
+                                    "text": "@dev EVM selector for this function is: 0xfde8a560,\n  or in textual repr: setSponsoringMode(address,uint8)"
+                                },
+                                "functionSelector": "fde8a560",
+                                "id": 213,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setSponsoringMode",
+                                "nameLocation": "4123:17:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 211,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 208,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "4149:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 213,
+                                            "src": "4141:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 207,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4141:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 210,
+                                            "mutability": "mutable",
+                                            "name": "mode",
+                                            "nameLocation": "4172:4:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 213,
+                                            "src": "4166:10:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint8",
+                                                "typeString": "uint8"
+                                            },
+                                            "typeName": {
+                                                "id": 209,
+                                                "name": "uint8",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4166:5:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint8",
+                                                    "typeString": "uint8"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4140:37:1"
+                                },
+                                "returnParameters": {
+                                    "id": 212,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "4186:0:1"
+                                },
+                                "scope": 282,
+                                "src": "4114:73:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 214,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4190:299:1",
+                                    "text": "Get current contract sponsoring rate limit\n @param contractAddress Contract to get sponsoring rate limit of\n @return uint32 Amount of blocks between two sponsored transactions\n @dev EVM selector for this function is: 0xf29694d8,\n  or in textual repr: sponsoringRateLimit(address)"
+                                },
+                                "functionSelector": "f29694d8",
+                                "id": 221,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "sponsoringRateLimit",
+                                "nameLocation": "4500:19:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 217,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 216,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "4528:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 221,
+                                            "src": "4520:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 215,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4520:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4519:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 220,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 219,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 221,
+                                            "src": "4568:6:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint32",
+                                                "typeString": "uint32"
+                                            },
+                                            "typeName": {
+                                                "id": 218,
+                                                "name": "uint32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4568:6:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint32",
+                                                    "typeString": "uint32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4567:8:1"
+                                },
+                                "scope": 282,
+                                "src": "4491:85:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 222,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4579:448:1",
+                                    "text": "Set contract sponsoring rate limit\n @dev Sponsoring rate limit - is a minimum amount of blocks that should\n  pass between two sponsored transactions\n @param contractAddress Contract to change sponsoring rate limit of\n @param rateLimit Target rate limit\n @dev Only contract owner can change this setting\n @dev EVM selector for this function is: 0x77b6c908,\n  or in textual repr: setSponsoringRateLimit(address,uint32)"
+                                },
+                                "functionSelector": "77b6c908",
+                                "id": 229,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setSponsoringRateLimit",
+                                "nameLocation": "5038:22:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 227,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 224,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "5069:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 229,
+                                            "src": "5061:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 223,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5061:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 226,
+                                            "mutability": "mutable",
+                                            "name": "rateLimit",
+                                            "nameLocation": "5093:9:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 229,
+                                            "src": "5086:16:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint32",
+                                                "typeString": "uint32"
+                                            },
+                                            "typeName": {
+                                                "id": 225,
+                                                "name": "uint32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5086:6:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint32",
+                                                    "typeString": "uint32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5060:43:1"
+                                },
+                                "returnParameters": {
+                                    "id": 228,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5112:0:1"
+                                },
+                                "scope": 282,
+                                "src": "5029:84:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 230,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "5116:411:1",
+                                    "text": "Set contract sponsoring fee limit\n @dev Sponsoring fee limit - is maximum fee that could be spent by\n  single transaction\n @param contractAddress Contract to change sponsoring fee limit of\n @param feeLimit Fee limit\n @dev Only contract owner can change this setting\n @dev EVM selector for this function is: 0x03aed665,\n  or in textual repr: setSponsoringFeeLimit(address,uint256)"
+                                },
+                                "functionSelector": "03aed665",
+                                "id": 237,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setSponsoringFeeLimit",
+                                "nameLocation": "5538:21:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 235,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 232,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "5568:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 237,
+                                            "src": "5560:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 231,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5560:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 234,
+                                            "mutability": "mutable",
+                                            "name": "feeLimit",
+                                            "nameLocation": "5593:8:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 237,
+                                            "src": "5585:16:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 233,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5585:7:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5559:43:1"
+                                },
+                                "returnParameters": {
+                                    "id": 236,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5611:0:1"
+                                },
+                                "scope": 282,
+                                "src": "5529:83:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 238,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "5615:315:1",
+                                    "text": "Get current contract sponsoring fee limit\n @param contractAddress Contract to get sponsoring fee limit of\n @return uint256 Maximum amount of fee that could be spent by single\n  transaction\n @dev EVM selector for this function is: 0x75b73606,\n  or in textual repr: sponsoringFeeLimit(address)"
+                                },
+                                "functionSelector": "75b73606",
+                                "id": 245,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "sponsoringFeeLimit",
+                                "nameLocation": "5941:18:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 241,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 240,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "5968:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 245,
+                                            "src": "5960:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 239,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5960:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5959:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 244,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 243,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 245,
+                                            "src": "6008:7:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 242,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "6008:7:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "6007:9:1"
+                                },
+                                "scope": 282,
+                                "src": "5932:85:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 246,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "6020:368:1",
+                                    "text": "Is specified user present in contract allow list\n @dev Contract owner always implicitly included\n @param contractAddress Contract to check allowlist of\n @param user User to check\n @return bool Is specified users exists in contract allowlist\n @dev EVM selector for this function is: 0x5c658165,\n  or in textual repr: allowed(address,address)"
+                                },
+                                "functionSelector": "5c658165",
+                                "id": 255,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "allowed",
+                                "nameLocation": "6399:7:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 251,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 248,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "6415:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 255,
+                                            "src": "6407:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 247,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "6407:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 250,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "6440:4:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 255,
+                                            "src": "6432:12:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 249,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "6432:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "6406:39:1"
+                                },
+                                "returnParameters": {
+                                    "id": 254,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 253,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 255,
+                                            "src": "6469:4:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 252,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "6469:4:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "6468:6:1"
+                                },
+                                "scope": 282,
+                                "src": "6390:85:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 256,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "6478:452:1",
+                                    "text": "Toggle user presence in contract allowlist\n @param contractAddress Contract to change allowlist of\n @param user Which user presence should be toggled\n @param isAllowed `true` if user should be allowed to be sponsored\n  or call this contract, `false` otherwise\n @dev Only contract owner can change this setting\n @dev EVM selector for this function is: 0x4706cc1c,\n  or in textual repr: toggleAllowed(address,address,bool)"
+                                },
+                                "functionSelector": "4706cc1c",
+                                "id": 265,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "toggleAllowed",
+                                "nameLocation": "6941:13:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 263,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 258,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "6966:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 265,
+                                            "src": "6958:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 257,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "6958:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 260,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "6993:4:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 265,
+                                            "src": "6985:12:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 259,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "6985:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 262,
+                                            "mutability": "mutable",
+                                            "name": "isAllowed",
+                                            "nameLocation": "7006:9:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 265,
+                                            "src": "7001:14:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 261,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7001:4:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "6954:64:1"
+                                },
+                                "returnParameters": {
+                                    "id": 264,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "7027:0:1"
+                                },
+                                "scope": 282,
+                                "src": "6932:96:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 266,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "7031:554:1",
+                                    "text": "Is this contract has allowlist access enabled\n @dev Allowlist always can have users, and it is used for two purposes:\n  in case of allowlist sponsoring mode, users will be sponsored if they exist in allowlist\n  in case of allowlist access enabled, only users from allowlist may call this contract\n @param contractAddress Contract to get allowlist access of\n @return bool Is specified contract has allowlist access enabled\n @dev EVM selector for this function is: 0xc772ef6c,\n  or in textual repr: allowlistEnabled(address)"
+                                },
+                                "functionSelector": "c772ef6c",
+                                "id": 273,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "allowlistEnabled",
+                                "nameLocation": "7596:16:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 269,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 268,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "7621:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 273,
+                                            "src": "7613:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 267,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7613:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7612:25:1"
+                                },
+                                "returnParameters": {
+                                    "id": 272,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 271,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 273,
+                                            "src": "7661:4:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 270,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7661:4:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7660:6:1"
+                                },
+                                "scope": 282,
+                                "src": "7587:80:1",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 274,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "7670:275:1",
+                                    "text": "Toggle contract allowlist access\n @param contractAddress Contract to change allowlist access of\n @param enabled Should allowlist access to be enabled?\n @dev EVM selector for this function is: 0x36de20f5,\n  or in textual repr: toggleAllowlist(address,bool)"
+                                },
+                                "functionSelector": "36de20f5",
+                                "id": 281,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "toggleAllowlist",
+                                "nameLocation": "7956:15:1",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 279,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 276,
+                                            "mutability": "mutable",
+                                            "name": "contractAddress",
+                                            "nameLocation": "7980:15:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 281,
+                                            "src": "7972:23:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 275,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7972:7:1",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 278,
+                                            "mutability": "mutable",
+                                            "name": "enabled",
+                                            "nameLocation": "8002:7:1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 281,
+                                            "src": "7997:12:1",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 277,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7997:4:1",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7971:39:1"
+                                },
+                                "returnParameters": {
+                                    "id": 280,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8019:0:1"
+                                },
+                                "scope": 282,
+                                "src": "7947:73:1",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 288,
+                        "src": "702:7320:1",
+                        "usedErrors": []
+                    },
+                    {
+                        "canonicalName": "Tuple0",
+                        "id": 287,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 284,
+                                "mutability": "mutable",
+                                "name": "field_0",
+                                "nameLocation": "8075:7:1",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 287,
+                                "src": "8067:15:1",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_address",
+                                    "typeString": "address"
+                                },
+                                "typeName": {
+                                    "id": 283,
+                                    "name": "address",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "8067:7:1",
+                                    "stateMutability": "nonpayable",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 286,
+                                "mutability": "mutable",
+                                "name": "field_1",
+                                "nameLocation": "8093:7:1",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 287,
+                                "src": "8085:15:1",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_uint256",
+                                    "typeString": "uint256"
+                                },
+                                "typeName": {
+                                    "id": 285,
+                                    "name": "uint256",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "8085:7:1",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "Tuple0",
+                        "nameLocation": "8057:6:1",
+                        "nodeType": "StructDefinition",
+                        "scope": 288,
+                        "src": "8050:53:1",
+                        "visibility": "public"
+                    }
+                ],
+                "src": "75:8029:1"
+            },
+            "id": 1
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol": {
+            "ast": {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol",
+                "exportedSymbols": {
+                    "Collection": [
+                        605
+                    ],
+                    "Dummy": [
+                        291
+                    ],
+                    "ERC165": [
+                        301
+                    ],
+                    "ERC721": [
+                        909
+                    ],
+                    "ERC721Burnable": [
+                        646
+                    ],
+                    "ERC721Enumerable": [
+                        793
+                    ],
+                    "ERC721Events": [
+                        819
+                    ],
+                    "ERC721Metadata": [
+                        634
+                    ],
+                    "ERC721UniqueExtensions": [
+                        758
+                    ],
+                    "ERC721UniqueMintable": [
+                        688
+                    ],
+                    "ERC721UniqueMintableEvents": [
+                        650
+                    ],
+                    "EthCrossAccount": [
+                        610
+                    ],
+                    "TokenProperties": [
+                        357
+                    ],
+                    "Tuple10": [
+                        763
+                    ],
+                    "Tuple21": [
+                        620
+                    ],
+                    "Tuple24": [
+                        615
+                    ],
+                    "UniqueNFT": [
+                        930
+                    ]
+                },
+                "id": 931,
+                "license": "OTHER",
+                "nodeType": "SourceUnit",
+                "nodes": [
+                    {
+                        "id": 289,
+                        "literals": [
+                            "solidity",
+                            ">=",
+                            "0.8",
+                            ".0",
+                            "<",
+                            "0.9",
+                            ".0"
+                        ],
+                        "nodeType": "PragmaDirective",
+                        "src": "75:31:2"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "Dummy",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 290,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "108:29:2",
+                            "text": "@dev common stubs holder"
+                        },
+                        "fullyImplemented": true,
+                        "id": 291,
+                        "linearizedBaseContracts": [
+                            291
+                        ],
+                        "name": "Dummy",
+                        "nameLocation": "147:5:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [],
+                        "scope": 931,
+                        "src": "137:20:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 292,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "179:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "179:5:2"
+                                },
+                                "id": 293,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "179:5:2"
+                            }
+                        ],
+                        "canonicalName": "ERC165",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "fullyImplemented": false,
+                        "id": 301,
+                        "linearizedBaseContracts": [
+                            301,
+                            291
+                        ],
+                        "name": "ERC165",
+                        "nameLocation": "169:6:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "functionSelector": "01ffc9a7",
+                                "id": 300,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "supportsInterface",
+                                "nameLocation": "197:17:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 296,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 295,
+                                            "mutability": "mutable",
+                                            "name": "interfaceID",
+                                            "nameLocation": "222:11:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 300,
+                                            "src": "215:18:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes4",
+                                                "typeString": "bytes4"
+                                            },
+                                            "typeName": {
+                                                "id": 294,
+                                                "name": "bytes4",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "215:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes4",
+                                                    "typeString": "bytes4"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "214:20:2"
+                                },
+                                "returnParameters": {
+                                    "id": 299,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 298,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 300,
+                                            "src": "258:4:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 297,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "258:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "257:6:2"
+                                },
+                                "scope": 301,
+                                "src": "188:76:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "159:107:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 303,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "470:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "470:5:2"
+                                },
+                                "id": 304,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "470:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 305,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "477:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "477:6:2"
+                                },
+                                "id": 306,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "477:6:2"
+                            }
+                        ],
+                        "canonicalName": "TokenProperties",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 302,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "268:173:2",
+                            "text": "@title A contract that allows to set and delete token properties and change token property permissions.\n @dev the ERC-165 identifier for this interface is 0x55dba919"
+                        },
+                        "fullyImplemented": false,
+                        "id": 357,
+                        "linearizedBaseContracts": [
+                            357,
+                            301,
+                            291
+                        ],
+                        "name": "TokenProperties",
+                        "nameLocation": "451:15:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 307,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "487:537:2",
+                                    "text": "@notice Set permissions for token property.\n @dev Throws error if `msg.sender` is not admin or owner of the collection.\n @param key Property key.\n @param isMutable Permission to mutate property.\n @param collectionAdmin Permission to mutate property by collection admin if property is mutable.\n @param tokenOwner Permission to mutate property by token owner if property is mutable.\n @dev EVM selector for this function is: 0x222d97fa,\n  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)"
+                                },
+                                "functionSelector": "222d97fa",
+                                "id": 318,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setTokenPropertyPermission",
+                                "nameLocation": "1035:26:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 316,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 309,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "1079:3:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 318,
+                                            "src": "1065:17:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 308,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1065:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 311,
+                                            "mutability": "mutable",
+                                            "name": "isMutable",
+                                            "nameLocation": "1091:9:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 318,
+                                            "src": "1086:14:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 310,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1086:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 313,
+                                            "mutability": "mutable",
+                                            "name": "collectionAdmin",
+                                            "nameLocation": "1109:15:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 318,
+                                            "src": "1104:20:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 312,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1104:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 315,
+                                            "mutability": "mutable",
+                                            "name": "tokenOwner",
+                                            "nameLocation": "1133:10:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 318,
+                                            "src": "1128:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 314,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1128:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1061:85:2"
+                                },
+                                "returnParameters": {
+                                    "id": 317,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "1155:0:2"
+                                },
+                                "scope": 357,
+                                "src": "1026:130:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 319,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1159:334:2",
+                                    "text": "@notice Set token property value.\n @dev Throws error if `msg.sender` has no permission to edit the property.\n @param tokenId ID of the token.\n @param key Property key.\n @param value Property value.\n @dev EVM selector for this function is: 0x1752d67b,\n  or in textual repr: setProperty(uint256,string,bytes)"
+                                },
+                                "functionSelector": "1752d67b",
+                                "id": 328,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setProperty",
+                                "nameLocation": "1504:11:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 326,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 321,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "1527:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 328,
+                                            "src": "1519:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 320,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1519:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 323,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "1552:3:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 328,
+                                            "src": "1538:17:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 322,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1538:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 325,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "1572:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 328,
+                                            "src": "1559:18:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 324,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1559:5:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1515:65:2"
+                                },
+                                "returnParameters": {
+                                    "id": 327,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "1589:0:2"
+                                },
+                                "scope": 357,
+                                "src": "1495:95:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 329,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1593:321:2",
+                                    "text": "@notice Set token properties value.\n @dev Throws error if `msg.sender` has no permission to edit the property.\n @param tokenId ID of the token.\n @param properties settable properties\n @dev EVM selector for this function is: 0x14ed3a6e,\n  or in textual repr: setProperties(uint256,(string,bytes)[])"
+                                },
+                                "functionSelector": "14ed3a6e",
+                                "id": 338,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setProperties",
+                                "nameLocation": "1925:13:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 336,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 331,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "1947:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 338,
+                                            "src": "1939:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 330,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1939:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 335,
+                                            "mutability": "mutable",
+                                            "name": "properties",
+                                            "nameLocation": "1973:10:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 338,
+                                            "src": "1956:27:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "struct Tuple21[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 333,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 332,
+                                                        "name": "Tuple21",
+                                                        "nameLocations": [
+                                                            "1956:7:2"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 620,
+                                                        "src": "1956:7:2"
+                                                    },
+                                                    "referencedDeclaration": 620,
+                                                    "src": "1956:7:2",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_Tuple21_$620_storage_ptr",
+                                                        "typeString": "struct Tuple21"
+                                                    }
+                                                },
+                                                "id": 334,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "1956:9:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct Tuple21[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1938:46:2"
+                                },
+                                "returnParameters": {
+                                    "id": 337,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "1993:0:2"
+                                },
+                                "scope": 357,
+                                "src": "1916:78:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 339,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1997:300:2",
+                                    "text": "@notice Delete token property value.\n @dev Throws error if `msg.sender` has no permission to edit the property.\n @param tokenId ID of the token.\n @param key Property key.\n @dev EVM selector for this function is: 0x066111d1,\n  or in textual repr: deleteProperty(uint256,string)"
+                                },
+                                "functionSelector": "066111d1",
+                                "id": 346,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "deleteProperty",
+                                "nameLocation": "2308:14:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 344,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 341,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "2331:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 346,
+                                            "src": "2323:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 340,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2323:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 343,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "2354:3:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 346,
+                                            "src": "2340:17:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 342,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2340:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2322:36:2"
+                                },
+                                "returnParameters": {
+                                    "id": 345,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2367:0:2"
+                                },
+                                "scope": 357,
+                                "src": "2299:69:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 347,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2371:286:2",
+                                    "text": "@notice Get token property value.\n @dev Throws error if key not found\n @param tokenId ID of the token.\n @param key Property key.\n @return Property value bytes\n @dev EVM selector for this function is: 0x7228c327,\n  or in textual repr: property(uint256,string)"
+                                },
+                                "functionSelector": "7228c327",
+                                "id": 356,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "property",
+                                "nameLocation": "2668:8:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 352,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 349,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "2685:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 356,
+                                            "src": "2677:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 348,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2677:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 351,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "2708:3:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 356,
+                                            "src": "2694:17:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 350,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2694:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2676:36:2"
+                                },
+                                "returnParameters": {
+                                    "id": 355,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 354,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 356,
+                                            "src": "2736:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 353,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2736:5:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2735:14:2"
+                                },
+                                "scope": 357,
+                                "src": "2659:91:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "441:2311:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 359,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "2907:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "2907:5:2"
+                                },
+                                "id": 360,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "2907:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 361,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "2914:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "2914:6:2"
+                                },
+                                "id": 362,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "2914:6:2"
+                            }
+                        ],
+                        "canonicalName": "Collection",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 358,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "2754:129:2",
+                            "text": "@title A contract that allows you to work with collections.\n @dev the ERC-165 identifier for this interface is 0xb3152af3"
+                        },
+                        "fullyImplemented": false,
+                        "id": 605,
+                        "linearizedBaseContracts": [
+                            605,
+                            301,
+                            291
+                        ],
+                        "name": "Collection",
+                        "nameLocation": "2893:10:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 363,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2924:215:2",
+                                    "text": "Set collection property.\n @param key Property key.\n @param value Propery value.\n @dev EVM selector for this function is: 0x2f073f66,\n  or in textual repr: setCollectionProperty(string,bytes)"
+                                },
+                                "functionSelector": "2f073f66",
+                                "id": 370,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionProperty",
+                                "nameLocation": "3150:21:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 368,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 365,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "3186:3:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 370,
+                                            "src": "3172:17:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 364,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3172:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 367,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "3204:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 370,
+                                            "src": "3191:18:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 366,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3191:5:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3171:39:2"
+                                },
+                                "returnParameters": {
+                                    "id": 369,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "3219:0:2"
+                                },
+                                "scope": 605,
+                                "src": "3141:79:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 371,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3223:220:2",
+                                    "text": "Set collection properties.\n @param properties Vector of properties key/value pair.\n @dev EVM selector for this function is: 0x50b26b2a,\n  or in textual repr: setCollectionProperties((string,bytes)[])"
+                                },
+                                "functionSelector": "50b26b2a",
+                                "id": 378,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionProperties",
+                                "nameLocation": "3454:23:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 376,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 375,
+                                            "mutability": "mutable",
+                                            "name": "properties",
+                                            "nameLocation": "3495:10:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 378,
+                                            "src": "3478:27:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "struct Tuple21[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 373,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 372,
+                                                        "name": "Tuple21",
+                                                        "nameLocations": [
+                                                            "3478:7:2"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 620,
+                                                        "src": "3478:7:2"
+                                                    },
+                                                    "referencedDeclaration": 620,
+                                                    "src": "3478:7:2",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_Tuple21_$620_storage_ptr",
+                                                        "typeString": "struct Tuple21"
+                                                    }
+                                                },
+                                                "id": 374,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "3478:9:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct Tuple21[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3477:29:2"
+                                },
+                                "returnParameters": {
+                                    "id": 377,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "3515:0:2"
+                                },
+                                "scope": 605,
+                                "src": "3445:71:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 379,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3519:182:2",
+                                    "text": "Delete collection property.\n @param key Property key.\n @dev EVM selector for this function is: 0x7b7debce,\n  or in textual repr: deleteCollectionProperty(string)"
+                                },
+                                "functionSelector": "7b7debce",
+                                "id": 384,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "deleteCollectionProperty",
+                                "nameLocation": "3712:24:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 382,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 381,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "3751:3:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 384,
+                                            "src": "3737:17:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 380,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3737:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3736:19:2"
+                                },
+                                "returnParameters": {
+                                    "id": 383,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "3764:0:2"
+                                },
+                                "scope": 605,
+                                "src": "3703:62:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 385,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3768:192:2",
+                                    "text": "Delete collection properties.\n @param keys Properties keys.\n @dev EVM selector for this function is: 0xee206ee3,\n  or in textual repr: deleteCollectionProperties(string[])"
+                                },
+                                "functionSelector": "ee206ee3",
+                                "id": 391,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "deleteCollectionProperties",
+                                "nameLocation": "3971:26:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 389,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 388,
+                                            "mutability": "mutable",
+                                            "name": "keys",
+                                            "nameLocation": "4014:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 391,
+                                            "src": "3998:20:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "string[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 386,
+                                                    "name": "string",
+                                                    "nodeType": "ElementaryTypeName",
+                                                    "src": "3998:6:2",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_string_storage_ptr",
+                                                        "typeString": "string"
+                                                    }
+                                                },
+                                                "id": 387,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "3998:8:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
+                                                    "typeString": "string[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3997:22:2"
+                                },
+                                "returnParameters": {
+                                    "id": 390,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "4028:0:2"
+                                },
+                                "scope": 605,
+                                "src": "3962:67:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 392,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4032:277:2",
+                                    "text": "Get collection property.\n @dev Throws error if key not found.\n @param key Property key.\n @return bytes The property corresponding to the key.\n @dev EVM selector for this function is: 0xcf24fd6d,\n  or in textual repr: collectionProperty(string)"
+                                },
+                                "functionSelector": "cf24fd6d",
+                                "id": 399,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionProperty",
+                                "nameLocation": "4320:18:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 395,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 394,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "4353:3:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 399,
+                                            "src": "4339:17:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 393,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4339:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4338:19:2"
+                                },
+                                "returnParameters": {
+                                    "id": 398,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 397,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 399,
+                                            "src": "4381:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 396,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4381:5:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4380:14:2"
+                                },
+                                "scope": 605,
+                                "src": "4311:84:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 400,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4398:265:2",
+                                    "text": "Get collection properties.\n @param keys Properties keys. Empty keys for all propertyes.\n @return Vector of properties key/value pairs.\n @dev EVM selector for this function is: 0x285fb8e6,\n  or in textual repr: collectionProperties(string[])"
+                                },
+                                "functionSelector": "285fb8e6",
+                                "id": 410,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionProperties",
+                                "nameLocation": "4674:20:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 404,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 403,
+                                            "mutability": "mutable",
+                                            "name": "keys",
+                                            "nameLocation": "4711:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 410,
+                                            "src": "4695:20:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "string[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 401,
+                                                    "name": "string",
+                                                    "nodeType": "ElementaryTypeName",
+                                                    "src": "4695:6:2",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_string_storage_ptr",
+                                                        "typeString": "string"
+                                                    }
+                                                },
+                                                "id": 402,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "4695:8:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
+                                                    "typeString": "string[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4694:22:2"
+                                },
+                                "returnParameters": {
+                                    "id": 409,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 408,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 410,
+                                            "src": "4740:16:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "struct Tuple21[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 406,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 405,
+                                                        "name": "Tuple21",
+                                                        "nameLocations": [
+                                                            "4740:7:2"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 620,
+                                                        "src": "4740:7:2"
+                                                    },
+                                                    "referencedDeclaration": 620,
+                                                    "src": "4740:7:2",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_Tuple21_$620_storage_ptr",
+                                                        "typeString": "struct Tuple21"
+                                                    }
+                                                },
+                                                "id": 407,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "4740:9:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct Tuple21[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4739:18:2"
+                                },
+                                "scope": 605,
+                                "src": "4665:93:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 411,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4761:370:2",
+                                    "text": "Set the sponsor of the collection.\n @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.\n @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.\n @dev EVM selector for this function is: 0x7623402e,\n  or in textual repr: setCollectionSponsor(address)"
+                                },
+                                "functionSelector": "7623402e",
+                                "id": 416,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionSponsor",
+                                "nameLocation": "5142:20:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 414,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 413,
+                                            "mutability": "mutable",
+                                            "name": "sponsor",
+                                            "nameLocation": "5171:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 416,
+                                            "src": "5163:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 412,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5163:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5162:17:2"
+                                },
+                                "returnParameters": {
+                                    "id": 415,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5188:0:2"
+                                },
+                                "scope": 605,
+                                "src": "5133:56:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 417,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "5192:399:2",
+                                    "text": "Set the sponsor of the collection.\n @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.\n @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.\n @dev EVM selector for this function is: 0x84a1d5a8,\n  or in textual repr: setCollectionSponsorCross((address,uint256))"
+                                },
+                                "functionSelector": "84a1d5a8",
+                                "id": 423,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionSponsorCross",
+                                "nameLocation": "5602:25:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 421,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 420,
+                                            "mutability": "mutable",
+                                            "name": "sponsor",
+                                            "nameLocation": "5651:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 423,
+                                            "src": "5628:30:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 419,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 418,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "5628:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "5628:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "5628:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5627:32:2"
+                                },
+                                "returnParameters": {
+                                    "id": 422,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5668:0:2"
+                                },
+                                "scope": 605,
+                                "src": "5593:76:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 424,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "5672:152:2",
+                                    "text": "Whether there is a pending sponsor.\n @dev EVM selector for this function is: 0x058ac185,\n  or in textual repr: hasCollectionPendingSponsor()"
+                                },
+                                "functionSelector": "058ac185",
+                                "id": 429,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "hasCollectionPendingSponsor",
+                                "nameLocation": "5835:27:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 425,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5862:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 428,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 427,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 429,
+                                            "src": "5888:4:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 426,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5888:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5887:6:2"
+                                },
+                                "scope": 605,
+                                "src": "5826:68:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 430,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "5897:256:2",
+                                    "text": "Collection sponsorship confirmation.\n @dev After setting the sponsor for the collection, it must be confirmed with this function.\n @dev EVM selector for this function is: 0x3c50e97a,\n  or in textual repr: confirmCollectionSponsorship()"
+                                },
+                                "functionSelector": "3c50e97a",
+                                "id": 433,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "confirmCollectionSponsorship",
+                                "nameLocation": "6164:28:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 431,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6192:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 432,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6203:0:2"
+                                },
+                                "scope": 605,
+                                "src": "6155:49:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 434,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "6207:139:2",
+                                    "text": "Remove collection sponsor.\n @dev EVM selector for this function is: 0x6e0326a3,\n  or in textual repr: removeCollectionSponsor()"
+                                },
+                                "functionSelector": "6e0326a3",
+                                "id": 437,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeCollectionSponsor",
+                                "nameLocation": "6357:23:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 435,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6380:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 436,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6391:0:2"
+                                },
+                                "scope": 605,
+                                "src": "6348:44:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 438,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "6395:270:2",
+                                    "text": "Get current sponsor.\n @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \"Contract has no sponsor\" throw.\n @dev EVM selector for this function is: 0x6ec0a9f1,\n  or in textual repr: collectionSponsor()"
+                                },
+                                "functionSelector": "6ec0a9f1",
+                                "id": 444,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionSponsor",
+                                "nameLocation": "6676:17:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 439,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6693:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 443,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 442,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 444,
+                                            "src": "6719:14:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_Tuple24_$615_memory_ptr",
+                                                "typeString": "struct Tuple24"
+                                            },
+                                            "typeName": {
+                                                "id": 441,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 440,
+                                                    "name": "Tuple24",
+                                                    "nameLocations": [
+                                                        "6719:7:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 615,
+                                                    "src": "6719:7:2"
+                                                },
+                                                "referencedDeclaration": 615,
+                                                "src": "6719:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_Tuple24_$615_storage_ptr",
+                                                    "typeString": "struct Tuple24"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "6718:16:2"
+                                },
+                                "scope": 605,
+                                "src": "6667:68:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 445,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "6738:459:2",
+                                    "text": "Set limits for the collection.\n @dev Throws error if limit not found.\n @param limit Name of the limit. Valid names:\n \t\"accountTokenOwnershipLimit\",\n \t\"sponsoredDataSize\",\n \t\"sponsoredDataRateLimit\",\n \t\"tokenLimit\",\n \t\"sponsorTransferTimeout\",\n \t\"sponsorApproveTimeout\"\n @param value Value of the limit.\n @dev EVM selector for this function is: 0x6a3841db,\n  or in textual repr: setCollectionLimit(string,uint32)"
+                                },
+                                "functionSelector": "6a3841db",
+                                "id": 452,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionLimit",
+                                "nameLocation": "7208:18:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 450,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 447,
+                                            "mutability": "mutable",
+                                            "name": "limit",
+                                            "nameLocation": "7241:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 452,
+                                            "src": "7227:19:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 446,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7227:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 449,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "7255:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 452,
+                                            "src": "7248:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint32",
+                                                "typeString": "uint32"
+                                            },
+                                            "typeName": {
+                                                "id": 448,
+                                                "name": "uint32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7248:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint32",
+                                                    "typeString": "uint32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7226:35:2"
+                                },
+                                "returnParameters": {
+                                    "id": 451,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "7270:0:2"
+                                },
+                                "scope": 605,
+                                "src": "7199:72:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 453,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "7274:356:2",
+                                    "text": "Set limits for the collection.\n @dev Throws error if limit not found.\n @param limit Name of the limit. Valid names:\n \t\"ownerCanTransfer\",\n \t\"ownerCanDestroy\",\n \t\"transfersEnabled\"\n @param value Value of the limit.\n @dev EVM selector for this function is: 0x993b7fba,\n  or in textual repr: setCollectionLimit(string,bool)"
+                                },
+                                "functionSelector": "993b7fba",
+                                "id": 460,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionLimit",
+                                "nameLocation": "7641:18:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 458,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 455,
+                                            "mutability": "mutable",
+                                            "name": "limit",
+                                            "nameLocation": "7674:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 460,
+                                            "src": "7660:19:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 454,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7660:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 457,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "7686:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 460,
+                                            "src": "7681:10:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 456,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7681:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7659:33:2"
+                                },
+                                "returnParameters": {
+                                    "id": 459,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "7701:0:2"
+                                },
+                                "scope": 605,
+                                "src": "7632:70:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 461,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "7705:126:2",
+                                    "text": "Get contract address.\n @dev EVM selector for this function is: 0xf6b4dfb4,\n  or in textual repr: contractAddress()"
+                                },
+                                "functionSelector": "f6b4dfb4",
+                                "id": 466,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "contractAddress",
+                                "nameLocation": "7842:15:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 462,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "7857:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 465,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 464,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 466,
+                                            "src": "7883:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 463,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7883:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7882:9:2"
+                                },
+                                "scope": 605,
+                                "src": "7833:59:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 467,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "7895:209:2",
+                                    "text": "Add collection admin.\n @param newAdmin Cross account administrator address.\n @dev EVM selector for this function is: 0x859aa7d6,\n  or in textual repr: addCollectionAdminCross((address,uint256))"
+                                },
+                                "functionSelector": "859aa7d6",
+                                "id": 473,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "addCollectionAdminCross",
+                                "nameLocation": "8115:23:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 471,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 470,
+                                            "mutability": "mutable",
+                                            "name": "newAdmin",
+                                            "nameLocation": "8162:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 473,
+                                            "src": "8139:31:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 469,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 468,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "8139:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "8139:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "8139:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "8138:33:2"
+                                },
+                                "returnParameters": {
+                                    "id": 472,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8180:0:2"
+                                },
+                                "scope": 605,
+                                "src": "8106:75:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 474,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "8184:212:2",
+                                    "text": "Remove collection admin.\n @param admin Cross account administrator address.\n @dev EVM selector for this function is: 0x6c0cd173,\n  or in textual repr: removeCollectionAdminCross((address,uint256))"
+                                },
+                                "functionSelector": "6c0cd173",
+                                "id": 480,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeCollectionAdminCross",
+                                "nameLocation": "8407:26:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 478,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 477,
+                                            "mutability": "mutable",
+                                            "name": "admin",
+                                            "nameLocation": "8457:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 480,
+                                            "src": "8434:28:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 476,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 475,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "8434:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "8434:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "8434:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "8433:30:2"
+                                },
+                                "returnParameters": {
+                                    "id": 479,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8472:0:2"
+                                },
+                                "scope": 605,
+                                "src": "8398:75:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 481,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "8476:193:2",
+                                    "text": "Add collection admin.\n @param newAdmin Address of the added administrator.\n @dev EVM selector for this function is: 0x92e462c7,\n  or in textual repr: addCollectionAdmin(address)"
+                                },
+                                "functionSelector": "92e462c7",
+                                "id": 486,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "addCollectionAdmin",
+                                "nameLocation": "8680:18:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 484,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 483,
+                                            "mutability": "mutable",
+                                            "name": "newAdmin",
+                                            "nameLocation": "8707:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 486,
+                                            "src": "8699:16:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 482,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "8699:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "8698:18:2"
+                                },
+                                "returnParameters": {
+                                    "id": 485,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8725:0:2"
+                                },
+                                "scope": 605,
+                                "src": "8671:55:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 487,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "8729:203:2",
+                                    "text": "Remove collection admin.\n @param admin Address of the removed administrator.\n @dev EVM selector for this function is: 0xfafd7b42,\n  or in textual repr: removeCollectionAdmin(address)"
+                                },
+                                "functionSelector": "fafd7b42",
+                                "id": 492,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeCollectionAdmin",
+                                "nameLocation": "8943:21:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 490,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 489,
+                                            "mutability": "mutable",
+                                            "name": "admin",
+                                            "nameLocation": "8973:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 492,
+                                            "src": "8965:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 488,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "8965:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "8964:15:2"
+                                },
+                                "returnParameters": {
+                                    "id": 491,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8988:0:2"
+                                },
+                                "scope": 605,
+                                "src": "8934:55:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 493,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "8992:251:2",
+                                    "text": "Toggle accessibility of collection nesting.\n @param enable If \"true\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'\n @dev EVM selector for this function is: 0x112d4586,\n  or in textual repr: setCollectionNesting(bool)"
+                                },
+                                "functionSelector": "112d4586",
+                                "id": 498,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionNesting",
+                                "nameLocation": "9254:20:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 496,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 495,
+                                            "mutability": "mutable",
+                                            "name": "enable",
+                                            "nameLocation": "9280:6:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 498,
+                                            "src": "9275:11:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 494,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "9275:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "9274:13:2"
+                                },
+                                "returnParameters": {
+                                    "id": 497,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "9296:0:2"
+                                },
+                                "scope": 605,
+                                "src": "9245:52:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 499,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "9300:367:2",
+                                    "text": "Toggle accessibility of collection nesting.\n @param enable If \"true\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'\n @param collections Addresses of collections that will be available for nesting.\n @dev EVM selector for this function is: 0x64872396,\n  or in textual repr: setCollectionNesting(bool,address[])"
+                                },
+                                "functionSelector": "64872396",
+                                "id": 507,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionNesting",
+                                "nameLocation": "9678:20:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 505,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 501,
+                                            "mutability": "mutable",
+                                            "name": "enable",
+                                            "nameLocation": "9704:6:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 507,
+                                            "src": "9699:11:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 500,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "9699:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 504,
+                                            "mutability": "mutable",
+                                            "name": "collections",
+                                            "nameLocation": "9729:11:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 507,
+                                            "src": "9712:28:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+                                                "typeString": "address[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 502,
+                                                    "name": "address",
+                                                    "nodeType": "ElementaryTypeName",
+                                                    "src": "9712:7:2",
+                                                    "stateMutability": "nonpayable",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_address",
+                                                        "typeString": "address"
+                                                    }
+                                                },
+                                                "id": 503,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "9712:9:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+                                                    "typeString": "address[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "9698:43:2"
+                                },
+                                "returnParameters": {
+                                    "id": 506,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "9750:0:2"
+                                },
+                                "scope": 605,
+                                "src": "9669:82:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 508,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "9754:217:2",
+                                    "text": "Set the collection access method.\n @param mode Access mode\n \t0 for Normal\n \t1 for AllowList\n @dev EVM selector for this function is: 0x41835d4c,\n  or in textual repr: setCollectionAccess(uint8)"
+                                },
+                                "functionSelector": "41835d4c",
+                                "id": 513,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionAccess",
+                                "nameLocation": "9982:19:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 511,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 510,
+                                            "mutability": "mutable",
+                                            "name": "mode",
+                                            "nameLocation": "10008:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 513,
+                                            "src": "10002:10:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint8",
+                                                "typeString": "uint8"
+                                            },
+                                            "typeName": {
+                                                "id": 509,
+                                                "name": "uint8",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "10002:5:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint8",
+                                                    "typeString": "uint8"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10001:12:2"
+                                },
+                                "returnParameters": {
+                                    "id": 512,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "10022:0:2"
+                                },
+                                "scope": 605,
+                                "src": "9973:50:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 514,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "10026:201:2",
+                                    "text": "Checks that user allowed to operate with collection.\n @param user User address to check.\n @dev EVM selector for this function is: 0xd63a8e11,\n  or in textual repr: allowed(address)"
+                                },
+                                "functionSelector": "d63a8e11",
+                                "id": 521,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "allowed",
+                                "nameLocation": "10238:7:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 517,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 516,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "10254:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 521,
+                                            "src": "10246:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 515,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "10246:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10245:14:2"
+                                },
+                                "returnParameters": {
+                                    "id": 520,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 519,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 521,
+                                            "src": "10283:4:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 518,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "10283:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10282:6:2"
+                                },
+                                "scope": 605,
+                                "src": "10229:60:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 522,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "10292:203:2",
+                                    "text": "Add the user to the allowed list.\n @param user Address of a trusted user.\n @dev EVM selector for this function is: 0x67844fe6,\n  or in textual repr: addToCollectionAllowList(address)"
+                                },
+                                "functionSelector": "67844fe6",
+                                "id": 527,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "addToCollectionAllowList",
+                                "nameLocation": "10506:24:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 525,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 524,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "10539:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 527,
+                                            "src": "10531:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 523,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "10531:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10530:14:2"
+                                },
+                                "returnParameters": {
+                                    "id": 526,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "10553:0:2"
+                                },
+                                "scope": 605,
+                                "src": "10497:57:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 528,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "10557:211:2",
+                                    "text": "Add user to allowed list.\n @param user User cross account address.\n @dev EVM selector for this function is: 0xa0184a3a,\n  or in textual repr: addToCollectionAllowListCross((address,uint256))"
+                                },
+                                "functionSelector": "a0184a3a",
+                                "id": 534,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "addToCollectionAllowListCross",
+                                "nameLocation": "10779:29:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 532,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 531,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "10832:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 534,
+                                            "src": "10809:27:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 530,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 529,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "10809:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "10809:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "10809:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10808:29:2"
+                                },
+                                "returnParameters": {
+                                    "id": 533,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "10846:0:2"
+                                },
+                                "scope": 605,
+                                "src": "10770:77:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 535,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "10850:213:2",
+                                    "text": "Remove the user from the allowed list.\n @param user Address of a removed user.\n @dev EVM selector for this function is: 0x85c51acb,\n  or in textual repr: removeFromCollectionAllowList(address)"
+                                },
+                                "functionSelector": "85c51acb",
+                                "id": 540,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeFromCollectionAllowList",
+                                "nameLocation": "11074:29:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 538,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 537,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "11112:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 540,
+                                            "src": "11104:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 536,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "11104:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "11103:14:2"
+                                },
+                                "returnParameters": {
+                                    "id": 539,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "11126:0:2"
+                                },
+                                "scope": 605,
+                                "src": "11065:62:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 541,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "11130:221:2",
+                                    "text": "Remove user from allowed list.\n @param user User cross account address.\n @dev EVM selector for this function is: 0x09ba452a,\n  or in textual repr: removeFromCollectionAllowListCross((address,uint256))"
+                                },
+                                "functionSelector": "09ba452a",
+                                "id": 547,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeFromCollectionAllowListCross",
+                                "nameLocation": "11362:34:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 545,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 544,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "11420:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 547,
+                                            "src": "11397:27:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 543,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 542,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "11397:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "11397:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "11397:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "11396:29:2"
+                                },
+                                "returnParameters": {
+                                    "id": 546,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "11434:0:2"
+                                },
+                                "scope": 605,
+                                "src": "11353:82:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 548,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "11438:185:2",
+                                    "text": "Switch permission for minting.\n @param mode Enable if \"true\".\n @dev EVM selector for this function is: 0x00018e84,\n  or in textual repr: setCollectionMintMode(bool)"
+                                },
+                                "functionSelector": "00018e84",
+                                "id": 553,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionMintMode",
+                                "nameLocation": "11634:21:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 551,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 550,
+                                            "mutability": "mutable",
+                                            "name": "mode",
+                                            "nameLocation": "11661:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 553,
+                                            "src": "11656:9:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 549,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "11656:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "11655:11:2"
+                                },
+                                "returnParameters": {
+                                    "id": 552,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "11675:0:2"
+                                },
+                                "scope": 605,
+                                "src": "11625:51:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 554,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "11679:262:2",
+                                    "text": "Check that account is the owner or admin of the collection\n @param user account to verify\n @return \"true\" if account is the owner or admin\n @dev EVM selector for this function is: 0x9811b0c7,\n  or in textual repr: isOwnerOrAdmin(address)"
+                                },
+                                "functionSelector": "9811b0c7",
+                                "id": 561,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "isOwnerOrAdmin",
+                                "nameLocation": "11952:14:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 557,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 556,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "11975:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 561,
+                                            "src": "11967:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 555,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "11967:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "11966:14:2"
+                                },
+                                "returnParameters": {
+                                    "id": 560,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 559,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 561,
+                                            "src": "12004:4:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 558,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "12004:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12003:6:2"
+                                },
+                                "scope": 605,
+                                "src": "11943:67:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 562,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "12013:288:2",
+                                    "text": "Check that account is the owner or admin of the collection\n @param user User cross account to verify\n @return \"true\" if account is the owner or admin\n @dev EVM selector for this function is: 0x3e75a905,\n  or in textual repr: isOwnerOrAdminCross((address,uint256))"
+                                },
+                                "functionSelector": "3e75a905",
+                                "id": 570,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "isOwnerOrAdminCross",
+                                "nameLocation": "12312:19:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 566,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 565,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "12355:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 570,
+                                            "src": "12332:27:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 564,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 563,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "12332:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "12332:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "12332:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12331:29:2"
+                                },
+                                "returnParameters": {
+                                    "id": 569,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 568,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 570,
+                                            "src": "12384:4:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 567,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "12384:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12383:6:2"
+                                },
+                                "scope": 605,
+                                "src": "12303:87:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 571,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "12393:187:2",
+                                    "text": "Returns collection type\n @return `Fungible` or `NFT` or `ReFungible`\n @dev EVM selector for this function is: 0xd34b55b8,\n  or in textual repr: uniqueCollectionType()"
+                                },
+                                "functionSelector": "d34b55b8",
+                                "id": 576,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "uniqueCollectionType",
+                                "nameLocation": "12591:20:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 572,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "12611:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 575,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 574,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 576,
+                                            "src": "12637:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 573,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "12637:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12636:15:2"
+                                },
+                                "scope": 605,
+                                "src": "12582:70:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 577,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "12655:272:2",
+                                    "text": "Get collection owner.\n @return Tuble with sponsor address and his substrate mirror.\n If address is canonical then substrate mirror is zero and vice versa.\n @dev EVM selector for this function is: 0xdf727d3b,\n  or in textual repr: collectionOwner()"
+                                },
+                                "functionSelector": "df727d3b",
+                                "id": 583,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionOwner",
+                                "nameLocation": "12938:15:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 578,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "12953:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 582,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 581,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 583,
+                                            "src": "12979:22:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 580,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 579,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "12979:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "12979:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "12979:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12978:24:2"
+                                },
+                                "scope": 605,
+                                "src": "12929:74:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 584,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "13006:258:2",
+                                    "text": "Changes collection owner to another account\n @dev Owner can be changed only by current owner\n @param newOwner new owner account\n @dev EVM selector for this function is: 0x4f53e226,\n  or in textual repr: changeCollectionOwner(address)"
+                                },
+                                "functionSelector": "4f53e226",
+                                "id": 589,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "changeCollectionOwner",
+                                "nameLocation": "13275:21:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 587,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 586,
+                                            "mutability": "mutable",
+                                            "name": "newOwner",
+                                            "nameLocation": "13305:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 589,
+                                            "src": "13297:16:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 585,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "13297:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "13296:18:2"
+                                },
+                                "returnParameters": {
+                                    "id": 588,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "13323:0:2"
+                                },
+                                "scope": 605,
+                                "src": "13266:58:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 590,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "13327:291:2",
+                                    "text": "Get collection administrators\n @return Vector of tuples with admins address and his substrate mirror.\n If address is canonical then substrate mirror is zero and vice versa.\n @dev EVM selector for this function is: 0x5813216b,\n  or in textual repr: collectionAdmins()"
+                                },
+                                "functionSelector": "5813216b",
+                                "id": 597,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionAdmins",
+                                "nameLocation": "13629:16:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 591,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "13645:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 596,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 595,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 597,
+                                            "src": "13671:24:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_EthCrossAccount_$610_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "struct EthCrossAccount[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 593,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 592,
+                                                        "name": "EthCrossAccount",
+                                                        "nameLocations": [
+                                                            "13671:15:2"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 610,
+                                                        "src": "13671:15:2"
+                                                    },
+                                                    "referencedDeclaration": 610,
+                                                    "src": "13671:15:2",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                        "typeString": "struct EthCrossAccount"
+                                                    }
+                                                },
+                                                "id": 594,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "13671:17:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_EthCrossAccount_$610_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "13670:26:2"
+                                },
+                                "scope": 605,
+                                "src": "13620:77:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 598,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "13700:266:2",
+                                    "text": "Changes collection owner to another account\n @dev Owner can be changed only by current owner\n @param newOwner new owner cross account\n @dev EVM selector for this function is: 0xe5c9913f,\n  or in textual repr: setOwnerCross((address,uint256))"
+                                },
+                                "functionSelector": "e5c9913f",
+                                "id": 604,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setOwnerCross",
+                                "nameLocation": "13977:13:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 602,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 601,
+                                            "mutability": "mutable",
+                                            "name": "newOwner",
+                                            "nameLocation": "14014:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 604,
+                                            "src": "13991:31:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 600,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 599,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "13991:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "13991:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "13991:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "13990:33:2"
+                                },
+                                "returnParameters": {
+                                    "id": 603,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "14032:0:2"
+                                },
+                                "scope": 605,
+                                "src": "13968:65:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "2883:11152:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "canonicalName": "EthCrossAccount",
+                        "id": 610,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 607,
+                                "mutability": "mutable",
+                                "name": "eth",
+                                "nameLocation": "14101:3:2",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 610,
+                                "src": "14093:11:2",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_address",
+                                    "typeString": "address"
+                                },
+                                "typeName": {
+                                    "id": 606,
+                                    "name": "address",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14093:7:2",
+                                    "stateMutability": "nonpayable",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 609,
+                                "mutability": "mutable",
+                                "name": "sub",
+                                "nameLocation": "14115:3:2",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 610,
+                                "src": "14107:11:2",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_uint256",
+                                    "typeString": "uint256"
+                                },
+                                "typeName": {
+                                    "id": 608,
+                                    "name": "uint256",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14107:7:2",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "EthCrossAccount",
+                        "nameLocation": "14074:15:2",
+                        "nodeType": "StructDefinition",
+                        "scope": 931,
+                        "src": "14067:54:2",
+                        "visibility": "public"
+                    },
+                    {
+                        "canonicalName": "Tuple24",
+                        "id": 615,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 612,
+                                "mutability": "mutable",
+                                "name": "field_0",
+                                "nameLocation": "14175:7:2",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 615,
+                                "src": "14167:15:2",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_address",
+                                    "typeString": "address"
+                                },
+                                "typeName": {
+                                    "id": 611,
+                                    "name": "address",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14167:7:2",
+                                    "stateMutability": "nonpayable",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 614,
+                                "mutability": "mutable",
+                                "name": "field_1",
+                                "nameLocation": "14193:7:2",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 615,
+                                "src": "14185:15:2",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_uint256",
+                                    "typeString": "uint256"
+                                },
+                                "typeName": {
+                                    "id": 613,
+                                    "name": "uint256",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14185:7:2",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "Tuple24",
+                        "nameLocation": "14156:7:2",
+                        "nodeType": "StructDefinition",
+                        "scope": 931,
+                        "src": "14149:54:2",
+                        "visibility": "public"
+                    },
+                    {
+                        "canonicalName": "Tuple21",
+                        "id": 620,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 617,
+                                "mutability": "mutable",
+                                "name": "field_0",
+                                "nameLocation": "14256:7:2",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 620,
+                                "src": "14249:14:2",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_string_storage_ptr",
+                                    "typeString": "string"
+                                },
+                                "typeName": {
+                                    "id": 616,
+                                    "name": "string",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14249:6:2",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_string_storage_ptr",
+                                        "typeString": "string"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 619,
+                                "mutability": "mutable",
+                                "name": "field_1",
+                                "nameLocation": "14272:7:2",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 620,
+                                "src": "14266:13:2",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                    "typeString": "bytes"
+                                },
+                                "typeName": {
+                                    "id": 618,
+                                    "name": "bytes",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14266:5:2",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes_storage_ptr",
+                                        "typeString": "bytes"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "Tuple21",
+                        "nameLocation": "14238:7:2",
+                        "nodeType": "StructDefinition",
+                        "scope": 931,
+                        "src": "14231:51:2",
+                        "visibility": "public"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 622,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "14505:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "14505:5:2"
+                                },
+                                "id": 623,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "14505:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 624,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "14512:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "14512:6:2"
+                                },
+                                "id": 625,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "14512:6:2"
+                            }
+                        ],
+                        "canonicalName": "ERC721Metadata",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 621,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "14284:193:2",
+                            "text": "@title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev the ERC-165 identifier for this interface is 0x5b5e139f"
+                        },
+                        "fullyImplemented": false,
+                        "id": 634,
+                        "linearizedBaseContracts": [
+                            634,
+                            301,
+                            291
+                        ],
+                        "name": "ERC721Metadata",
+                        "nameLocation": "14487:14:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 626,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "15143:784:2",
+                                    "text": "@notice A distinct Uniform Resource Identifier (URI) for a given asset.\n @dev If the token has a `url` property and it is not empty, it is returned.\n  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.\n  If the collection property `baseURI` is empty or absent, return \"\" (empty string)\n  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix\n  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).\n @return token's const_metadata\n @dev EVM selector for this function is: 0xc87b56dd,\n  or in textual repr: tokenURI(uint256)"
+                                },
+                                "functionSelector": "c87b56dd",
+                                "id": 633,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "tokenURI",
+                                "nameLocation": "15938:8:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 629,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 628,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "15955:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 633,
+                                            "src": "15947:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 627,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "15947:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "15946:17:2"
+                                },
+                                "returnParameters": {
+                                    "id": 632,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 631,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 633,
+                                            "src": "15987:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 630,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "15987:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "15986:15:2"
+                                },
+                                "scope": 634,
+                                "src": "15929:73:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "14477:1527:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 636,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "16168:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "16168:5:2"
+                                },
+                                "id": 637,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16168:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 638,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "16175:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "16175:6:2"
+                                },
+                                "id": 639,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16175:6:2"
+                            }
+                        ],
+                        "canonicalName": "ERC721Burnable",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 635,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "16006:134:2",
+                            "text": "@title ERC721 Token that can be irreversibly burned (destroyed).\n @dev the ERC-165 identifier for this interface is 0x42966c68"
+                        },
+                        "fullyImplemented": false,
+                        "id": 646,
+                        "linearizedBaseContracts": [
+                            646,
+                            301,
+                            291
+                        ],
+                        "name": "ERC721Burnable",
+                        "nameLocation": "16150:14:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 640,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "16185:295:2",
+                                    "text": "@notice Burns a specific ERC721 token.\n @dev Throws unless `msg.sender` is the current NFT owner, or an authorized\n  operator of the current owner.\n @param tokenId The NFT to approve\n @dev EVM selector for this function is: 0x42966c68,\n  or in textual repr: burn(uint256)"
+                                },
+                                "functionSelector": "42966c68",
+                                "id": 645,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "burn",
+                                "nameLocation": "16491:4:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 643,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 642,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "16504:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 645,
+                                            "src": "16496:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 641,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "16496:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "16495:17:2"
+                                },
+                                "returnParameters": {
+                                    "id": 644,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "16521:0:2"
+                                },
+                                "scope": 646,
+                                "src": "16482:40:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "16140:384:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "ERC721UniqueMintableEvents",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 647,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "16526:27:2",
+                            "text": "@dev inlined interface"
+                        },
+                        "fullyImplemented": true,
+                        "id": 650,
+                        "linearizedBaseContracts": [
+                            650
+                        ],
+                        "name": "ERC721UniqueMintableEvents",
+                        "nameLocation": "16563:26:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "anonymous": false,
+                                "eventSelector": "b828d9b5c78095deeeeff2eca2e5d4fe046ce3feb4c99702624a3fd384ad2dbc",
+                                "id": 649,
+                                "name": "MintingFinished",
+                                "nameLocation": "16599:15:2",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 648,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "16614:2:2"
+                                },
+                                "src": "16593:24:2"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "16553:66:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 652,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "16753:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "16753:5:2"
+                                },
+                                "id": 653,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16753:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 654,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "16760:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "16760:6:2"
+                                },
+                                "id": 655,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16760:6:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 656,
+                                    "name": "ERC721UniqueMintableEvents",
+                                    "nameLocations": [
+                                        "16768:26:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 650,
+                                    "src": "16768:26:2"
+                                },
+                                "id": 657,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16768:26:2"
+                            }
+                        ],
+                        "canonicalName": "ERC721UniqueMintable",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 651,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "16621:98:2",
+                            "text": "@title ERC721 minting logic.\n @dev the ERC-165 identifier for this interface is 0x476ff149"
+                        },
+                        "fullyImplemented": false,
+                        "id": 688,
+                        "linearizedBaseContracts": [
+                            688,
+                            650,
+                            301,
+                            291
+                        ],
+                        "name": "ERC721UniqueMintable",
+                        "nameLocation": "16729:20:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 658,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "16798:99:2",
+                                    "text": "@dev EVM selector for this function is: 0x05d2035b,\n  or in textual repr: mintingFinished()"
+                                },
+                                "functionSelector": "05d2035b",
+                                "id": 663,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "mintingFinished",
+                                "nameLocation": "16908:15:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 659,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "16923:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 662,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 661,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 663,
+                                            "src": "16949:4:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 660,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "16949:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "16948:6:2"
+                                },
+                                "scope": 688,
+                                "src": "16899:56:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 664,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "16958:215:2",
+                                    "text": "@notice Function to mint token.\n @param to The new owner\n @return uint256 The id of the newly minted token\n @dev EVM selector for this function is: 0x6a627842,\n  or in textual repr: mint(address)"
+                                },
+                                "functionSelector": "6a627842",
+                                "id": 671,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "mint",
+                                "nameLocation": "17184:4:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 667,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 666,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "17197:2:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 671,
+                                            "src": "17189:10:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 665,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "17189:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "17188:12:2"
+                                },
+                                "returnParameters": {
+                                    "id": 670,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 669,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 671,
+                                            "src": "17219:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 668,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "17219:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "17218:9:2"
+                                },
+                                "scope": 688,
+                                "src": "17175:53:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 672,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "17656:332:2",
+                                    "text": "@notice Function to mint token with the given tokenUri.\n @param to The new owner\n @param tokenUri Token URI that would be stored in the NFT properties\n @return uint256 The id of the newly minted token\n @dev EVM selector for this function is: 0x45c17782,\n  or in textual repr: mintWithTokenURI(address,string)"
+                                },
+                                "functionSelector": "45c17782",
+                                "id": 681,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "mintWithTokenURI",
+                                "nameLocation": "17999:16:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 677,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 674,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "18024:2:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 681,
+                                            "src": "18016:10:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 673,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "18016:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 676,
+                                            "mutability": "mutable",
+                                            "name": "tokenUri",
+                                            "nameLocation": "18042:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 681,
+                                            "src": "18028:22:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 675,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "18028:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "18015:36:2"
+                                },
+                                "returnParameters": {
+                                    "id": 680,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 679,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 681,
+                                            "src": "18070:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 678,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "18070:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "18069:9:2"
+                                },
+                                "scope": 688,
+                                "src": "17990:89:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 682,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "18663:123:2",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x7d64bcb4,\n  or in textual repr: finishMinting()"
+                                },
+                                "functionSelector": "7d64bcb4",
+                                "id": 687,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "finishMinting",
+                                "nameLocation": "18797:13:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 683,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "18810:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 686,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 685,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 687,
+                                            "src": "18831:4:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 684,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "18831:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "18830:6:2"
+                                },
+                                "scope": 688,
+                                "src": "18788:49:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "16719:2120:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 690,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "18983:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "18983:5:2"
+                                },
+                                "id": 691,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "18983:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 692,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "18990:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "18990:6:2"
+                                },
+                                "id": 693,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "18990:6:2"
+                            }
+                        ],
+                        "canonicalName": "ERC721UniqueExtensions",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 689,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "18841:106:2",
+                            "text": "@title Unique extensions for ERC721.\n @dev the ERC-165 identifier for this interface is 0x244543ee"
+                        },
+                        "fullyImplemented": false,
+                        "id": 758,
+                        "linearizedBaseContracts": [
+                            758,
+                            301,
+                            291
+                        ],
+                        "name": "ERC721UniqueExtensions",
+                        "nameLocation": "18957:22:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 694,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "19000:162:2",
+                                    "text": "@notice A descriptive name for a collection of NFTs in this contract\n @dev EVM selector for this function is: 0x06fdde03,\n  or in textual repr: name()"
+                                },
+                                "functionSelector": "06fdde03",
+                                "id": 699,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "name",
+                                "nameLocation": "19173:4:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 695,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "19177:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 698,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 697,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 699,
+                                            "src": "19203:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 696,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "19203:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "19202:15:2"
+                                },
+                                "scope": 758,
+                                "src": "19164:54:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 700,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "19221:149:2",
+                                    "text": "@notice An abbreviated name for NFTs in this contract\n @dev EVM selector for this function is: 0x95d89b41,\n  or in textual repr: symbol()"
+                                },
+                                "functionSelector": "95d89b41",
+                                "id": 705,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "symbol",
+                                "nameLocation": "19381:6:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 701,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "19387:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 704,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 703,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 705,
+                                            "src": "19413:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 702,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "19413:6:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "19412:15:2"
+                                },
+                                "scope": 758,
+                                "src": "19372:56:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 706,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "19431:476:2",
+                                    "text": "@notice Set or reaffirm the approved address for an NFT\n @dev The zero address indicates there is no approved address.\n @dev Throws unless `msg.sender` is the current NFT owner, or an authorized\n  operator of the current owner.\n @param approved The new substrate address approved NFT controller\n @param tokenId The NFT to approve\n @dev EVM selector for this function is: 0x0ecd0ab0,\n  or in textual repr: approveCross((address,uint256),uint256)"
+                                },
+                                "functionSelector": "0ecd0ab0",
+                                "id": 714,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "approveCross",
+                                "nameLocation": "19918:12:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 712,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 709,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "19954:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 714,
+                                            "src": "19931:31:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 708,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 707,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "19931:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "19931:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "19931:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 711,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "19972:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 714,
+                                            "src": "19964:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 710,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "19964:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "19930:50:2"
+                                },
+                                "returnParameters": {
+                                    "id": 713,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "19989:0:2"
+                                },
+                                "scope": 758,
+                                "src": "19909:81:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 715,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "19993:359:2",
+                                    "text": "@notice Transfer ownership of an NFT\n @dev Throws unless `msg.sender` is the current owner. Throws if `to`\n  is the zero address. Throws if `tokenId` is not a valid NFT.\n @param to The new owner\n @param tokenId The NFT to transfer\n @dev EVM selector for this function is: 0xa9059cbb,\n  or in textual repr: transfer(address,uint256)"
+                                },
+                                "functionSelector": "a9059cbb",
+                                "id": 722,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "transfer",
+                                "nameLocation": "20363:8:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 720,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 717,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "20380:2:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 722,
+                                            "src": "20372:10:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 716,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "20372:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 719,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "20392:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 722,
+                                            "src": "20384:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 718,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "20384:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "20371:29:2"
+                                },
+                                "returnParameters": {
+                                    "id": 721,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "20409:0:2"
+                                },
+                                "scope": 758,
+                                "src": "20354:56:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 723,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "20413:527:2",
+                                    "text": "@notice Transfer ownership of an NFT from cross account address to cross account address\n @dev Throws unless `msg.sender` is the current owner. Throws if `to`\n  is the zero address. Throws if `tokenId` is not a valid NFT.\n @param from Cross acccount address of current owner\n @param to Cross acccount address of new owner\n @param tokenId The NFT to transfer\n @dev EVM selector for this function is: 0xd5cf430b,\n  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)"
+                                },
+                                "functionSelector": "d5cf430b",
+                                "id": 734,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "transferFromCross",
+                                "nameLocation": "20951:17:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 732,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 726,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "20995:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 734,
+                                            "src": "20972:27:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 725,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 724,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "20972:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "20972:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "20972:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 729,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "21026:2:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 734,
+                                            "src": "21003:25:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 728,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 727,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "21003:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "21003:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "21003:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 731,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "21040:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 734,
+                                            "src": "21032:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 730,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "21032:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "20968:82:2"
+                                },
+                                "returnParameters": {
+                                    "id": 733,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "21059:0:2"
+                                },
+                                "scope": 758,
+                                "src": "20942:118:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 735,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "21063:466:2",
+                                    "text": "@notice Burns a specific ERC721 token.\n @dev Throws unless `msg.sender` is the current owner or an authorized\n  operator for this NFT. Throws if `from` is not the current owner. Throws\n  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.\n @param from The current owner of the NFT\n @param tokenId The NFT to transfer\n @dev EVM selector for this function is: 0x79cc6790,\n  or in textual repr: burnFrom(address,uint256)"
+                                },
+                                "functionSelector": "79cc6790",
+                                "id": 742,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "burnFrom",
+                                "nameLocation": "21540:8:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 740,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 737,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "21557:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 742,
+                                            "src": "21549:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 736,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "21549:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 739,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "21571:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 742,
+                                            "src": "21563:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 738,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "21563:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "21548:31:2"
+                                },
+                                "returnParameters": {
+                                    "id": 741,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "21588:0:2"
+                                },
+                                "scope": 758,
+                                "src": "21531:58:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 743,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "21592:481:2",
+                                    "text": "@notice Burns a specific ERC721 token.\n @dev Throws unless `msg.sender` is the current owner or an authorized\n  operator for this NFT. Throws if `from` is not the current owner. Throws\n  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.\n @param from The current owner of the NFT\n @param tokenId The NFT to transfer\n @dev EVM selector for this function is: 0xbb2f5a58,\n  or in textual repr: burnFromCross((address,uint256),uint256)"
+                                },
+                                "functionSelector": "bb2f5a58",
+                                "id": 751,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "burnFromCross",
+                                "nameLocation": "22084:13:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 749,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 746,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "22121:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 751,
+                                            "src": "22098:27:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 745,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 744,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "22098:15:2"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 610,
+                                                    "src": "22098:15:2"
+                                                },
+                                                "referencedDeclaration": 610,
+                                                "src": "22098:15:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$610_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 748,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "22135:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 751,
+                                            "src": "22127:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 747,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "22127:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "22097:46:2"
+                                },
+                                "returnParameters": {
+                                    "id": 750,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "22152:0:2"
+                                },
+                                "scope": 758,
+                                "src": "22075:78:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 752,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "22156:134:2",
+                                    "text": "@notice Returns next free NFT ID.\n @dev EVM selector for this function is: 0x75794a3c,\n  or in textual repr: nextTokenId()"
+                                },
+                                "functionSelector": "75794a3c",
+                                "id": 757,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "nextTokenId",
+                                "nameLocation": "22301:11:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 753,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "22312:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 756,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 755,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 757,
+                                            "src": "22338:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 754,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "22338:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "22337:9:2"
+                                },
+                                "scope": 758,
+                                "src": "22292:55:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "18947:4475:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "canonicalName": "Tuple10",
+                        "id": 763,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 760,
+                                "mutability": "mutable",
+                                "name": "field_0",
+                                "nameLocation": "23476:7:2",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 763,
+                                "src": "23468:15:2",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_uint256",
+                                    "typeString": "uint256"
+                                },
+                                "typeName": {
+                                    "id": 759,
+                                    "name": "uint256",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "23468:7:2",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 762,
+                                "mutability": "mutable",
+                                "name": "field_1",
+                                "nameLocation": "23493:7:2",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 763,
+                                "src": "23486:14:2",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_string_storage_ptr",
+                                    "typeString": "string"
+                                },
+                                "typeName": {
+                                    "id": 761,
+                                    "name": "string",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "23486:6:2",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_string_storage_ptr",
+                                        "typeString": "string"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "Tuple10",
+                        "nameLocation": "23457:7:2",
+                        "nodeType": "StructDefinition",
+                        "scope": 931,
+                        "src": "23450:53:2",
+                        "visibility": "public"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 765,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "23731:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "23731:5:2"
+                                },
+                                "id": 766,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "23731:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 767,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "23738:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "23738:6:2"
+                                },
+                                "id": 768,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "23738:6:2"
+                            }
+                        ],
+                        "canonicalName": "ERC721Enumerable",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 764,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "23505:196:2",
+                            "text": "@title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev the ERC-165 identifier for this interface is 0x780e9d63"
+                        },
+                        "fullyImplemented": false,
+                        "id": 793,
+                        "linearizedBaseContracts": [
+                            793,
+                            301,
+                            291
+                        ],
+                        "name": "ERC721Enumerable",
+                        "nameLocation": "23711:16:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 769,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "23748:281:2",
+                                    "text": "@notice Enumerate valid NFTs\n @param index A counter less than `totalSupply()`\n @return The token identifier for the `index`th NFT,\n  (sort order not specified)\n @dev EVM selector for this function is: 0x4f6ccce7,\n  or in textual repr: tokenByIndex(uint256)"
+                                },
+                                "functionSelector": "4f6ccce7",
+                                "id": 776,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "tokenByIndex",
+                                "nameLocation": "24040:12:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 772,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 771,
+                                            "mutability": "mutable",
+                                            "name": "index",
+                                            "nameLocation": "24061:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 776,
+                                            "src": "24053:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 770,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24053:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24052:15:2"
+                                },
+                                "returnParameters": {
+                                    "id": 775,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 774,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 776,
+                                            "src": "24091:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 773,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24091:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24090:9:2"
+                                },
+                                "scope": 793,
+                                "src": "24031:69:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 777,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "24103:144:2",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x2f745c59,\n  or in textual repr: tokenOfOwnerByIndex(address,uint256)"
+                                },
+                                "functionSelector": "2f745c59",
+                                "id": 786,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "tokenOfOwnerByIndex",
+                                "nameLocation": "24258:19:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 782,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 779,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "24286:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 786,
+                                            "src": "24278:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 778,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24278:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 781,
+                                            "mutability": "mutable",
+                                            "name": "index",
+                                            "nameLocation": "24301:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 786,
+                                            "src": "24293:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 780,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24293:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24277:30:2"
+                                },
+                                "returnParameters": {
+                                    "id": 785,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 784,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 786,
+                                            "src": "24331:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 783,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24331:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24330:9:2"
+                                },
+                                "scope": 793,
+                                "src": "24249:91:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 787,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "24343:300:2",
+                                    "text": "@notice Count NFTs tracked by this contract\n @return A count of valid NFTs tracked by this contract, where each one of\n  them has an assigned and queryable owner not equal to the zero address\n @dev EVM selector for this function is: 0x18160ddd,\n  or in textual repr: totalSupply()"
+                                },
+                                "functionSelector": "18160ddd",
+                                "id": 792,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "totalSupply",
+                                "nameLocation": "24654:11:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 788,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "24665:2:2"
+                                },
+                                "returnParameters": {
+                                    "id": 791,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 790,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 792,
+                                            "src": "24691:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 789,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24691:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24690:9:2"
+                                },
+                                "scope": 793,
+                                "src": "24645:55:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "23701:1001:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "ERC721Events",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 794,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "24704:27:2",
+                            "text": "@dev inlined interface"
+                        },
+                        "fullyImplemented": true,
+                        "id": 819,
+                        "linearizedBaseContracts": [
+                            819
+                        ],
+                        "name": "ERC721Events",
+                        "nameLocation": "24741:12:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "anonymous": false,
+                                "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
+                                "id": 802,
+                                "name": "Transfer",
+                                "nameLocation": "24763:8:2",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 801,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 796,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "24788:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 802,
+                                            "src": "24772:20:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 795,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24772:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 798,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "24810:2:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 802,
+                                            "src": "24794:18:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 797,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24794:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 800,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "24830:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 802,
+                                            "src": "24814:23:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 799,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24814:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24771:67:2"
+                                },
+                                "src": "24757:82:2"
+                            },
+                            {
+                                "anonymous": false,
+                                "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
+                                "id": 810,
+                                "name": "Approval",
+                                "nameLocation": "24847:8:2",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 809,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 804,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "24872:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 810,
+                                            "src": "24856:21:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 803,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24856:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 806,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "24895:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 810,
+                                            "src": "24879:24:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 805,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24879:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 808,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "24921:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 810,
+                                            "src": "24905:23:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 807,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24905:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24855:74:2"
+                                },
+                                "src": "24841:89:2"
+                            },
+                            {
+                                "anonymous": false,
+                                "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
+                                "id": 818,
+                                "name": "ApprovalForAll",
+                                "nameLocation": "24938:14:2",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 817,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 812,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "24969:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 818,
+                                            "src": "24953:21:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 811,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24953:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 814,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "operator",
+                                            "nameLocation": "24992:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 818,
+                                            "src": "24976:24:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 813,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24976:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 816,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "25007:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 818,
+                                            "src": "25002:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 815,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "25002:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24952:64:2"
+                                },
+                                "src": "24932:85:2"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "24731:288:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 821,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "25227:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "25227:5:2"
+                                },
+                                "id": 822,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "25227:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 823,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "25234:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "25234:6:2"
+                                },
+                                "id": 824,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "25234:6:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 825,
+                                    "name": "ERC721Events",
+                                    "nameLocations": [
+                                        "25242:12:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 819,
+                                    "src": "25242:12:2"
+                                },
+                                "id": 826,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "25242:12:2"
+                            }
+                        ],
+                        "canonicalName": "ERC721",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 820,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "25021:186:2",
+                            "text": "@title ERC-721 Non-Fungible Token Standard\n @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n @dev the ERC-165 identifier for this interface is 0x80ac58cd"
+                        },
+                        "fullyImplemented": false,
+                        "id": 909,
+                        "linearizedBaseContracts": [
+                            909,
+                            819,
+                            301,
+                            291
+                        ],
+                        "name": "ERC721",
+                        "nameLocation": "25217:6:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 827,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "25258:407:2",
+                                    "text": "@notice Count all NFTs assigned to an owner\n @dev NFTs assigned to the zero address are considered invalid, and this\n  function throws for queries about the zero address.\n @param owner An address for whom to query the balance\n @return The number of NFTs owned by `owner`, possibly zero\n @dev EVM selector for this function is: 0x70a08231,\n  or in textual repr: balanceOf(address)"
+                                },
+                                "functionSelector": "70a08231",
+                                "id": 834,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "balanceOf",
+                                "nameLocation": "25676:9:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 830,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 829,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "25694:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 834,
+                                            "src": "25686:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 828,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "25686:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "25685:15:2"
+                                },
+                                "returnParameters": {
+                                    "id": 833,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 832,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 834,
+                                            "src": "25724:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 831,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "25724:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "25723:9:2"
+                                },
+                                "scope": 909,
+                                "src": "25667:66:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 835,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "25736:334:2",
+                                    "text": "@notice Find the owner of an NFT\n @dev NFTs assigned to zero address are considered invalid, and queries\n  about them do throw.\n @param tokenId The identifier for an NFT\n @return The address of the owner of the NFT\n @dev EVM selector for this function is: 0x6352211e,\n  or in textual repr: ownerOf(uint256)"
+                                },
+                                "functionSelector": "6352211e",
+                                "id": 842,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "ownerOf",
+                                "nameLocation": "26081:7:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 838,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 837,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "26097:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 842,
+                                            "src": "26089:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 836,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26089:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "26088:17:2"
+                                },
+                                "returnParameters": {
+                                    "id": 841,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 840,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 842,
+                                            "src": "26129:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 839,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26129:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "26128:9:2"
+                                },
+                                "scope": 909,
+                                "src": "26072:66:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 843,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "26141:155:2",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0xb88d4fde,\n  or in textual repr: safeTransferFrom(address,address,uint256,bytes)"
+                                },
+                                "functionSelector": "b88d4fde",
+                                "id": 854,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "safeTransferFrom",
+                                "nameLocation": "26307:16:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 852,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 845,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "26335:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 854,
+                                            "src": "26327:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 844,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26327:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 847,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "26351:2:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 854,
+                                            "src": "26343:10:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 846,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26343:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 849,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "26365:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 854,
+                                            "src": "26357:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 848,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26357:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 851,
+                                            "mutability": "mutable",
+                                            "name": "data",
+                                            "nameLocation": "26389:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 854,
+                                            "src": "26376:17:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 850,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26376:5:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "26323:73:2"
+                                },
+                                "returnParameters": {
+                                    "id": 853,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "26405:0:2"
+                                },
+                                "scope": 909,
+                                "src": "26298:108:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 855,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "26409:149:2",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x42842e0e,\n  or in textual repr: safeTransferFrom(address,address,uint256)"
+                                },
+                                "functionSelector": "42842e0e",
+                                "id": 864,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "safeTransferFrom",
+                                "nameLocation": "26569:16:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 862,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 857,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "26597:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 864,
+                                            "src": "26589:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 856,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26589:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 859,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "26613:2:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 864,
+                                            "src": "26605:10:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 858,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26605:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 861,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "26627:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 864,
+                                            "src": "26619:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 860,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26619:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "26585:52:2"
+                                },
+                                "returnParameters": {
+                                    "id": 863,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "26646:0:2"
+                                },
+                                "scope": 909,
+                                "src": "26560:87:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 865,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "26650:633:2",
+                                    "text": "@notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE\n  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE\n  THEY MAY BE PERMANENTLY LOST\n @dev Throws unless `msg.sender` is the current owner or an authorized\n  operator for this NFT. Throws if `from` is not the current owner. Throws\n  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.\n @param from The current owner of the NFT\n @param to The new owner\n @param tokenId The NFT to transfer\n @dev EVM selector for this function is: 0x23b872dd,\n  or in textual repr: transferFrom(address,address,uint256)"
+                                },
+                                "functionSelector": "23b872dd",
+                                "id": 874,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "transferFrom",
+                                "nameLocation": "27294:12:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 872,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 867,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "27318:4:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 874,
+                                            "src": "27310:12:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 866,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27310:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 869,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "27334:2:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 874,
+                                            "src": "27326:10:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 868,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27326:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 871,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "27348:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 874,
+                                            "src": "27340:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 870,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27340:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "27306:52:2"
+                                },
+                                "returnParameters": {
+                                    "id": 873,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "27367:0:2"
+                                },
+                                "scope": 909,
+                                "src": "27285:83:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 875,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "27371:443:2",
+                                    "text": "@notice Set or reaffirm the approved address for an NFT\n @dev The zero address indicates there is no approved address.\n @dev Throws unless `msg.sender` is the current NFT owner, or an authorized\n  operator of the current owner.\n @param approved The new approved NFT controller\n @param tokenId The NFT to approve\n @dev EVM selector for this function is: 0x095ea7b3,\n  or in textual repr: approve(address,uint256)"
+                                },
+                                "functionSelector": "095ea7b3",
+                                "id": 882,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "approve",
+                                "nameLocation": "27825:7:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 880,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 877,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "27841:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 882,
+                                            "src": "27833:16:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 876,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27833:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 879,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "27859:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 882,
+                                            "src": "27851:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 878,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27851:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "27832:35:2"
+                                },
+                                "returnParameters": {
+                                    "id": 881,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "27876:0:2"
+                                },
+                                "scope": 909,
+                                "src": "27816:61:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 883,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "27880:139:2",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0xa22cb465,\n  or in textual repr: setApprovalForAll(address,bool)"
+                                },
+                                "functionSelector": "a22cb465",
+                                "id": 890,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setApprovalForAll",
+                                "nameLocation": "28030:17:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 888,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 885,
+                                            "mutability": "mutable",
+                                            "name": "operator",
+                                            "nameLocation": "28056:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 890,
+                                            "src": "28048:16:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 884,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28048:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 887,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "28071:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 890,
+                                            "src": "28066:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 886,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28066:4:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "28047:33:2"
+                                },
+                                "returnParameters": {
+                                    "id": 889,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "28089:0:2"
+                                },
+                                "scope": 909,
+                                "src": "28021:69:2",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 891,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "28093:128:2",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x081812fc,\n  or in textual repr: getApproved(uint256)"
+                                },
+                                "functionSelector": "081812fc",
+                                "id": 898,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "getApproved",
+                                "nameLocation": "28232:11:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 894,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 893,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "28252:7:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 898,
+                                            "src": "28244:15:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 892,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28244:7:2",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "28243:17:2"
+                                },
+                                "returnParameters": {
+                                    "id": 897,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 896,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 898,
+                                            "src": "28284:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 895,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28284:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "28283:9:2"
+                                },
+                                "scope": 909,
+                                "src": "28223:70:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 899,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "28296:141:2",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0xe985e9c5,\n  or in textual repr: isApprovedForAll(address,address)"
+                                },
+                                "functionSelector": "e985e9c5",
+                                "id": 908,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "isApprovedForAll",
+                                "nameLocation": "28448:16:2",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 904,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 901,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "28473:5:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 908,
+                                            "src": "28465:13:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 900,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28465:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 903,
+                                            "mutability": "mutable",
+                                            "name": "operator",
+                                            "nameLocation": "28488:8:2",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 908,
+                                            "src": "28480:16:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 902,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28480:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "28464:33:2"
+                                },
+                                "returnParameters": {
+                                    "id": 907,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 906,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 908,
+                                            "src": "28521:7:2",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 905,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28521:7:2",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "28520:9:2"
+                                },
+                                "scope": 909,
+                                "src": "28439:91:2",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 931,
+                        "src": "25207:3325:2",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 910,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "28558:5:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 291,
+                                    "src": "28558:5:2"
+                                },
+                                "id": 911,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28558:5:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 912,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "28566:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 301,
+                                    "src": "28566:6:2"
+                                },
+                                "id": 913,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28566:6:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 914,
+                                    "name": "ERC721",
+                                    "nameLocations": [
+                                        "28575:6:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 909,
+                                    "src": "28575:6:2"
+                                },
+                                "id": 915,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28575:6:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 916,
+                                    "name": "ERC721Enumerable",
+                                    "nameLocations": [
+                                        "28584:16:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 793,
+                                    "src": "28584:16:2"
+                                },
+                                "id": 917,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28584:16:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 918,
+                                    "name": "ERC721UniqueExtensions",
+                                    "nameLocations": [
+                                        "28603:22:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 758,
+                                    "src": "28603:22:2"
+                                },
+                                "id": 919,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28603:22:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 920,
+                                    "name": "ERC721UniqueMintable",
+                                    "nameLocations": [
+                                        "28628:20:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 688,
+                                    "src": "28628:20:2"
+                                },
+                                "id": 921,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28628:20:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 922,
+                                    "name": "ERC721Burnable",
+                                    "nameLocations": [
+                                        "28651:14:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 646,
+                                    "src": "28651:14:2"
+                                },
+                                "id": 923,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28651:14:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 924,
+                                    "name": "ERC721Metadata",
+                                    "nameLocations": [
+                                        "28668:14:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 634,
+                                    "src": "28668:14:2"
+                                },
+                                "id": 925,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28668:14:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 926,
+                                    "name": "Collection",
+                                    "nameLocations": [
+                                        "28685:10:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 605,
+                                    "src": "28685:10:2"
+                                },
+                                "id": 927,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28685:10:2"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 928,
+                                    "name": "TokenProperties",
+                                    "nameLocations": [
+                                        "28698:15:2"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 357,
+                                    "src": "28698:15:2"
+                                },
+                                "id": 929,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28698:15:2"
+                            }
+                        ],
+                        "canonicalName": "UniqueNFT",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "fullyImplemented": false,
+                        "id": 930,
+                        "linearizedBaseContracts": [
+                            930,
+                            357,
+                            605,
+                            634,
+                            646,
+                            688,
+                            650,
+                            758,
+                            793,
+                            909,
+                            819,
+                            301,
+                            291
+                        ],
+                        "name": "UniqueNFT",
+                        "nameLocation": "28544:9:2",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [],
+                        "scope": 931,
+                        "src": "28534:182:2",
+                        "usedErrors": []
+                    }
+                ],
+                "src": "75:28642:2"
+            },
+            "id": 2
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol": {
+            "ast": {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol",
+                "exportedSymbols": {
+                    "Collection": [
+                        1248
+                    ],
+                    "Dummy": [
+                        934
+                    ],
+                    "ERC165": [
+                        944
+                    ],
+                    "ERC721": [
+                        1551
+                    ],
+                    "ERC721Burnable": [
+                        1289
+                    ],
+                    "ERC721Enumerable": [
+                        1435
+                    ],
+                    "ERC721Events": [
+                        1461
+                    ],
+                    "ERC721Metadata": [
+                        1277
+                    ],
+                    "ERC721UniqueExtensions": [
+                        1400
+                    ],
+                    "ERC721UniqueMintable": [
+                        1331
+                    ],
+                    "ERC721UniqueMintableEvents": [
+                        1293
+                    ],
+                    "EthCrossAccount": [
+                        1253
+                    ],
+                    "TokenProperties": [
+                        1000
+                    ],
+                    "Tuple20": [
+                        1263
+                    ],
+                    "Tuple23": [
+                        1258
+                    ],
+                    "Tuple9": [
+                        1405
+                    ],
+                    "UniqueRefungible": [
+                        1572
+                    ]
+                },
+                "id": 1573,
+                "license": "OTHER",
+                "nodeType": "SourceUnit",
+                "nodes": [
+                    {
+                        "id": 932,
+                        "literals": [
+                            "solidity",
+                            ">=",
+                            "0.8",
+                            ".0",
+                            "<",
+                            "0.9",
+                            ".0"
+                        ],
+                        "nodeType": "PragmaDirective",
+                        "src": "75:31:3"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "Dummy",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 933,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "108:29:3",
+                            "text": "@dev common stubs holder"
+                        },
+                        "fullyImplemented": true,
+                        "id": 934,
+                        "linearizedBaseContracts": [
+                            934
+                        ],
+                        "name": "Dummy",
+                        "nameLocation": "147:5:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [],
+                        "scope": 1573,
+                        "src": "137:20:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 935,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "179:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "179:5:3"
+                                },
+                                "id": 936,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "179:5:3"
+                            }
+                        ],
+                        "canonicalName": "ERC165",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "fullyImplemented": false,
+                        "id": 944,
+                        "linearizedBaseContracts": [
+                            944,
+                            934
+                        ],
+                        "name": "ERC165",
+                        "nameLocation": "169:6:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "functionSelector": "01ffc9a7",
+                                "id": 943,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "supportsInterface",
+                                "nameLocation": "197:17:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 939,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 938,
+                                            "mutability": "mutable",
+                                            "name": "interfaceID",
+                                            "nameLocation": "222:11:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 943,
+                                            "src": "215:18:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes4",
+                                                "typeString": "bytes4"
+                                            },
+                                            "typeName": {
+                                                "id": 937,
+                                                "name": "bytes4",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "215:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes4",
+                                                    "typeString": "bytes4"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "214:20:3"
+                                },
+                                "returnParameters": {
+                                    "id": 942,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 941,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 943,
+                                            "src": "258:4:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 940,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "258:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "257:6:3"
+                                },
+                                "scope": 944,
+                                "src": "188:76:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "159:107:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 946,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "470:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "470:5:3"
+                                },
+                                "id": 947,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "470:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 948,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "477:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "477:6:3"
+                                },
+                                "id": 949,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "477:6:3"
+                            }
+                        ],
+                        "canonicalName": "TokenProperties",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 945,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "268:173:3",
+                            "text": "@title A contract that allows to set and delete token properties and change token property permissions.\n @dev the ERC-165 identifier for this interface is 0x55dba919"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1000,
+                        "linearizedBaseContracts": [
+                            1000,
+                            944,
+                            934
+                        ],
+                        "name": "TokenProperties",
+                        "nameLocation": "451:15:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 950,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "487:537:3",
+                                    "text": "@notice Set permissions for token property.\n @dev Throws error if `msg.sender` is not admin or owner of the collection.\n @param key Property key.\n @param isMutable Permission to mutate property.\n @param collectionAdmin Permission to mutate property by collection admin if property is mutable.\n @param tokenOwner Permission to mutate property by token owner if property is mutable.\n @dev EVM selector for this function is: 0x222d97fa,\n  or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)"
+                                },
+                                "functionSelector": "222d97fa",
+                                "id": 961,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setTokenPropertyPermission",
+                                "nameLocation": "1035:26:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 959,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 952,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "1079:3:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 961,
+                                            "src": "1065:17:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 951,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1065:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 954,
+                                            "mutability": "mutable",
+                                            "name": "isMutable",
+                                            "nameLocation": "1091:9:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 961,
+                                            "src": "1086:14:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 953,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1086:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 956,
+                                            "mutability": "mutable",
+                                            "name": "collectionAdmin",
+                                            "nameLocation": "1109:15:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 961,
+                                            "src": "1104:20:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 955,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1104:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 958,
+                                            "mutability": "mutable",
+                                            "name": "tokenOwner",
+                                            "nameLocation": "1133:10:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 961,
+                                            "src": "1128:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 957,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1128:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1061:85:3"
+                                },
+                                "returnParameters": {
+                                    "id": 960,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "1155:0:3"
+                                },
+                                "scope": 1000,
+                                "src": "1026:130:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 962,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1159:334:3",
+                                    "text": "@notice Set token property value.\n @dev Throws error if `msg.sender` has no permission to edit the property.\n @param tokenId ID of the token.\n @param key Property key.\n @param value Property value.\n @dev EVM selector for this function is: 0x1752d67b,\n  or in textual repr: setProperty(uint256,string,bytes)"
+                                },
+                                "functionSelector": "1752d67b",
+                                "id": 971,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setProperty",
+                                "nameLocation": "1504:11:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 969,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 964,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "1527:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 971,
+                                            "src": "1519:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 963,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1519:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 966,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "1552:3:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 971,
+                                            "src": "1538:17:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 965,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1538:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 968,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "1572:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 971,
+                                            "src": "1559:18:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 967,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1559:5:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1515:65:3"
+                                },
+                                "returnParameters": {
+                                    "id": 970,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "1589:0:3"
+                                },
+                                "scope": 1000,
+                                "src": "1495:95:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 972,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1593:321:3",
+                                    "text": "@notice Set token properties value.\n @dev Throws error if `msg.sender` has no permission to edit the property.\n @param tokenId ID of the token.\n @param properties settable properties\n @dev EVM selector for this function is: 0x14ed3a6e,\n  or in textual repr: setProperties(uint256,(string,bytes)[])"
+                                },
+                                "functionSelector": "14ed3a6e",
+                                "id": 981,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setProperties",
+                                "nameLocation": "1925:13:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 979,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 974,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "1947:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 981,
+                                            "src": "1939:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 973,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1939:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 978,
+                                            "mutability": "mutable",
+                                            "name": "properties",
+                                            "nameLocation": "1973:10:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 981,
+                                            "src": "1956:27:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Tuple20_$1263_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "struct Tuple20[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 976,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 975,
+                                                        "name": "Tuple20",
+                                                        "nameLocations": [
+                                                            "1956:7:3"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 1263,
+                                                        "src": "1956:7:3"
+                                                    },
+                                                    "referencedDeclaration": 1263,
+                                                    "src": "1956:7:3",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_Tuple20_$1263_storage_ptr",
+                                                        "typeString": "struct Tuple20"
+                                                    }
+                                                },
+                                                "id": 977,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "1956:9:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_Tuple20_$1263_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct Tuple20[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1938:46:3"
+                                },
+                                "returnParameters": {
+                                    "id": 980,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "1993:0:3"
+                                },
+                                "scope": 1000,
+                                "src": "1916:78:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 982,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1997:300:3",
+                                    "text": "@notice Delete token property value.\n @dev Throws error if `msg.sender` has no permission to edit the property.\n @param tokenId ID of the token.\n @param key Property key.\n @dev EVM selector for this function is: 0x066111d1,\n  or in textual repr: deleteProperty(uint256,string)"
+                                },
+                                "functionSelector": "066111d1",
+                                "id": 989,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "deleteProperty",
+                                "nameLocation": "2308:14:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 987,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 984,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "2331:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 989,
+                                            "src": "2323:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 983,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2323:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 986,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "2354:3:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 989,
+                                            "src": "2340:17:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 985,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2340:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2322:36:3"
+                                },
+                                "returnParameters": {
+                                    "id": 988,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2367:0:3"
+                                },
+                                "scope": 1000,
+                                "src": "2299:69:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 990,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2371:286:3",
+                                    "text": "@notice Get token property value.\n @dev Throws error if key not found\n @param tokenId ID of the token.\n @param key Property key.\n @return Property value bytes\n @dev EVM selector for this function is: 0x7228c327,\n  or in textual repr: property(uint256,string)"
+                                },
+                                "functionSelector": "7228c327",
+                                "id": 999,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "property",
+                                "nameLocation": "2668:8:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 995,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 992,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "2685:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 999,
+                                            "src": "2677:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 991,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2677:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 994,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "2708:3:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 999,
+                                            "src": "2694:17:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 993,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2694:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2676:36:3"
+                                },
+                                "returnParameters": {
+                                    "id": 998,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 997,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 999,
+                                            "src": "2736:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 996,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2736:5:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2735:14:3"
+                                },
+                                "scope": 1000,
+                                "src": "2659:91:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "441:2311:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1002,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "2907:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "2907:5:3"
+                                },
+                                "id": 1003,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "2907:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1004,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "2914:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "2914:6:3"
+                                },
+                                "id": 1005,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "2914:6:3"
+                            }
+                        ],
+                        "canonicalName": "Collection",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1001,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "2754:129:3",
+                            "text": "@title A contract that allows you to work with collections.\n @dev the ERC-165 identifier for this interface is 0xb3152af3"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1248,
+                        "linearizedBaseContracts": [
+                            1248,
+                            944,
+                            934
+                        ],
+                        "name": "Collection",
+                        "nameLocation": "2893:10:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1006,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2924:215:3",
+                                    "text": "Set collection property.\n @param key Property key.\n @param value Propery value.\n @dev EVM selector for this function is: 0x2f073f66,\n  or in textual repr: setCollectionProperty(string,bytes)"
+                                },
+                                "functionSelector": "2f073f66",
+                                "id": 1013,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionProperty",
+                                "nameLocation": "3150:21:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1011,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1008,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "3186:3:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1013,
+                                            "src": "3172:17:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1007,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3172:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1010,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "3204:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1013,
+                                            "src": "3191:18:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 1009,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3191:5:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3171:39:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1012,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "3219:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "3141:79:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1014,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3223:220:3",
+                                    "text": "Set collection properties.\n @param properties Vector of properties key/value pair.\n @dev EVM selector for this function is: 0x50b26b2a,\n  or in textual repr: setCollectionProperties((string,bytes)[])"
+                                },
+                                "functionSelector": "50b26b2a",
+                                "id": 1021,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionProperties",
+                                "nameLocation": "3454:23:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1019,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1018,
+                                            "mutability": "mutable",
+                                            "name": "properties",
+                                            "nameLocation": "3495:10:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1021,
+                                            "src": "3478:27:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Tuple20_$1263_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "struct Tuple20[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 1016,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 1015,
+                                                        "name": "Tuple20",
+                                                        "nameLocations": [
+                                                            "3478:7:3"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 1263,
+                                                        "src": "3478:7:3"
+                                                    },
+                                                    "referencedDeclaration": 1263,
+                                                    "src": "3478:7:3",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_Tuple20_$1263_storage_ptr",
+                                                        "typeString": "struct Tuple20"
+                                                    }
+                                                },
+                                                "id": 1017,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "3478:9:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_Tuple20_$1263_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct Tuple20[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3477:29:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1020,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "3515:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "3445:71:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1022,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3519:182:3",
+                                    "text": "Delete collection property.\n @param key Property key.\n @dev EVM selector for this function is: 0x7b7debce,\n  or in textual repr: deleteCollectionProperty(string)"
+                                },
+                                "functionSelector": "7b7debce",
+                                "id": 1027,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "deleteCollectionProperty",
+                                "nameLocation": "3712:24:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1025,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1024,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "3751:3:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1027,
+                                            "src": "3737:17:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1023,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3737:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3736:19:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1026,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "3764:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "3703:62:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1028,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3768:192:3",
+                                    "text": "Delete collection properties.\n @param keys Properties keys.\n @dev EVM selector for this function is: 0xee206ee3,\n  or in textual repr: deleteCollectionProperties(string[])"
+                                },
+                                "functionSelector": "ee206ee3",
+                                "id": 1034,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "deleteCollectionProperties",
+                                "nameLocation": "3971:26:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1032,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1031,
+                                            "mutability": "mutable",
+                                            "name": "keys",
+                                            "nameLocation": "4014:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1034,
+                                            "src": "3998:20:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "string[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 1029,
+                                                    "name": "string",
+                                                    "nodeType": "ElementaryTypeName",
+                                                    "src": "3998:6:3",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_string_storage_ptr",
+                                                        "typeString": "string"
+                                                    }
+                                                },
+                                                "id": 1030,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "3998:8:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
+                                                    "typeString": "string[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3997:22:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1033,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "4028:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "3962:67:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1035,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4032:277:3",
+                                    "text": "Get collection property.\n @dev Throws error if key not found.\n @param key Property key.\n @return bytes The property corresponding to the key.\n @dev EVM selector for this function is: 0xcf24fd6d,\n  or in textual repr: collectionProperty(string)"
+                                },
+                                "functionSelector": "cf24fd6d",
+                                "id": 1042,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionProperty",
+                                "nameLocation": "4320:18:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1038,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1037,
+                                            "mutability": "mutable",
+                                            "name": "key",
+                                            "nameLocation": "4353:3:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1042,
+                                            "src": "4339:17:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1036,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4339:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4338:19:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1041,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1040,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1042,
+                                            "src": "4381:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 1039,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4381:5:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4380:14:3"
+                                },
+                                "scope": 1248,
+                                "src": "4311:84:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1043,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4398:265:3",
+                                    "text": "Get collection properties.\n @param keys Properties keys. Empty keys for all propertyes.\n @return Vector of properties key/value pairs.\n @dev EVM selector for this function is: 0x285fb8e6,\n  or in textual repr: collectionProperties(string[])"
+                                },
+                                "functionSelector": "285fb8e6",
+                                "id": 1053,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionProperties",
+                                "nameLocation": "4674:20:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1047,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1046,
+                                            "mutability": "mutable",
+                                            "name": "keys",
+                                            "nameLocation": "4711:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1053,
+                                            "src": "4695:20:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "string[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 1044,
+                                                    "name": "string",
+                                                    "nodeType": "ElementaryTypeName",
+                                                    "src": "4695:6:3",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_string_storage_ptr",
+                                                        "typeString": "string"
+                                                    }
+                                                },
+                                                "id": 1045,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "4695:8:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
+                                                    "typeString": "string[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4694:22:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1052,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1051,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1053,
+                                            "src": "4740:16:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Tuple20_$1263_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "struct Tuple20[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 1049,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 1048,
+                                                        "name": "Tuple20",
+                                                        "nameLocations": [
+                                                            "4740:7:3"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 1263,
+                                                        "src": "4740:7:3"
+                                                    },
+                                                    "referencedDeclaration": 1263,
+                                                    "src": "4740:7:3",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_Tuple20_$1263_storage_ptr",
+                                                        "typeString": "struct Tuple20"
+                                                    }
+                                                },
+                                                "id": 1050,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "4740:9:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_Tuple20_$1263_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct Tuple20[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4739:18:3"
+                                },
+                                "scope": 1248,
+                                "src": "4665:93:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1054,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4761:370:3",
+                                    "text": "Set the sponsor of the collection.\n @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.\n @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.\n @dev EVM selector for this function is: 0x7623402e,\n  or in textual repr: setCollectionSponsor(address)"
+                                },
+                                "functionSelector": "7623402e",
+                                "id": 1059,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionSponsor",
+                                "nameLocation": "5142:20:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1057,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1056,
+                                            "mutability": "mutable",
+                                            "name": "sponsor",
+                                            "nameLocation": "5171:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1059,
+                                            "src": "5163:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1055,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5163:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5162:17:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1058,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5188:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "5133:56:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1060,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "5192:399:3",
+                                    "text": "Set the sponsor of the collection.\n @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.\n @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.\n @dev EVM selector for this function is: 0x84a1d5a8,\n  or in textual repr: setCollectionSponsorCross((address,uint256))"
+                                },
+                                "functionSelector": "84a1d5a8",
+                                "id": 1066,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionSponsorCross",
+                                "nameLocation": "5602:25:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1064,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1063,
+                                            "mutability": "mutable",
+                                            "name": "sponsor",
+                                            "nameLocation": "5651:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1066,
+                                            "src": "5628:30:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1062,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1061,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "5628:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "5628:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "5628:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5627:32:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1065,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5668:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "5593:76:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1067,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "5672:152:3",
+                                    "text": "Whether there is a pending sponsor.\n @dev EVM selector for this function is: 0x058ac185,\n  or in textual repr: hasCollectionPendingSponsor()"
+                                },
+                                "functionSelector": "058ac185",
+                                "id": 1072,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "hasCollectionPendingSponsor",
+                                "nameLocation": "5835:27:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1068,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5862:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1071,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1070,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1072,
+                                            "src": "5888:4:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1069,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5888:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5887:6:3"
+                                },
+                                "scope": 1248,
+                                "src": "5826:68:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1073,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "5897:256:3",
+                                    "text": "Collection sponsorship confirmation.\n @dev After setting the sponsor for the collection, it must be confirmed with this function.\n @dev EVM selector for this function is: 0x3c50e97a,\n  or in textual repr: confirmCollectionSponsorship()"
+                                },
+                                "functionSelector": "3c50e97a",
+                                "id": 1076,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "confirmCollectionSponsorship",
+                                "nameLocation": "6164:28:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1074,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6192:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1075,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6203:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "6155:49:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1077,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "6207:139:3",
+                                    "text": "Remove collection sponsor.\n @dev EVM selector for this function is: 0x6e0326a3,\n  or in textual repr: removeCollectionSponsor()"
+                                },
+                                "functionSelector": "6e0326a3",
+                                "id": 1080,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeCollectionSponsor",
+                                "nameLocation": "6357:23:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1078,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6380:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1079,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6391:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "6348:44:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1081,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "6395:270:3",
+                                    "text": "Get current sponsor.\n @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error \"Contract has no sponsor\" throw.\n @dev EVM selector for this function is: 0x6ec0a9f1,\n  or in textual repr: collectionSponsor()"
+                                },
+                                "functionSelector": "6ec0a9f1",
+                                "id": 1087,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionSponsor",
+                                "nameLocation": "6676:17:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1082,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "6693:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1086,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1085,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1087,
+                                            "src": "6719:14:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_Tuple23_$1258_memory_ptr",
+                                                "typeString": "struct Tuple23"
+                                            },
+                                            "typeName": {
+                                                "id": 1084,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1083,
+                                                    "name": "Tuple23",
+                                                    "nameLocations": [
+                                                        "6719:7:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1258,
+                                                    "src": "6719:7:3"
+                                                },
+                                                "referencedDeclaration": 1258,
+                                                "src": "6719:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_Tuple23_$1258_storage_ptr",
+                                                    "typeString": "struct Tuple23"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "6718:16:3"
+                                },
+                                "scope": 1248,
+                                "src": "6667:68:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1088,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "6738:459:3",
+                                    "text": "Set limits for the collection.\n @dev Throws error if limit not found.\n @param limit Name of the limit. Valid names:\n \t\"accountTokenOwnershipLimit\",\n \t\"sponsoredDataSize\",\n \t\"sponsoredDataRateLimit\",\n \t\"tokenLimit\",\n \t\"sponsorTransferTimeout\",\n \t\"sponsorApproveTimeout\"\n @param value Value of the limit.\n @dev EVM selector for this function is: 0x6a3841db,\n  or in textual repr: setCollectionLimit(string,uint32)"
+                                },
+                                "functionSelector": "6a3841db",
+                                "id": 1095,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionLimit",
+                                "nameLocation": "7208:18:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1093,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1090,
+                                            "mutability": "mutable",
+                                            "name": "limit",
+                                            "nameLocation": "7241:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1095,
+                                            "src": "7227:19:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1089,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7227:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1092,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "7255:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1095,
+                                            "src": "7248:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint32",
+                                                "typeString": "uint32"
+                                            },
+                                            "typeName": {
+                                                "id": 1091,
+                                                "name": "uint32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7248:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint32",
+                                                    "typeString": "uint32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7226:35:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1094,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "7270:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "7199:72:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1096,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "7274:356:3",
+                                    "text": "Set limits for the collection.\n @dev Throws error if limit not found.\n @param limit Name of the limit. Valid names:\n \t\"ownerCanTransfer\",\n \t\"ownerCanDestroy\",\n \t\"transfersEnabled\"\n @param value Value of the limit.\n @dev EVM selector for this function is: 0x993b7fba,\n  or in textual repr: setCollectionLimit(string,bool)"
+                                },
+                                "functionSelector": "993b7fba",
+                                "id": 1103,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionLimit",
+                                "nameLocation": "7641:18:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1101,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1098,
+                                            "mutability": "mutable",
+                                            "name": "limit",
+                                            "nameLocation": "7674:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1103,
+                                            "src": "7660:19:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1097,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7660:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1100,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "7686:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1103,
+                                            "src": "7681:10:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1099,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7681:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7659:33:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1102,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "7701:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "7632:70:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1104,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "7705:126:3",
+                                    "text": "Get contract address.\n @dev EVM selector for this function is: 0xf6b4dfb4,\n  or in textual repr: contractAddress()"
+                                },
+                                "functionSelector": "f6b4dfb4",
+                                "id": 1109,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "contractAddress",
+                                "nameLocation": "7842:15:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1105,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "7857:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1108,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1107,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1109,
+                                            "src": "7883:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1106,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "7883:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "7882:9:3"
+                                },
+                                "scope": 1248,
+                                "src": "7833:59:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1110,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "7895:209:3",
+                                    "text": "Add collection admin.\n @param newAdmin Cross account administrator address.\n @dev EVM selector for this function is: 0x859aa7d6,\n  or in textual repr: addCollectionAdminCross((address,uint256))"
+                                },
+                                "functionSelector": "859aa7d6",
+                                "id": 1116,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "addCollectionAdminCross",
+                                "nameLocation": "8115:23:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1114,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1113,
+                                            "mutability": "mutable",
+                                            "name": "newAdmin",
+                                            "nameLocation": "8162:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1116,
+                                            "src": "8139:31:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1112,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1111,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "8139:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "8139:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "8139:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "8138:33:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1115,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8180:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "8106:75:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1117,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "8184:212:3",
+                                    "text": "Remove collection admin.\n @param admin Cross account administrator address.\n @dev EVM selector for this function is: 0x6c0cd173,\n  or in textual repr: removeCollectionAdminCross((address,uint256))"
+                                },
+                                "functionSelector": "6c0cd173",
+                                "id": 1123,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeCollectionAdminCross",
+                                "nameLocation": "8407:26:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1121,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1120,
+                                            "mutability": "mutable",
+                                            "name": "admin",
+                                            "nameLocation": "8457:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1123,
+                                            "src": "8434:28:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1119,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1118,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "8434:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "8434:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "8434:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "8433:30:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1122,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8472:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "8398:75:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1124,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "8476:193:3",
+                                    "text": "Add collection admin.\n @param newAdmin Address of the added administrator.\n @dev EVM selector for this function is: 0x92e462c7,\n  or in textual repr: addCollectionAdmin(address)"
+                                },
+                                "functionSelector": "92e462c7",
+                                "id": 1129,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "addCollectionAdmin",
+                                "nameLocation": "8680:18:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1127,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1126,
+                                            "mutability": "mutable",
+                                            "name": "newAdmin",
+                                            "nameLocation": "8707:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1129,
+                                            "src": "8699:16:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1125,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "8699:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "8698:18:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1128,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8725:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "8671:55:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1130,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "8729:203:3",
+                                    "text": "Remove collection admin.\n @param admin Address of the removed administrator.\n @dev EVM selector for this function is: 0xfafd7b42,\n  or in textual repr: removeCollectionAdmin(address)"
+                                },
+                                "functionSelector": "fafd7b42",
+                                "id": 1135,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeCollectionAdmin",
+                                "nameLocation": "8943:21:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1133,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1132,
+                                            "mutability": "mutable",
+                                            "name": "admin",
+                                            "nameLocation": "8973:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1135,
+                                            "src": "8965:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1131,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "8965:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "8964:15:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1134,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "8988:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "8934:55:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1136,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "8992:251:3",
+                                    "text": "Toggle accessibility of collection nesting.\n @param enable If \"true\" degenerates to nesting: 'Owner' else to nesting: 'Disabled'\n @dev EVM selector for this function is: 0x112d4586,\n  or in textual repr: setCollectionNesting(bool)"
+                                },
+                                "functionSelector": "112d4586",
+                                "id": 1141,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionNesting",
+                                "nameLocation": "9254:20:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1139,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1138,
+                                            "mutability": "mutable",
+                                            "name": "enable",
+                                            "nameLocation": "9280:6:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1141,
+                                            "src": "9275:11:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1137,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "9275:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "9274:13:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1140,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "9296:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "9245:52:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1142,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "9300:367:3",
+                                    "text": "Toggle accessibility of collection nesting.\n @param enable If \"true\" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'\n @param collections Addresses of collections that will be available for nesting.\n @dev EVM selector for this function is: 0x64872396,\n  or in textual repr: setCollectionNesting(bool,address[])"
+                                },
+                                "functionSelector": "64872396",
+                                "id": 1150,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionNesting",
+                                "nameLocation": "9678:20:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1148,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1144,
+                                            "mutability": "mutable",
+                                            "name": "enable",
+                                            "nameLocation": "9704:6:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1150,
+                                            "src": "9699:11:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1143,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "9699:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1147,
+                                            "mutability": "mutable",
+                                            "name": "collections",
+                                            "nameLocation": "9729:11:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1150,
+                                            "src": "9712:28:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+                                                "typeString": "address[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 1145,
+                                                    "name": "address",
+                                                    "nodeType": "ElementaryTypeName",
+                                                    "src": "9712:7:3",
+                                                    "stateMutability": "nonpayable",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_address",
+                                                        "typeString": "address"
+                                                    }
+                                                },
+                                                "id": 1146,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "9712:9:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+                                                    "typeString": "address[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "9698:43:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1149,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "9750:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "9669:82:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1151,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "9754:217:3",
+                                    "text": "Set the collection access method.\n @param mode Access mode\n \t0 for Normal\n \t1 for AllowList\n @dev EVM selector for this function is: 0x41835d4c,\n  or in textual repr: setCollectionAccess(uint8)"
+                                },
+                                "functionSelector": "41835d4c",
+                                "id": 1156,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionAccess",
+                                "nameLocation": "9982:19:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1154,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1153,
+                                            "mutability": "mutable",
+                                            "name": "mode",
+                                            "nameLocation": "10008:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1156,
+                                            "src": "10002:10:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint8",
+                                                "typeString": "uint8"
+                                            },
+                                            "typeName": {
+                                                "id": 1152,
+                                                "name": "uint8",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "10002:5:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint8",
+                                                    "typeString": "uint8"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10001:12:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1155,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "10022:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "9973:50:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1157,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "10026:201:3",
+                                    "text": "Checks that user allowed to operate with collection.\n @param user User address to check.\n @dev EVM selector for this function is: 0xd63a8e11,\n  or in textual repr: allowed(address)"
+                                },
+                                "functionSelector": "d63a8e11",
+                                "id": 1164,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "allowed",
+                                "nameLocation": "10238:7:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1160,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1159,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "10254:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1164,
+                                            "src": "10246:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1158,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "10246:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10245:14:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1163,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1162,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1164,
+                                            "src": "10283:4:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1161,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "10283:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10282:6:3"
+                                },
+                                "scope": 1248,
+                                "src": "10229:60:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1165,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "10292:203:3",
+                                    "text": "Add the user to the allowed list.\n @param user Address of a trusted user.\n @dev EVM selector for this function is: 0x67844fe6,\n  or in textual repr: addToCollectionAllowList(address)"
+                                },
+                                "functionSelector": "67844fe6",
+                                "id": 1170,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "addToCollectionAllowList",
+                                "nameLocation": "10506:24:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1168,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1167,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "10539:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1170,
+                                            "src": "10531:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1166,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "10531:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10530:14:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1169,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "10553:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "10497:57:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1171,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "10557:211:3",
+                                    "text": "Add user to allowed list.\n @param user User cross account address.\n @dev EVM selector for this function is: 0xa0184a3a,\n  or in textual repr: addToCollectionAllowListCross((address,uint256))"
+                                },
+                                "functionSelector": "a0184a3a",
+                                "id": 1177,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "addToCollectionAllowListCross",
+                                "nameLocation": "10779:29:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1175,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1174,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "10832:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1177,
+                                            "src": "10809:27:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1173,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1172,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "10809:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "10809:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "10809:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "10808:29:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1176,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "10846:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "10770:77:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1178,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "10850:213:3",
+                                    "text": "Remove the user from the allowed list.\n @param user Address of a removed user.\n @dev EVM selector for this function is: 0x85c51acb,\n  or in textual repr: removeFromCollectionAllowList(address)"
+                                },
+                                "functionSelector": "85c51acb",
+                                "id": 1183,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeFromCollectionAllowList",
+                                "nameLocation": "11074:29:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1181,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1180,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "11112:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1183,
+                                            "src": "11104:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1179,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "11104:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "11103:14:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1182,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "11126:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "11065:62:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1184,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "11130:221:3",
+                                    "text": "Remove user from allowed list.\n @param user User cross account address.\n @dev EVM selector for this function is: 0x09ba452a,\n  or in textual repr: removeFromCollectionAllowListCross((address,uint256))"
+                                },
+                                "functionSelector": "09ba452a",
+                                "id": 1190,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "removeFromCollectionAllowListCross",
+                                "nameLocation": "11362:34:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1188,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1187,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "11420:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1190,
+                                            "src": "11397:27:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1186,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1185,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "11397:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "11397:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "11397:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "11396:29:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1189,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "11434:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "11353:82:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1191,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "11438:185:3",
+                                    "text": "Switch permission for minting.\n @param mode Enable if \"true\".\n @dev EVM selector for this function is: 0x00018e84,\n  or in textual repr: setCollectionMintMode(bool)"
+                                },
+                                "functionSelector": "00018e84",
+                                "id": 1196,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setCollectionMintMode",
+                                "nameLocation": "11634:21:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1194,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1193,
+                                            "mutability": "mutable",
+                                            "name": "mode",
+                                            "nameLocation": "11661:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1196,
+                                            "src": "11656:9:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1192,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "11656:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "11655:11:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1195,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "11675:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "11625:51:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1197,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "11679:262:3",
+                                    "text": "Check that account is the owner or admin of the collection\n @param user account to verify\n @return \"true\" if account is the owner or admin\n @dev EVM selector for this function is: 0x9811b0c7,\n  or in textual repr: isOwnerOrAdmin(address)"
+                                },
+                                "functionSelector": "9811b0c7",
+                                "id": 1204,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "isOwnerOrAdmin",
+                                "nameLocation": "11952:14:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1200,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1199,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "11975:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1204,
+                                            "src": "11967:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1198,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "11967:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "11966:14:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1203,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1202,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1204,
+                                            "src": "12004:4:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1201,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "12004:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12003:6:3"
+                                },
+                                "scope": 1248,
+                                "src": "11943:67:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1205,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "12013:288:3",
+                                    "text": "Check that account is the owner or admin of the collection\n @param user User cross account to verify\n @return \"true\" if account is the owner or admin\n @dev EVM selector for this function is: 0x3e75a905,\n  or in textual repr: isOwnerOrAdminCross((address,uint256))"
+                                },
+                                "functionSelector": "3e75a905",
+                                "id": 1213,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "isOwnerOrAdminCross",
+                                "nameLocation": "12312:19:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1209,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1208,
+                                            "mutability": "mutable",
+                                            "name": "user",
+                                            "nameLocation": "12355:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1213,
+                                            "src": "12332:27:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1207,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1206,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "12332:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "12332:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "12332:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12331:29:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1212,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1211,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1213,
+                                            "src": "12384:4:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1210,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "12384:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12383:6:3"
+                                },
+                                "scope": 1248,
+                                "src": "12303:87:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1214,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "12393:187:3",
+                                    "text": "Returns collection type\n @return `Fungible` or `NFT` or `ReFungible`\n @dev EVM selector for this function is: 0xd34b55b8,\n  or in textual repr: uniqueCollectionType()"
+                                },
+                                "functionSelector": "d34b55b8",
+                                "id": 1219,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "uniqueCollectionType",
+                                "nameLocation": "12591:20:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1215,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "12611:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1218,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1217,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1219,
+                                            "src": "12637:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1216,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "12637:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12636:15:3"
+                                },
+                                "scope": 1248,
+                                "src": "12582:70:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1220,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "12655:272:3",
+                                    "text": "Get collection owner.\n @return Tuble with sponsor address and his substrate mirror.\n If address is canonical then substrate mirror is zero and vice versa.\n @dev EVM selector for this function is: 0xdf727d3b,\n  or in textual repr: collectionOwner()"
+                                },
+                                "functionSelector": "df727d3b",
+                                "id": 1226,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionOwner",
+                                "nameLocation": "12938:15:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1221,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "12953:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1225,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1224,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1226,
+                                            "src": "12979:22:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1223,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1222,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "12979:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "12979:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "12979:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "12978:24:3"
+                                },
+                                "scope": 1248,
+                                "src": "12929:74:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1227,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "13006:258:3",
+                                    "text": "Changes collection owner to another account\n @dev Owner can be changed only by current owner\n @param newOwner new owner account\n @dev EVM selector for this function is: 0x4f53e226,\n  or in textual repr: changeCollectionOwner(address)"
+                                },
+                                "functionSelector": "4f53e226",
+                                "id": 1232,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "changeCollectionOwner",
+                                "nameLocation": "13275:21:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1230,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1229,
+                                            "mutability": "mutable",
+                                            "name": "newOwner",
+                                            "nameLocation": "13305:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1232,
+                                            "src": "13297:16:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1228,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "13297:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "13296:18:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1231,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "13323:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "13266:58:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1233,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "13327:291:3",
+                                    "text": "Get collection administrators\n @return Vector of tuples with admins address and his substrate mirror.\n If address is canonical then substrate mirror is zero and vice versa.\n @dev EVM selector for this function is: 0x5813216b,\n  or in textual repr: collectionAdmins()"
+                                },
+                                "functionSelector": "5813216b",
+                                "id": 1240,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "collectionAdmins",
+                                "nameLocation": "13629:16:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1234,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "13645:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1239,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1238,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1240,
+                                            "src": "13671:24:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_EthCrossAccount_$1253_memory_ptr_$dyn_memory_ptr",
+                                                "typeString": "struct EthCrossAccount[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 1236,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 1235,
+                                                        "name": "EthCrossAccount",
+                                                        "nameLocations": [
+                                                            "13671:15:3"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 1253,
+                                                        "src": "13671:15:3"
+                                                    },
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "13671:15:3",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                        "typeString": "struct EthCrossAccount"
+                                                    }
+                                                },
+                                                "id": 1237,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "13671:17:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_EthCrossAccount_$1253_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "13670:26:3"
+                                },
+                                "scope": 1248,
+                                "src": "13620:77:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1241,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "13700:266:3",
+                                    "text": "Changes collection owner to another account\n @dev Owner can be changed only by current owner\n @param newOwner new owner cross account\n @dev EVM selector for this function is: 0xe5c9913f,\n  or in textual repr: setOwnerCross((address,uint256))"
+                                },
+                                "functionSelector": "e5c9913f",
+                                "id": 1247,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setOwnerCross",
+                                "nameLocation": "13977:13:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1245,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1244,
+                                            "mutability": "mutable",
+                                            "name": "newOwner",
+                                            "nameLocation": "14014:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1247,
+                                            "src": "13991:31:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1243,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1242,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "13991:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "13991:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "13991:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "13990:33:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1246,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "14032:0:3"
+                                },
+                                "scope": 1248,
+                                "src": "13968:65:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "2883:11152:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "canonicalName": "EthCrossAccount",
+                        "id": 1253,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 1250,
+                                "mutability": "mutable",
+                                "name": "eth",
+                                "nameLocation": "14101:3:3",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1253,
+                                "src": "14093:11:3",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_address",
+                                    "typeString": "address"
+                                },
+                                "typeName": {
+                                    "id": 1249,
+                                    "name": "address",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14093:7:3",
+                                    "stateMutability": "nonpayable",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 1252,
+                                "mutability": "mutable",
+                                "name": "sub",
+                                "nameLocation": "14115:3:3",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1253,
+                                "src": "14107:11:3",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_uint256",
+                                    "typeString": "uint256"
+                                },
+                                "typeName": {
+                                    "id": 1251,
+                                    "name": "uint256",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14107:7:3",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "EthCrossAccount",
+                        "nameLocation": "14074:15:3",
+                        "nodeType": "StructDefinition",
+                        "scope": 1573,
+                        "src": "14067:54:3",
+                        "visibility": "public"
+                    },
+                    {
+                        "canonicalName": "Tuple23",
+                        "id": 1258,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 1255,
+                                "mutability": "mutable",
+                                "name": "field_0",
+                                "nameLocation": "14175:7:3",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1258,
+                                "src": "14167:15:3",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_address",
+                                    "typeString": "address"
+                                },
+                                "typeName": {
+                                    "id": 1254,
+                                    "name": "address",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14167:7:3",
+                                    "stateMutability": "nonpayable",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 1257,
+                                "mutability": "mutable",
+                                "name": "field_1",
+                                "nameLocation": "14193:7:3",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1258,
+                                "src": "14185:15:3",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_uint256",
+                                    "typeString": "uint256"
+                                },
+                                "typeName": {
+                                    "id": 1256,
+                                    "name": "uint256",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14185:7:3",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "Tuple23",
+                        "nameLocation": "14156:7:3",
+                        "nodeType": "StructDefinition",
+                        "scope": 1573,
+                        "src": "14149:54:3",
+                        "visibility": "public"
+                    },
+                    {
+                        "canonicalName": "Tuple20",
+                        "id": 1263,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 1260,
+                                "mutability": "mutable",
+                                "name": "field_0",
+                                "nameLocation": "14256:7:3",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1263,
+                                "src": "14249:14:3",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_string_storage_ptr",
+                                    "typeString": "string"
+                                },
+                                "typeName": {
+                                    "id": 1259,
+                                    "name": "string",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14249:6:3",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_string_storage_ptr",
+                                        "typeString": "string"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 1262,
+                                "mutability": "mutable",
+                                "name": "field_1",
+                                "nameLocation": "14272:7:3",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1263,
+                                "src": "14266:13:3",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                    "typeString": "bytes"
+                                },
+                                "typeName": {
+                                    "id": 1261,
+                                    "name": "bytes",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "14266:5:3",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes_storage_ptr",
+                                        "typeString": "bytes"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "Tuple20",
+                        "nameLocation": "14238:7:3",
+                        "nodeType": "StructDefinition",
+                        "scope": 1573,
+                        "src": "14231:51:3",
+                        "visibility": "public"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1265,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "14377:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "14377:5:3"
+                                },
+                                "id": 1266,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "14377:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1267,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "14384:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "14384:6:3"
+                                },
+                                "id": 1268,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "14384:6:3"
+                            }
+                        ],
+                        "canonicalName": "ERC721Metadata",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1264,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "14284:65:3",
+                            "text": "@dev the ERC-165 identifier for this interface is 0x5b5e139f"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1277,
+                        "linearizedBaseContracts": [
+                            1277,
+                            944,
+                            934
+                        ],
+                        "name": "ERC721Metadata",
+                        "nameLocation": "14359:14:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1269,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "15015:784:3",
+                                    "text": "@notice A distinct Uniform Resource Identifier (URI) for a given asset.\n @dev If the token has a `url` property and it is not empty, it is returned.\n  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.\n  If the collection property `baseURI` is empty or absent, return \"\" (empty string)\n  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix\n  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).\n @return token's const_metadata\n @dev EVM selector for this function is: 0xc87b56dd,\n  or in textual repr: tokenURI(uint256)"
+                                },
+                                "functionSelector": "c87b56dd",
+                                "id": 1276,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "tokenURI",
+                                "nameLocation": "15810:8:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1272,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1271,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "15827:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1276,
+                                            "src": "15819:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1270,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "15819:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "15818:17:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1275,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1274,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1276,
+                                            "src": "15859:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1273,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "15859:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "15858:15:3"
+                                },
+                                "scope": 1277,
+                                "src": "15801:73:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "14349:1527:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1279,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "16040:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "16040:5:3"
+                                },
+                                "id": 1280,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16040:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1281,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "16047:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "16047:6:3"
+                                },
+                                "id": 1282,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16047:6:3"
+                            }
+                        ],
+                        "canonicalName": "ERC721Burnable",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1278,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "15878:134:3",
+                            "text": "@title ERC721 Token that can be irreversibly burned (destroyed).\n @dev the ERC-165 identifier for this interface is 0x42966c68"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1289,
+                        "linearizedBaseContracts": [
+                            1289,
+                            944,
+                            934
+                        ],
+                        "name": "ERC721Burnable",
+                        "nameLocation": "16022:14:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1283,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "16057:295:3",
+                                    "text": "@notice Burns a specific ERC721 token.\n @dev Throws unless `msg.sender` is the current RFT owner, or an authorized\n  operator of the current owner.\n @param tokenId The RFT to approve\n @dev EVM selector for this function is: 0x42966c68,\n  or in textual repr: burn(uint256)"
+                                },
+                                "functionSelector": "42966c68",
+                                "id": 1288,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "burn",
+                                "nameLocation": "16363:4:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1286,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1285,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "16376:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1288,
+                                            "src": "16368:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1284,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "16368:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "16367:17:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1287,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "16393:0:3"
+                                },
+                                "scope": 1289,
+                                "src": "16354:40:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "16012:384:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "ERC721UniqueMintableEvents",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1290,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "16398:27:3",
+                            "text": "@dev inlined interface"
+                        },
+                        "fullyImplemented": true,
+                        "id": 1293,
+                        "linearizedBaseContracts": [
+                            1293
+                        ],
+                        "name": "ERC721UniqueMintableEvents",
+                        "nameLocation": "16435:26:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "anonymous": false,
+                                "eventSelector": "b828d9b5c78095deeeeff2eca2e5d4fe046ce3feb4c99702624a3fd384ad2dbc",
+                                "id": 1292,
+                                "name": "MintingFinished",
+                                "nameLocation": "16471:15:3",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 1291,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "16486:2:3"
+                                },
+                                "src": "16465:24:3"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "16425:66:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1295,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "16625:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "16625:5:3"
+                                },
+                                "id": 1296,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16625:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1297,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "16632:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "16632:6:3"
+                                },
+                                "id": 1298,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16632:6:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1299,
+                                    "name": "ERC721UniqueMintableEvents",
+                                    "nameLocations": [
+                                        "16640:26:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1293,
+                                    "src": "16640:26:3"
+                                },
+                                "id": 1300,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "16640:26:3"
+                            }
+                        ],
+                        "canonicalName": "ERC721UniqueMintable",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1294,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "16493:98:3",
+                            "text": "@title ERC721 minting logic.\n @dev the ERC-165 identifier for this interface is 0x476ff149"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1331,
+                        "linearizedBaseContracts": [
+                            1331,
+                            1293,
+                            944,
+                            934
+                        ],
+                        "name": "ERC721UniqueMintable",
+                        "nameLocation": "16601:20:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1301,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "16670:99:3",
+                                    "text": "@dev EVM selector for this function is: 0x05d2035b,\n  or in textual repr: mintingFinished()"
+                                },
+                                "functionSelector": "05d2035b",
+                                "id": 1306,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "mintingFinished",
+                                "nameLocation": "16780:15:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1302,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "16795:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1305,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1304,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1306,
+                                            "src": "16821:4:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1303,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "16821:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "16820:6:3"
+                                },
+                                "scope": 1331,
+                                "src": "16771:56:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1307,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "16830:215:3",
+                                    "text": "@notice Function to mint token.\n @param to The new owner\n @return uint256 The id of the newly minted token\n @dev EVM selector for this function is: 0x6a627842,\n  or in textual repr: mint(address)"
+                                },
+                                "functionSelector": "6a627842",
+                                "id": 1314,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "mint",
+                                "nameLocation": "17056:4:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1310,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1309,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "17069:2:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1314,
+                                            "src": "17061:10:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1308,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "17061:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "17060:12:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1313,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1312,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1314,
+                                            "src": "17091:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1311,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "17091:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "17090:9:3"
+                                },
+                                "scope": 1331,
+                                "src": "17047:53:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1315,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "17528:332:3",
+                                    "text": "@notice Function to mint token with the given tokenUri.\n @param to The new owner\n @param tokenUri Token URI that would be stored in the NFT properties\n @return uint256 The id of the newly minted token\n @dev EVM selector for this function is: 0x45c17782,\n  or in textual repr: mintWithTokenURI(address,string)"
+                                },
+                                "functionSelector": "45c17782",
+                                "id": 1324,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "mintWithTokenURI",
+                                "nameLocation": "17871:16:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1320,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1317,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "17896:2:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1324,
+                                            "src": "17888:10:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1316,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "17888:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1319,
+                                            "mutability": "mutable",
+                                            "name": "tokenUri",
+                                            "nameLocation": "17914:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1324,
+                                            "src": "17900:22:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1318,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "17900:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "17887:36:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1323,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1322,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1324,
+                                            "src": "17942:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1321,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "17942:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "17941:9:3"
+                                },
+                                "scope": 1331,
+                                "src": "17862:89:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1325,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "18535:123:3",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x7d64bcb4,\n  or in textual repr: finishMinting()"
+                                },
+                                "functionSelector": "7d64bcb4",
+                                "id": 1330,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "finishMinting",
+                                "nameLocation": "18669:13:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1326,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "18682:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1329,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1328,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1330,
+                                            "src": "18703:4:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1327,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "18703:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "18702:6:3"
+                                },
+                                "scope": 1331,
+                                "src": "18660:49:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "16591:2120:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1333,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "18855:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "18855:5:3"
+                                },
+                                "id": 1334,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "18855:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1335,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "18862:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "18862:6:3"
+                                },
+                                "id": 1336,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "18862:6:3"
+                            }
+                        ],
+                        "canonicalName": "ERC721UniqueExtensions",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1332,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "18713:106:3",
+                            "text": "@title Unique extensions for ERC721.\n @dev the ERC-165 identifier for this interface is 0x81feb398"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1400,
+                        "linearizedBaseContracts": [
+                            1400,
+                            944,
+                            934
+                        ],
+                        "name": "ERC721UniqueExtensions",
+                        "nameLocation": "18829:22:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1337,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "18872:162:3",
+                                    "text": "@notice A descriptive name for a collection of NFTs in this contract\n @dev EVM selector for this function is: 0x06fdde03,\n  or in textual repr: name()"
+                                },
+                                "functionSelector": "06fdde03",
+                                "id": 1342,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "name",
+                                "nameLocation": "19045:4:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1338,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "19049:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1341,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1340,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1342,
+                                            "src": "19075:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1339,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "19075:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "19074:15:3"
+                                },
+                                "scope": 1400,
+                                "src": "19036:54:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1343,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "19093:149:3",
+                                    "text": "@notice An abbreviated name for NFTs in this contract\n @dev EVM selector for this function is: 0x95d89b41,\n  or in textual repr: symbol()"
+                                },
+                                "functionSelector": "95d89b41",
+                                "id": 1348,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "symbol",
+                                "nameLocation": "19253:6:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1344,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "19259:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1347,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1346,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1348,
+                                            "src": "19285:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1345,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "19285:6:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "19284:15:3"
+                                },
+                                "scope": 1400,
+                                "src": "19244:56:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1349,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "19303:408:3",
+                                    "text": "@notice Transfer ownership of an RFT\n @dev Throws unless `msg.sender` is the current owner. Throws if `to`\n  is the zero address. Throws if `tokenId` is not a valid RFT.\n  Throws if RFT pieces have multiple owners.\n @param to The new owner\n @param tokenId The RFT to transfer\n @dev EVM selector for this function is: 0xa9059cbb,\n  or in textual repr: transfer(address,uint256)"
+                                },
+                                "functionSelector": "a9059cbb",
+                                "id": 1356,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "transfer",
+                                "nameLocation": "19722:8:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1354,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1351,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "19739:2:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1356,
+                                            "src": "19731:10:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1350,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "19731:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1353,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "19751:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1356,
+                                            "src": "19743:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1352,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "19743:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "19730:29:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1355,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "19768:0:3"
+                                },
+                                "scope": 1400,
+                                "src": "19713:56:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1357,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "19772:445:3",
+                                    "text": "@notice Transfer ownership of an RFT\n @dev Throws unless `msg.sender` is the current owner. Throws if `to`\n  is the zero address. Throws if `tokenId` is not a valid RFT.\n  Throws if RFT pieces have multiple owners.\n @param to The new owner\n @param tokenId The RFT to transfer\n @dev EVM selector for this function is: 0xd5cf430b,\n  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)"
+                                },
+                                "functionSelector": "d5cf430b",
+                                "id": 1368,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "transferFromCross",
+                                "nameLocation": "20228:17:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1366,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1360,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "20272:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1368,
+                                            "src": "20249:27:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1359,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1358,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "20249:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "20249:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "20249:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1363,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "20303:2:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1368,
+                                            "src": "20280:25:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1362,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1361,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "20280:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "20280:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "20280:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1365,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "20317:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1368,
+                                            "src": "20309:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1364,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "20309:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "20245:82:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1367,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "20336:0:3"
+                                },
+                                "scope": 1400,
+                                "src": "20219:118:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1369,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "20340:515:3",
+                                    "text": "@notice Burns a specific ERC721 token.\n @dev Throws unless `msg.sender` is the current owner or an authorized\n  operator for this RFT. Throws if `from` is not the current owner. Throws\n  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.\n  Throws if RFT pieces have multiple owners.\n @param from The current owner of the RFT\n @param tokenId The RFT to transfer\n @dev EVM selector for this function is: 0x79cc6790,\n  or in textual repr: burnFrom(address,uint256)"
+                                },
+                                "functionSelector": "79cc6790",
+                                "id": 1376,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "burnFrom",
+                                "nameLocation": "20866:8:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1374,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1371,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "20883:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1376,
+                                            "src": "20875:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1370,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "20875:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1373,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "20897:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1376,
+                                            "src": "20889:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1372,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "20889:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "20874:31:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1375,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "20914:0:3"
+                                },
+                                "scope": 1400,
+                                "src": "20857:58:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1377,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "20918:530:3",
+                                    "text": "@notice Burns a specific ERC721 token.\n @dev Throws unless `msg.sender` is the current owner or an authorized\n  operator for this RFT. Throws if `from` is not the current owner. Throws\n  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.\n  Throws if RFT pieces have multiple owners.\n @param from The current owner of the RFT\n @param tokenId The RFT to transfer\n @dev EVM selector for this function is: 0xbb2f5a58,\n  or in textual repr: burnFromCross((address,uint256),uint256)"
+                                },
+                                "functionSelector": "bb2f5a58",
+                                "id": 1385,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "burnFromCross",
+                                "nameLocation": "21459:13:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1383,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1380,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "21496:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1385,
+                                            "src": "21473:27:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                "typeString": "struct EthCrossAccount"
+                                            },
+                                            "typeName": {
+                                                "id": 1379,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1378,
+                                                    "name": "EthCrossAccount",
+                                                    "nameLocations": [
+                                                        "21473:15:3"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1253,
+                                                    "src": "21473:15:3"
+                                                },
+                                                "referencedDeclaration": 1253,
+                                                "src": "21473:15:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_struct$_EthCrossAccount_$1253_storage_ptr",
+                                                    "typeString": "struct EthCrossAccount"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1382,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "21510:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1385,
+                                            "src": "21502:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1381,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "21502:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "21472:46:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1384,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "21527:0:3"
+                                },
+                                "scope": 1400,
+                                "src": "21450:78:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1386,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "21531:134:3",
+                                    "text": "@notice Returns next free RFT ID.\n @dev EVM selector for this function is: 0x75794a3c,\n  or in textual repr: nextTokenId()"
+                                },
+                                "functionSelector": "75794a3c",
+                                "id": 1391,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "nextTokenId",
+                                "nameLocation": "21676:11:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1387,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "21687:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1390,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1389,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1391,
+                                            "src": "21713:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1388,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "21713:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "21712:9:3"
+                                },
+                                "scope": 1400,
+                                "src": "21667:55:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1392,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "22797:196:3",
+                                    "text": "Returns EVM address for refungible token\n @param token ID of the token\n @dev EVM selector for this function is: 0xab76fac6,\n  or in textual repr: tokenContractAddress(uint256)"
+                                },
+                                "functionSelector": "ab76fac6",
+                                "id": 1399,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "tokenContractAddress",
+                                "nameLocation": "23004:20:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1395,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1394,
+                                            "mutability": "mutable",
+                                            "name": "token",
+                                            "nameLocation": "23033:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1399,
+                                            "src": "23025:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1393,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "23025:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "23024:15:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1398,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1397,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1399,
+                                            "src": "23063:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1396,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "23063:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "23062:9:3"
+                                },
+                                "scope": 1400,
+                                "src": "22995:77:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "18819:4255:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "canonicalName": "Tuple9",
+                        "id": 1405,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 1402,
+                                "mutability": "mutable",
+                                "name": "field_0",
+                                "nameLocation": "23127:7:3",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1405,
+                                "src": "23119:15:3",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_uint256",
+                                    "typeString": "uint256"
+                                },
+                                "typeName": {
+                                    "id": 1401,
+                                    "name": "uint256",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "23119:7:3",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 1404,
+                                "mutability": "mutable",
+                                "name": "field_1",
+                                "nameLocation": "23144:7:3",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1405,
+                                "src": "23137:14:3",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_string_storage_ptr",
+                                    "typeString": "string"
+                                },
+                                "typeName": {
+                                    "id": 1403,
+                                    "name": "string",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "23137:6:3",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_string_storage_ptr",
+                                        "typeString": "string"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "Tuple9",
+                        "nameLocation": "23109:6:3",
+                        "nodeType": "StructDefinition",
+                        "scope": 1573,
+                        "src": "23102:52:3",
+                        "visibility": "public"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1407,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "23382:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "23382:5:3"
+                                },
+                                "id": 1408,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "23382:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1409,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "23389:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "23389:6:3"
+                                },
+                                "id": 1410,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "23389:6:3"
+                            }
+                        ],
+                        "canonicalName": "ERC721Enumerable",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1406,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "23156:196:3",
+                            "text": "@title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721\n @dev the ERC-165 identifier for this interface is 0x780e9d63"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1435,
+                        "linearizedBaseContracts": [
+                            1435,
+                            944,
+                            934
+                        ],
+                        "name": "ERC721Enumerable",
+                        "nameLocation": "23362:16:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1411,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "23399:281:3",
+                                    "text": "@notice Enumerate valid RFTs\n @param index A counter less than `totalSupply()`\n @return The token identifier for the `index`th NFT,\n  (sort order not specified)\n @dev EVM selector for this function is: 0x4f6ccce7,\n  or in textual repr: tokenByIndex(uint256)"
+                                },
+                                "functionSelector": "4f6ccce7",
+                                "id": 1418,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "tokenByIndex",
+                                "nameLocation": "23691:12:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1414,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1413,
+                                            "mutability": "mutable",
+                                            "name": "index",
+                                            "nameLocation": "23712:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1418,
+                                            "src": "23704:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1412,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "23704:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "23703:15:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1417,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1416,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1418,
+                                            "src": "23742:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1415,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "23742:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "23741:9:3"
+                                },
+                                "scope": 1435,
+                                "src": "23682:69:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1419,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "23754:139:3",
+                                    "text": "Not implemented\n @dev EVM selector for this function is: 0x2f745c59,\n  or in textual repr: tokenOfOwnerByIndex(address,uint256)"
+                                },
+                                "functionSelector": "2f745c59",
+                                "id": 1428,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "tokenOfOwnerByIndex",
+                                "nameLocation": "23904:19:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1424,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1421,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "23932:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1428,
+                                            "src": "23924:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1420,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "23924:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1423,
+                                            "mutability": "mutable",
+                                            "name": "index",
+                                            "nameLocation": "23947:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1428,
+                                            "src": "23939:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1422,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "23939:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "23923:30:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1427,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1426,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1428,
+                                            "src": "23977:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1425,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "23977:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "23976:9:3"
+                                },
+                                "scope": 1435,
+                                "src": "23895:91:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1429,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "23989:300:3",
+                                    "text": "@notice Count RFTs tracked by this contract\n @return A count of valid RFTs tracked by this contract, where each one of\n  them has an assigned and queryable owner not equal to the zero address\n @dev EVM selector for this function is: 0x18160ddd,\n  or in textual repr: totalSupply()"
+                                },
+                                "functionSelector": "18160ddd",
+                                "id": 1434,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "totalSupply",
+                                "nameLocation": "24300:11:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1430,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "24311:2:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1433,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1432,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1434,
+                                            "src": "24337:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1431,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24337:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24336:9:3"
+                                },
+                                "scope": 1435,
+                                "src": "24291:55:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "23352:996:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "ERC721Events",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1436,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "24350:27:3",
+                            "text": "@dev inlined interface"
+                        },
+                        "fullyImplemented": true,
+                        "id": 1461,
+                        "linearizedBaseContracts": [
+                            1461
+                        ],
+                        "name": "ERC721Events",
+                        "nameLocation": "24387:12:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "anonymous": false,
+                                "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
+                                "id": 1444,
+                                "name": "Transfer",
+                                "nameLocation": "24409:8:3",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 1443,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1438,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "24434:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1444,
+                                            "src": "24418:20:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1437,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24418:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1440,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "24456:2:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1444,
+                                            "src": "24440:18:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1439,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24440:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1442,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "24476:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1444,
+                                            "src": "24460:23:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1441,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24460:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24417:67:3"
+                                },
+                                "src": "24403:82:3"
+                            },
+                            {
+                                "anonymous": false,
+                                "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
+                                "id": 1452,
+                                "name": "Approval",
+                                "nameLocation": "24493:8:3",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 1451,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1446,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "24518:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1452,
+                                            "src": "24502:21:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1445,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24502:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1448,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "24541:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1452,
+                                            "src": "24525:24:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1447,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24525:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1450,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "24567:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1452,
+                                            "src": "24551:23:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1449,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24551:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24501:74:3"
+                                },
+                                "src": "24487:89:3"
+                            },
+                            {
+                                "anonymous": false,
+                                "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
+                                "id": 1460,
+                                "name": "ApprovalForAll",
+                                "nameLocation": "24584:14:3",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 1459,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1454,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "24615:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1460,
+                                            "src": "24599:21:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1453,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24599:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1456,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "operator",
+                                            "nameLocation": "24638:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1460,
+                                            "src": "24622:24:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1455,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24622:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1458,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "24653:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1460,
+                                            "src": "24648:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1457,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "24648:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "24598:64:3"
+                                },
+                                "src": "24578:85:3"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "24377:288:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1463,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "24873:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "24873:5:3"
+                                },
+                                "id": 1464,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "24873:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1465,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "24880:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "24880:6:3"
+                                },
+                                "id": 1466,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "24880:6:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1467,
+                                    "name": "ERC721Events",
+                                    "nameLocations": [
+                                        "24888:12:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1461,
+                                    "src": "24888:12:3"
+                                },
+                                "id": 1468,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "24888:12:3"
+                            }
+                        ],
+                        "canonicalName": "ERC721",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1462,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "24667:186:3",
+                            "text": "@title ERC-721 Non-Fungible Token Standard\n @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n @dev the ERC-165 identifier for this interface is 0x58800161"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1551,
+                        "linearizedBaseContracts": [
+                            1551,
+                            1461,
+                            944,
+                            934
+                        ],
+                        "name": "ERC721",
+                        "nameLocation": "24863:6:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1469,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "24904:407:3",
+                                    "text": "@notice Count all RFTs assigned to an owner\n @dev RFTs assigned to the zero address are considered invalid, and this\n  function throws for queries about the zero address.\n @param owner An address for whom to query the balance\n @return The number of RFTs owned by `owner`, possibly zero\n @dev EVM selector for this function is: 0x70a08231,\n  or in textual repr: balanceOf(address)"
+                                },
+                                "functionSelector": "70a08231",
+                                "id": 1476,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "balanceOf",
+                                "nameLocation": "25322:9:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1472,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1471,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "25340:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1476,
+                                            "src": "25332:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1470,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "25332:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "25331:15:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1475,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1474,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1476,
+                                            "src": "25370:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1473,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "25370:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "25369:9:3"
+                                },
+                                "scope": 1551,
+                                "src": "25313:66:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1477,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "25382:454:3",
+                                    "text": "@notice Find the owner of an RFT\n @dev RFTs assigned to zero address are considered invalid, and queries\n  about them do throw.\n  Returns special 0xffffffffffffffffffffffffffffffffffffffff address for\n  the tokens that are partially owned.\n @param tokenId The identifier for an RFT\n @return The address of the owner of the RFT\n @dev EVM selector for this function is: 0x6352211e,\n  or in textual repr: ownerOf(uint256)"
+                                },
+                                "functionSelector": "6352211e",
+                                "id": 1484,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "ownerOf",
+                                "nameLocation": "25847:7:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1480,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1479,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "25863:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1484,
+                                            "src": "25855:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1478,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "25855:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "25854:17:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1483,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1482,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1484,
+                                            "src": "25895:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1481,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "25895:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "25894:9:3"
+                                },
+                                "scope": 1551,
+                                "src": "25838:66:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1485,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "25907:163:3",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x60a11672,\n  or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)"
+                                },
+                                "functionSelector": "60a11672",
+                                "id": 1496,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "safeTransferFromWithData",
+                                "nameLocation": "26081:24:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1494,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1487,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "26117:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1496,
+                                            "src": "26109:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1486,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26109:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1489,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "26133:2:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1496,
+                                            "src": "26125:10:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1488,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26125:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1491,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "26147:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1496,
+                                            "src": "26139:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1490,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26139:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1493,
+                                            "mutability": "mutable",
+                                            "name": "data",
+                                            "nameLocation": "26171:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1496,
+                                            "src": "26158:17:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes"
+                                            },
+                                            "typeName": {
+                                                "id": 1492,
+                                                "name": "bytes",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26158:5:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                                    "typeString": "bytes"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "26105:73:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1495,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "26187:0:3"
+                                },
+                                "scope": 1551,
+                                "src": "26072:116:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1497,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "26191:149:3",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x42842e0e,\n  or in textual repr: safeTransferFrom(address,address,uint256)"
+                                },
+                                "functionSelector": "42842e0e",
+                                "id": 1506,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "safeTransferFrom",
+                                "nameLocation": "26351:16:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1504,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1499,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "26379:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1506,
+                                            "src": "26371:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1498,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26371:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1501,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "26395:2:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1506,
+                                            "src": "26387:10:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1500,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26387:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1503,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "26409:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1506,
+                                            "src": "26401:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1502,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "26401:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "26367:52:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1505,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "26428:0:3"
+                                },
+                                "scope": 1551,
+                                "src": "26342:87:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1507,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "26432:682:3",
+                                    "text": "@notice Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE\n  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE\n  THEY MAY BE PERMANENTLY LOST\n @dev Throws unless `msg.sender` is the current owner or an authorized\n  operator for this RFT. Throws if `from` is not the current owner. Throws\n  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.\n  Throws if RFT pieces have multiple owners.\n @param from The current owner of the NFT\n @param to The new owner\n @param tokenId The NFT to transfer\n @dev EVM selector for this function is: 0x23b872dd,\n  or in textual repr: transferFrom(address,address,uint256)"
+                                },
+                                "functionSelector": "23b872dd",
+                                "id": 1516,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "transferFrom",
+                                "nameLocation": "27125:12:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1514,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1509,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "27149:4:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1516,
+                                            "src": "27141:12:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1508,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27141:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1511,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "27165:2:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1516,
+                                            "src": "27157:10:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1510,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27157:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1513,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "27179:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1516,
+                                            "src": "27171:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1512,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27171:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "27137:52:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1515,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "27198:0:3"
+                                },
+                                "scope": 1551,
+                                "src": "27116:83:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1517,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "27202:132:3",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x095ea7b3,\n  or in textual repr: approve(address,uint256)"
+                                },
+                                "functionSelector": "095ea7b3",
+                                "id": 1524,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "approve",
+                                "nameLocation": "27345:7:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1522,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1519,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "27361:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1524,
+                                            "src": "27353:16:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1518,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27353:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1521,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "27379:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1524,
+                                            "src": "27371:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1520,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27371:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "27352:35:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1523,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "27396:0:3"
+                                },
+                                "scope": 1551,
+                                "src": "27336:61:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1525,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "27400:139:3",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0xa22cb465,\n  or in textual repr: setApprovalForAll(address,bool)"
+                                },
+                                "functionSelector": "a22cb465",
+                                "id": 1532,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "setApprovalForAll",
+                                "nameLocation": "27550:17:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1530,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1527,
+                                            "mutability": "mutable",
+                                            "name": "operator",
+                                            "nameLocation": "27576:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1532,
+                                            "src": "27568:16:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1526,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27568:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1529,
+                                            "mutability": "mutable",
+                                            "name": "approved",
+                                            "nameLocation": "27591:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1532,
+                                            "src": "27586:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1528,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27586:4:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "27567:33:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1531,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "27609:0:3"
+                                },
+                                "scope": 1551,
+                                "src": "27541:69:3",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1533,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "27613:128:3",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0x081812fc,\n  or in textual repr: getApproved(uint256)"
+                                },
+                                "functionSelector": "081812fc",
+                                "id": 1540,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "getApproved",
+                                "nameLocation": "27752:11:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1536,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1535,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "27772:7:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1540,
+                                            "src": "27764:15:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1534,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27764:7:3",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "27763:17:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1539,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1538,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1540,
+                                            "src": "27804:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1537,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27804:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "27803:9:3"
+                                },
+                                "scope": 1551,
+                                "src": "27743:70:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1541,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "27816:141:3",
+                                    "text": "@dev Not implemented\n @dev EVM selector for this function is: 0xe985e9c5,\n  or in textual repr: isApprovedForAll(address,address)"
+                                },
+                                "functionSelector": "e985e9c5",
+                                "id": 1550,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "isApprovedForAll",
+                                "nameLocation": "27968:16:3",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1546,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1543,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "27993:5:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1550,
+                                            "src": "27985:13:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1542,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "27985:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1545,
+                                            "mutability": "mutable",
+                                            "name": "operator",
+                                            "nameLocation": "28008:8:3",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1550,
+                                            "src": "28000:16:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1544,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28000:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "27984:33:3"
+                                },
+                                "returnParameters": {
+                                    "id": 1549,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1548,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1550,
+                                            "src": "28041:7:3",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1547,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "28041:7:3",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "28040:9:3"
+                                },
+                                "scope": 1551,
+                                "src": "27959:91:3",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1573,
+                        "src": "24853:3199:3",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1552,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "28085:5:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 934,
+                                    "src": "28085:5:3"
+                                },
+                                "id": 1553,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28085:5:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1554,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "28093:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 944,
+                                    "src": "28093:6:3"
+                                },
+                                "id": 1555,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28093:6:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1556,
+                                    "name": "ERC721",
+                                    "nameLocations": [
+                                        "28102:6:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1551,
+                                    "src": "28102:6:3"
+                                },
+                                "id": 1557,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28102:6:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1558,
+                                    "name": "ERC721Enumerable",
+                                    "nameLocations": [
+                                        "28111:16:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1435,
+                                    "src": "28111:16:3"
+                                },
+                                "id": 1559,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28111:16:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1560,
+                                    "name": "ERC721UniqueExtensions",
+                                    "nameLocations": [
+                                        "28130:22:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1400,
+                                    "src": "28130:22:3"
+                                },
+                                "id": 1561,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28130:22:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1562,
+                                    "name": "ERC721UniqueMintable",
+                                    "nameLocations": [
+                                        "28155:20:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1331,
+                                    "src": "28155:20:3"
+                                },
+                                "id": 1563,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28155:20:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1564,
+                                    "name": "ERC721Burnable",
+                                    "nameLocations": [
+                                        "28178:14:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1289,
+                                    "src": "28178:14:3"
+                                },
+                                "id": 1565,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28178:14:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1566,
+                                    "name": "ERC721Metadata",
+                                    "nameLocations": [
+                                        "28195:14:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1277,
+                                    "src": "28195:14:3"
+                                },
+                                "id": 1567,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28195:14:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1568,
+                                    "name": "Collection",
+                                    "nameLocations": [
+                                        "28212:10:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1248,
+                                    "src": "28212:10:3"
+                                },
+                                "id": 1569,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28212:10:3"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1570,
+                                    "name": "TokenProperties",
+                                    "nameLocations": [
+                                        "28225:15:3"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1000,
+                                    "src": "28225:15:3"
+                                },
+                                "id": 1571,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "28225:15:3"
+                            }
+                        ],
+                        "canonicalName": "UniqueRefungible",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "fullyImplemented": false,
+                        "id": 1572,
+                        "linearizedBaseContracts": [
+                            1572,
+                            1000,
+                            1248,
+                            1277,
+                            1289,
+                            1331,
+                            1293,
+                            1400,
+                            1435,
+                            1551,
+                            1461,
+                            944,
+                            934
+                        ],
+                        "name": "UniqueRefungible",
+                        "nameLocation": "28064:16:3",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [],
+                        "scope": 1573,
+                        "src": "28054:189:3",
+                        "usedErrors": []
+                    }
+                ],
+                "src": "75:28169:3"
+            },
+            "id": 3
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol": {
+            "ast": {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol",
+                "exportedSymbols": {
+                    "Dummy": [
+                        1576
+                    ],
+                    "ERC1633": [
+                        1604
+                    ],
+                    "ERC165": [
+                        1586
+                    ],
+                    "ERC20": [
+                        1728
+                    ],
+                    "ERC20Events": [
+                        1646
+                    ],
+                    "ERC20UniqueExtensions": [
+                        1628
+                    ],
+                    "UniqueRefungibleToken": [
+                        1739
+                    ]
+                },
+                "id": 1740,
+                "license": "OTHER",
+                "nodeType": "SourceUnit",
+                "nodes": [
+                    {
+                        "id": 1574,
+                        "literals": [
+                            "solidity",
+                            ">=",
+                            "0.8",
+                            ".0",
+                            "<",
+                            "0.9",
+                            ".0"
+                        ],
+                        "nodeType": "PragmaDirective",
+                        "src": "75:31:4"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "Dummy",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1575,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "108:29:4",
+                            "text": "@dev common stubs holder"
+                        },
+                        "fullyImplemented": true,
+                        "id": 1576,
+                        "linearizedBaseContracts": [
+                            1576
+                        ],
+                        "name": "Dummy",
+                        "nameLocation": "147:5:4",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [],
+                        "scope": 1740,
+                        "src": "137:20:4",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1577,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "179:5:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1576,
+                                    "src": "179:5:4"
+                                },
+                                "id": 1578,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "179:5:4"
+                            }
+                        ],
+                        "canonicalName": "ERC165",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "fullyImplemented": false,
+                        "id": 1586,
+                        "linearizedBaseContracts": [
+                            1586,
+                            1576
+                        ],
+                        "name": "ERC165",
+                        "nameLocation": "169:6:4",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "functionSelector": "01ffc9a7",
+                                "id": 1585,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "supportsInterface",
+                                "nameLocation": "197:17:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1581,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1580,
+                                            "mutability": "mutable",
+                                            "name": "interfaceID",
+                                            "nameLocation": "222:11:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1585,
+                                            "src": "215:18:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes4",
+                                                "typeString": "bytes4"
+                                            },
+                                            "typeName": {
+                                                "id": 1579,
+                                                "name": "bytes4",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "215:6:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes4",
+                                                    "typeString": "bytes4"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "214:20:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1584,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1583,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1585,
+                                            "src": "258:4:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1582,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "258:4:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "257:6:4"
+                                },
+                                "scope": 1586,
+                                "src": "188:76:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1740,
+                        "src": "159:107:4",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1588,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "354:5:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1576,
+                                    "src": "354:5:4"
+                                },
+                                "id": 1589,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "354:5:4"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1590,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "361:6:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1586,
+                                    "src": "361:6:4"
+                                },
+                                "id": 1591,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "361:6:4"
+                            }
+                        ],
+                        "canonicalName": "ERC1633",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1587,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "268:65:4",
+                            "text": "@dev the ERC-165 identifier for this interface is 0x5755c3f2"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1604,
+                        "linearizedBaseContracts": [
+                            1604,
+                            1586,
+                            1576
+                        ],
+                        "name": "ERC1633",
+                        "nameLocation": "343:7:4",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1592,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "371:95:4",
+                                    "text": "@dev EVM selector for this function is: 0x80a54001,\n  or in textual repr: parentToken()"
+                                },
+                                "functionSelector": "80a54001",
+                                "id": 1597,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "parentToken",
+                                "nameLocation": "477:11:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1593,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "488:2:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1596,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1595,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1597,
+                                            "src": "514:7:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1594,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "514:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "513:9:4"
+                                },
+                                "scope": 1604,
+                                "src": "468:55:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1598,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "526:97:4",
+                                    "text": "@dev EVM selector for this function is: 0xd7f083f3,\n  or in textual repr: parentTokenId()"
+                                },
+                                "functionSelector": "d7f083f3",
+                                "id": 1603,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "parentTokenId",
+                                "nameLocation": "634:13:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1599,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "647:2:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1602,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1601,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1603,
+                                            "src": "673:7:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1600,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "673:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "672:9:4"
+                                },
+                                "scope": 1604,
+                                "src": "625:57:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1740,
+                        "src": "333:351:4",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1606,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "786:5:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1576,
+                                    "src": "786:5:4"
+                                },
+                                "id": 1607,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "786:5:4"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1608,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "793:6:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1586,
+                                    "src": "793:6:4"
+                                },
+                                "id": 1609,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "793:6:4"
+                            }
+                        ],
+                        "canonicalName": "ERC20UniqueExtensions",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1605,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "686:65:4",
+                            "text": "@dev the ERC-165 identifier for this interface is 0xab8deb37"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1628,
+                        "linearizedBaseContracts": [
+                            1628,
+                            1586,
+                            1576
+                        ],
+                        "name": "ERC20UniqueExtensions",
+                        "nameLocation": "761:21:4",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1610,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "803:348:4",
+                                    "text": "@dev Function that burns an amount of the token of a given account,\n deducting from the sender's allowance for said account.\n @param from The account whose tokens will be burnt.\n @param amount The amount that will be burnt.\n @dev EVM selector for this function is: 0x79cc6790,\n  or in textual repr: burnFrom(address,uint256)"
+                                },
+                                "functionSelector": "79cc6790",
+                                "id": 1619,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "burnFrom",
+                                "nameLocation": "1162:8:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1615,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1612,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "1179:4:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1619,
+                                            "src": "1171:12:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1611,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1171:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1614,
+                                            "mutability": "mutable",
+                                            "name": "amount",
+                                            "nameLocation": "1193:6:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1619,
+                                            "src": "1185:14:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1613,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1185:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1170:30:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1618,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1617,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1619,
+                                            "src": "1219:4:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1616,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1219:4:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1218:6:4"
+                                },
+                                "scope": 1628,
+                                "src": "1153:72:4",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1620,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "1228:274:4",
+                                    "text": "@dev Function that changes total amount of the tokens.\n  Throws if `msg.sender` doesn't owns all of the tokens.\n @param amount New total amount of the tokens.\n @dev EVM selector for this function is: 0xd2418ca7,\n  or in textual repr: repartition(uint256)"
+                                },
+                                "functionSelector": "d2418ca7",
+                                "id": 1627,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "repartition",
+                                "nameLocation": "1513:11:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1623,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1622,
+                                            "mutability": "mutable",
+                                            "name": "amount",
+                                            "nameLocation": "1533:6:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1627,
+                                            "src": "1525:14:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1621,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1525:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1524:16:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1626,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1625,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1627,
+                                            "src": "1559:4:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1624,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1559:4:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1558:6:4"
+                                },
+                                "scope": 1628,
+                                "src": "1504:61:4",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1740,
+                        "src": "751:816:4",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "ERC20Events",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1629,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "1569:27:4",
+                            "text": "@dev inlined interface"
+                        },
+                        "fullyImplemented": true,
+                        "id": 1646,
+                        "linearizedBaseContracts": [
+                            1646
+                        ],
+                        "name": "ERC20Events",
+                        "nameLocation": "1606:11:4",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "anonymous": false,
+                                "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
+                                "id": 1637,
+                                "name": "Transfer",
+                                "nameLocation": "1627:8:4",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 1636,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1631,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "1652:4:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1637,
+                                            "src": "1636:20:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1630,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1636:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1633,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "1674:2:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1637,
+                                            "src": "1658:18:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1632,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1658:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1635,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "1686:5:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1637,
+                                            "src": "1678:13:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1634,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1678:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1635:57:4"
+                                },
+                                "src": "1621:72:4"
+                            },
+                            {
+                                "anonymous": false,
+                                "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
+                                "id": 1645,
+                                "name": "Approval",
+                                "nameLocation": "1701:8:4",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 1644,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1639,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "1726:5:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1645,
+                                            "src": "1710:21:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1638,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1710:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1641,
+                                            "indexed": true,
+                                            "mutability": "mutable",
+                                            "name": "spender",
+                                            "nameLocation": "1749:7:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1645,
+                                            "src": "1733:23:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1640,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1733:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1643,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "value",
+                                            "nameLocation": "1766:5:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1645,
+                                            "src": "1758:13:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1642,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1758:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1709:63:4"
+                                },
+                                "src": "1695:78:4"
+                            }
+                        ],
+                        "scope": 1740,
+                        "src": "1596:179:4",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1648,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "2014:5:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1576,
+                                    "src": "2014:5:4"
+                                },
+                                "id": 1649,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "2014:5:4"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1650,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "2021:6:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1586,
+                                    "src": "2021:6:4"
+                                },
+                                "id": 1651,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "2021:6:4"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1652,
+                                    "name": "ERC20Events",
+                                    "nameLocations": [
+                                        "2029:11:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1646,
+                                    "src": "2029:11:4"
+                                },
+                                "id": 1653,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "2029:11:4"
+                            }
+                        ],
+                        "canonicalName": "ERC20",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "documentation": {
+                            "id": 1647,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "1777:218:4",
+                            "text": "@title Standard ERC20 token\n @dev Implementation of the basic standard token.\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\n @dev the ERC-165 identifier for this interface is 0x942e8b22"
+                        },
+                        "fullyImplemented": false,
+                        "id": 1728,
+                        "linearizedBaseContracts": [
+                            1728,
+                            1646,
+                            1586,
+                            1576
+                        ],
+                        "name": "ERC20",
+                        "nameLocation": "2005:5:4",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "documentation": {
+                                    "id": 1654,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2044:124:4",
+                                    "text": "@return the name of the token.\n @dev EVM selector for this function is: 0x06fdde03,\n  or in textual repr: name()"
+                                },
+                                "functionSelector": "06fdde03",
+                                "id": 1659,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "name",
+                                "nameLocation": "2179:4:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1655,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2183:2:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1658,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1657,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1659,
+                                            "src": "2209:13:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1656,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2209:6:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2208:15:4"
+                                },
+                                "scope": 1728,
+                                "src": "2170:54:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1660,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2227:128:4",
+                                    "text": "@return the symbol of the token.\n @dev EVM selector for this function is: 0x95d89b41,\n  or in textual repr: symbol()"
+                                },
+                                "functionSelector": "95d89b41",
+                                "id": 1665,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "symbol",
+                                "nameLocation": "2366:6:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1661,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2372:2:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1664,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1663,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1665,
+                                            "src": "2398:13:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "memory",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_string_memory_ptr",
+                                                "typeString": "string"
+                                            },
+                                            "typeName": {
+                                                "id": 1662,
+                                                "name": "string",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2398:6:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_string_storage_ptr",
+                                                    "typeString": "string"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2397:15:4"
+                                },
+                                "scope": 1728,
+                                "src": "2357:56:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1666,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2416:141:4",
+                                    "text": "@dev Total number of tokens in existence\n @dev EVM selector for this function is: 0x18160ddd,\n  or in textual repr: totalSupply()"
+                                },
+                                "functionSelector": "18160ddd",
+                                "id": 1671,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "totalSupply",
+                                "nameLocation": "2568:11:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1667,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2579:2:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1670,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1669,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1671,
+                                            "src": "2605:7:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1668,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2605:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2604:9:4"
+                                },
+                                "scope": 1728,
+                                "src": "2559:55:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1672,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2617:116:4",
+                                    "text": "@dev Not supported\n @dev EVM selector for this function is: 0x313ce567,\n  or in textual repr: decimals()"
+                                },
+                                "functionSelector": "313ce567",
+                                "id": 1677,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "decimals",
+                                "nameLocation": "2744:8:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1673,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2752:2:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1676,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1675,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1677,
+                                            "src": "2778:5:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint8",
+                                                "typeString": "uint8"
+                                            },
+                                            "typeName": {
+                                                "id": 1674,
+                                                "name": "uint8",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2778:5:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint8",
+                                                    "typeString": "uint8"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2777:7:4"
+                                },
+                                "scope": 1728,
+                                "src": "2735:50:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1678,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2788:285:4",
+                                    "text": "@dev Gets the balance of the specified address.\n @param owner The address to query the balance of.\n @return An uint256 representing the amount owned by the passed address.\n @dev EVM selector for this function is: 0x70a08231,\n  or in textual repr: balanceOf(address)"
+                                },
+                                "functionSelector": "70a08231",
+                                "id": 1685,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "balanceOf",
+                                "nameLocation": "3084:9:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1681,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1680,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "3102:5:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1685,
+                                            "src": "3094:13:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1679,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3094:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3093:15:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1684,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1683,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1685,
+                                            "src": "3132:7:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1682,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3132:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3131:9:4"
+                                },
+                                "scope": 1728,
+                                "src": "3075:66:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1686,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3144:248:4",
+                                    "text": "@dev Transfer token for a specified address\n @param to The address to transfer to.\n @param amount The amount to be transferred.\n @dev EVM selector for this function is: 0xa9059cbb,\n  or in textual repr: transfer(address,uint256)"
+                                },
+                                "functionSelector": "a9059cbb",
+                                "id": 1695,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "transfer",
+                                "nameLocation": "3403:8:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1691,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1688,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "3420:2:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1695,
+                                            "src": "3412:10:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1687,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3412:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1690,
+                                            "mutability": "mutable",
+                                            "name": "amount",
+                                            "nameLocation": "3432:6:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1695,
+                                            "src": "3424:14:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1689,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3424:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3411:28:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1694,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1693,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1695,
+                                            "src": "3458:4:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1692,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3458:4:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3457:6:4"
+                                },
+                                "scope": 1728,
+                                "src": "3394:70:4",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1696,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3467:376:4",
+                                    "text": "@dev Transfer tokens from one address to another\n @param from address The address which you want to send tokens from\n @param to address The address which you want to transfer to\n @param amount uint256 the amount of tokens to be transferred\n @dev EVM selector for this function is: 0x23b872dd,\n  or in textual repr: transferFrom(address,address,uint256)"
+                                },
+                                "functionSelector": "23b872dd",
+                                "id": 1707,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "transferFrom",
+                                "nameLocation": "3854:12:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1703,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1698,
+                                            "mutability": "mutable",
+                                            "name": "from",
+                                            "nameLocation": "3878:4:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1707,
+                                            "src": "3870:12:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1697,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3870:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1700,
+                                            "mutability": "mutable",
+                                            "name": "to",
+                                            "nameLocation": "3894:2:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1707,
+                                            "src": "3886:10:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1699,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3886:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1702,
+                                            "mutability": "mutable",
+                                            "name": "amount",
+                                            "nameLocation": "3908:6:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1707,
+                                            "src": "3900:14:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1701,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3900:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3866:51:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1706,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1705,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1707,
+                                            "src": "3936:4:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1704,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3936:4:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3935:6:4"
+                                },
+                                "scope": 1728,
+                                "src": "3845:97:4",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1708,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "3945:709:4",
+                                    "text": "@dev Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`.\n Beware that changing an allowance with this method brings the risk that someone may use both the old\n and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\n race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n @param spender The address which will spend the funds.\n @param amount The amount of tokens to be spent.\n @dev EVM selector for this function is: 0x095ea7b3,\n  or in textual repr: approve(address,uint256)"
+                                },
+                                "functionSelector": "095ea7b3",
+                                "id": 1717,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "approve",
+                                "nameLocation": "4665:7:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1713,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1710,
+                                            "mutability": "mutable",
+                                            "name": "spender",
+                                            "nameLocation": "4681:7:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1717,
+                                            "src": "4673:15:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1709,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4673:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1712,
+                                            "mutability": "mutable",
+                                            "name": "amount",
+                                            "nameLocation": "4698:6:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1717,
+                                            "src": "4690:14:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1711,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4690:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4672:33:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1716,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1715,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1717,
+                                            "src": "4724:4:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            },
+                                            "typeName": {
+                                                "id": 1714,
+                                                "name": "bool",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4724:4:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "4723:6:4"
+                                },
+                                "scope": 1728,
+                                "src": "4656:74:4",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "documentation": {
+                                    "id": 1718,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "4733:409:4",
+                                    "text": "@dev Function to check the amount of tokens that an owner allowed to a spender.\n @param owner address The address which owns the funds.\n @param spender address The address which will spend the funds.\n @return A uint256 specifying the amount of tokens still available for the spender.\n @dev EVM selector for this function is: 0xdd62ed3e,\n  or in textual repr: allowance(address,address)"
+                                },
+                                "functionSelector": "dd62ed3e",
+                                "id": 1727,
+                                "implemented": false,
+                                "kind": "function",
+                                "modifiers": [],
+                                "name": "allowance",
+                                "nameLocation": "5153:9:4",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1723,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1720,
+                                            "mutability": "mutable",
+                                            "name": "owner",
+                                            "nameLocation": "5171:5:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1727,
+                                            "src": "5163:13:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1719,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5163:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1722,
+                                            "mutability": "mutable",
+                                            "name": "spender",
+                                            "nameLocation": "5186:7:4",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1727,
+                                            "src": "5178:15:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1721,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5178:7:4",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5162:32:4"
+                                },
+                                "returnParameters": {
+                                    "id": 1726,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1725,
+                                            "mutability": "mutable",
+                                            "name": "",
+                                            "nameLocation": "-1:-1:-1",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1727,
+                                            "src": "5218:7:4",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1724,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5218:7:4",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5217:9:4"
+                                },
+                                "scope": 1728,
+                                "src": "5144:83:4",
+                                "stateMutability": "view",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 1740,
+                        "src": "1995:3234:4",
+                        "usedErrors": []
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [
+                            {
+                                "baseName": {
+                                    "id": 1729,
+                                    "name": "Dummy",
+                                    "nameLocations": [
+                                        "5266:5:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1576,
+                                    "src": "5266:5:4"
+                                },
+                                "id": 1730,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "5266:5:4"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1731,
+                                    "name": "ERC165",
+                                    "nameLocations": [
+                                        "5273:6:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1586,
+                                    "src": "5273:6:4"
+                                },
+                                "id": 1732,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "5273:6:4"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1733,
+                                    "name": "ERC20",
+                                    "nameLocations": [
+                                        "5281:5:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1728,
+                                    "src": "5281:5:4"
+                                },
+                                "id": 1734,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "5281:5:4"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1735,
+                                    "name": "ERC20UniqueExtensions",
+                                    "nameLocations": [
+                                        "5288:21:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1628,
+                                    "src": "5288:21:4"
+                                },
+                                "id": 1736,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "5288:21:4"
+                            },
+                            {
+                                "baseName": {
+                                    "id": 1737,
+                                    "name": "ERC1633",
+                                    "nameLocations": [
+                                        "5311:7:4"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1604,
+                                    "src": "5311:7:4"
+                                },
+                                "id": 1738,
+                                "nodeType": "InheritanceSpecifier",
+                                "src": "5311:7:4"
+                            }
+                        ],
+                        "canonicalName": "UniqueRefungibleToken",
+                        "contractDependencies": [],
+                        "contractKind": "interface",
+                        "fullyImplemented": false,
+                        "id": 1739,
+                        "linearizedBaseContracts": [
+                            1739,
+                            1604,
+                            1628,
+                            1728,
+                            1646,
+                            1586,
+                            1576
+                        ],
+                        "name": "UniqueRefungibleToken",
+                        "nameLocation": "5241:21:4",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [],
+                        "scope": 1740,
+                        "src": "5231:90:4",
+                        "usedErrors": []
+                    }
+                ],
+                "src": "75:5247:4"
+            },
+            "id": 4
+        },
+        "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol": {
+            "ast": {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol",
+                "exportedSymbols": {
+                    "Collection": [
+                        1248
+                    ],
+                    "CollectionHelpers": [
+                        99
+                    ],
+                    "ContractHelpers": [
+                        282
+                    ],
+                    "EvmToSubstrate": [
+                        2269
+                    ],
+                    "NftCrossAccountId": [
+                        610
+                    ],
+                    "NftProperty": [
+                        620
+                    ],
+                    "Property": [
+                        1762
+                    ],
+                    "RftCrossAccountId": [
+                        1253
+                    ],
+                    "RftProperties": [
+                        1263
+                    ],
+                    "TokenProperties": [
+                        357
+                    ],
+                    "UniqueNFT": [
+                        930
+                    ],
+                    "UniqueRefungible": [
+                        1572
+                    ],
+                    "UniqueRefungibleToken": [
+                        1739
+                    ]
+                },
+                "id": 2270,
+                "license": "Apache License",
+                "nodeType": "SourceUnit",
+                "nodes": [
+                    {
+                        "id": 1741,
+                        "literals": [
+                            "solidity",
+                            ">=",
+                            "0.8",
+                            ".0"
+                        ],
+                        "nodeType": "PragmaDirective",
+                        "src": "44:24:5"
+                    },
+                    {
+                        "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol",
+                        "file": "../api/CollectionHelpers.sol",
+                        "id": 1743,
+                        "nameLocation": "-1:-1:-1",
+                        "nodeType": "ImportDirective",
+                        "scope": 2270,
+                        "sourceUnit": 100,
+                        "src": "69:63:5",
+                        "symbolAliases": [
+                            {
+                                "foreign": {
+                                    "id": 1742,
+                                    "name": "CollectionHelpers",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 99,
+                                    "src": "77:17:5",
+                                    "typeDescriptions": {}
+                                },
+                                "nameLocation": "-1:-1:-1"
+                            }
+                        ],
+                        "unitAlias": ""
+                    },
+                    {
+                        "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol",
+                        "file": "../api/ContractHelpers.sol",
+                        "id": 1745,
+                        "nameLocation": "-1:-1:-1",
+                        "nodeType": "ImportDirective",
+                        "scope": 2270,
+                        "sourceUnit": 288,
+                        "src": "133:59:5",
+                        "symbolAliases": [
+                            {
+                                "foreign": {
+                                    "id": 1744,
+                                    "name": "ContractHelpers",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 282,
+                                    "src": "141:15:5",
+                                    "typeDescriptions": {}
+                                },
+                                "nameLocation": "-1:-1:-1"
+                            }
+                        ],
+                        "unitAlias": ""
+                    },
+                    {
+                        "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol",
+                        "file": "../api/UniqueRefungibleToken.sol",
+                        "id": 1747,
+                        "nameLocation": "-1:-1:-1",
+                        "nodeType": "ImportDirective",
+                        "scope": 2270,
+                        "sourceUnit": 1740,
+                        "src": "193:71:5",
+                        "symbolAliases": [
+                            {
+                                "foreign": {
+                                    "id": 1746,
+                                    "name": "UniqueRefungibleToken",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 1739,
+                                    "src": "201:21:5",
+                                    "typeDescriptions": {}
+                                },
+                                "nameLocation": "-1:-1:-1"
+                            }
+                        ],
+                        "unitAlias": ""
+                    },
+                    {
+                        "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol",
+                        "file": "../api/UniqueRefungible.sol",
+                        "id": 1752,
+                        "nameLocation": "-1:-1:-1",
+                        "nodeType": "ImportDirective",
+                        "scope": 2270,
+                        "sourceUnit": 1573,
+                        "src": "265:137:5",
+                        "symbolAliases": [
+                            {
+                                "foreign": {
+                                    "id": 1748,
+                                    "name": "UniqueRefungible",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 1572,
+                                    "src": "273:16:5",
+                                    "typeDescriptions": {}
+                                },
+                                "nameLocation": "-1:-1:-1"
+                            },
+                            {
+                                "foreign": {
+                                    "id": 1749,
+                                    "name": "Collection",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 1248,
+                                    "src": "291:10:5",
+                                    "typeDescriptions": {}
+                                },
+                                "nameLocation": "-1:-1:-1"
+                            },
+                            {
+                                "foreign": {
+                                    "id": 1750,
+                                    "name": "EthCrossAccount",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 1253,
+                                    "src": "303:15:5",
+                                    "typeDescriptions": {}
+                                },
+                                "local": "RftCrossAccountId",
+                                "nameLocation": "-1:-1:-1"
+                            },
+                            {
+                                "foreign": {
+                                    "id": 1751,
+                                    "name": "Tuple20",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 1263,
+                                    "src": "341:7:5",
+                                    "typeDescriptions": {}
+                                },
+                                "local": "RftProperties",
+                                "nameLocation": "-1:-1:-1"
+                            }
+                        ],
+                        "unitAlias": ""
+                    },
+                    {
+                        "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol",
+                        "file": "../api/UniqueNFT.sol",
+                        "id": 1757,
+                        "nameLocation": "-1:-1:-1",
+                        "nodeType": "ImportDirective",
+                        "scope": 2270,
+                        "sourceUnit": 931,
+                        "src": "403:126:5",
+                        "symbolAliases": [
+                            {
+                                "foreign": {
+                                    "id": 1753,
+                                    "name": "UniqueNFT",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 930,
+                                    "src": "411:9:5",
+                                    "typeDescriptions": {}
+                                },
+                                "nameLocation": "-1:-1:-1"
+                            },
+                            {
+                                "foreign": {
+                                    "id": 1754,
+                                    "name": "EthCrossAccount",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 610,
+                                    "src": "422:15:5",
+                                    "typeDescriptions": {}
+                                },
+                                "local": "NftCrossAccountId",
+                                "nameLocation": "-1:-1:-1"
+                            },
+                            {
+                                "foreign": {
+                                    "id": 1755,
+                                    "name": "Tuple21",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 620,
+                                    "src": "460:7:5",
+                                    "typeDescriptions": {}
+                                },
+                                "local": "NftProperty",
+                                "nameLocation": "-1:-1:-1"
+                            },
+                            {
+                                "foreign": {
+                                    "id": 1756,
+                                    "name": "TokenProperties",
+                                    "nodeType": "Identifier",
+                                    "overloadedDeclarations": [],
+                                    "referencedDeclaration": 357,
+                                    "src": "484:15:5",
+                                    "typeDescriptions": {}
+                                },
+                                "nameLocation": "-1:-1:-1"
+                            }
+                        ],
+                        "unitAlias": ""
+                    },
+                    {
+                        "canonicalName": "Property",
+                        "id": 1762,
+                        "members": [
+                            {
+                                "constant": false,
+                                "id": 1759,
+                                "mutability": "mutable",
+                                "name": "key",
+                                "nameLocation": "557:3:5",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1762,
+                                "src": "550:10:5",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_string_storage_ptr",
+                                    "typeString": "string"
+                                },
+                                "typeName": {
+                                    "id": 1758,
+                                    "name": "string",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "550:6:5",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_string_storage_ptr",
+                                        "typeString": "string"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": false,
+                                "id": 1761,
+                                "mutability": "mutable",
+                                "name": "value",
+                                "nameLocation": "569:5:5",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 1762,
+                                "src": "563:11:5",
+                                "stateVariable": false,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_bytes_storage_ptr",
+                                    "typeString": "bytes"
+                                },
+                                "typeName": {
+                                    "id": 1760,
+                                    "name": "bytes",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "563:5:5",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes_storage_ptr",
+                                        "typeString": "bytes"
+                                    }
+                                },
+                                "visibility": "internal"
+                            }
+                        ],
+                        "name": "Property",
+                        "nameLocation": "538:8:5",
+                        "nodeType": "StructDefinition",
+                        "scope": 2270,
+                        "src": "531:46:5",
+                        "visibility": "public"
+                    },
+                    {
+                        "abstract": false,
+                        "baseContracts": [],
+                        "canonicalName": "EvmToSubstrate",
+                        "contractDependencies": [],
+                        "contractKind": "contract",
+                        "fullyImplemented": true,
+                        "id": 2269,
+                        "linearizedBaseContracts": [
+                            2269
+                        ],
+                        "name": "EvmToSubstrate",
+                        "nameLocation": "682:14:5",
+                        "nodeType": "ContractDefinition",
+                        "nodes": [
+                            {
+                                "constant": true,
+                                "id": 1770,
+                                "mutability": "constant",
+                                "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                "nameLocation": "717:26:5",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 2269,
+                                "src": "700:76:5",
+                                "stateVariable": true,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_bytes32",
+                                    "typeString": "bytes32"
+                                },
+                                "typeName": {
+                                    "id": 1763,
+                                    "name": "bytes32",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "700:7:5",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes32",
+                                        "typeString": "bytes32"
+                                    }
+                                },
+                                "value": {
+                                    "arguments": [
+                                        {
+                                            "arguments": [
+                                                {
+                                                    "hexValue": "526546756e6769626c65",
+                                                    "id": 1767,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "kind": "string",
+                                                    "lValueRequested": false,
+                                                    "nodeType": "Literal",
+                                                    "src": "762:12:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_stringliteral_cdb72fd4e1d0d6d4eebd7ab142113ec2b4b06ddb24324db5c287ef01ab484d6b",
+                                                        "typeString": "literal_string \"ReFungible\""
+                                                    },
+                                                    "value": "ReFungible"
+                                                }
+                                            ],
+                                            "expression": {
+                                                "argumentTypes": [
+                                                    {
+                                                        "typeIdentifier": "t_stringliteral_cdb72fd4e1d0d6d4eebd7ab142113ec2b4b06ddb24324db5c287ef01ab484d6b",
+                                                        "typeString": "literal_string \"ReFungible\""
+                                                    }
+                                                ],
+                                                "id": 1766,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "lValueRequested": false,
+                                                "nodeType": "ElementaryTypeNameExpression",
+                                                "src": "756:5:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                    "typeString": "type(bytes storage pointer)"
+                                                },
+                                                "typeName": {
+                                                    "id": 1765,
+                                                    "name": "bytes",
+                                                    "nodeType": "ElementaryTypeName",
+                                                    "src": "756:5:5",
+                                                    "typeDescriptions": {}
+                                                }
+                                            },
+                                            "id": 1768,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": true,
+                                            "kind": "typeConversion",
+                                            "lValueRequested": false,
+                                            "nameLocations": [],
+                                            "names": [],
+                                            "nodeType": "FunctionCall",
+                                            "src": "756:19:5",
+                                            "tryCall": false,
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes memory"
+                                            }
+                                        }
+                                    ],
+                                    "expression": {
+                                        "argumentTypes": [
+                                            {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes memory"
+                                            }
+                                        ],
+                                        "id": 1764,
+                                        "name": "keccak256",
+                                        "nodeType": "Identifier",
+                                        "overloadedDeclarations": [],
+                                        "referencedDeclaration": 4294967288,
+                                        "src": "746:9:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                            "typeString": "function (bytes memory) pure returns (bytes32)"
+                                        }
+                                    },
+                                    "id": 1769,
+                                    "isConstant": false,
+                                    "isLValue": false,
+                                    "isPure": true,
+                                    "kind": "functionCall",
+                                    "lValueRequested": false,
+                                    "nameLocations": [],
+                                    "names": [],
+                                    "nodeType": "FunctionCall",
+                                    "src": "746:30:5",
+                                    "tryCall": false,
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes32",
+                                        "typeString": "bytes32"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "constant": true,
+                                "id": 1778,
+                                "mutability": "constant",
+                                "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                "nameLocation": "796:27:5",
+                                "nodeType": "VariableDeclaration",
+                                "scope": 2269,
+                                "src": "779:70:5",
+                                "stateVariable": true,
+                                "storageLocation": "default",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_bytes32",
+                                    "typeString": "bytes32"
+                                },
+                                "typeName": {
+                                    "id": 1771,
+                                    "name": "bytes32",
+                                    "nodeType": "ElementaryTypeName",
+                                    "src": "779:7:5",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes32",
+                                        "typeString": "bytes32"
+                                    }
+                                },
+                                "value": {
+                                    "arguments": [
+                                        {
+                                            "arguments": [
+                                                {
+                                                    "hexValue": "4e4654",
+                                                    "id": 1775,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "kind": "string",
+                                                    "lValueRequested": false,
+                                                    "nodeType": "Literal",
+                                                    "src": "842:5:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_stringliteral_9c4138cd0a1311e4748f70d0fe3dc55f0f5f75e0f20db731225cbc3b8914016a",
+                                                        "typeString": "literal_string \"NFT\""
+                                                    },
+                                                    "value": "NFT"
+                                                }
+                                            ],
+                                            "expression": {
+                                                "argumentTypes": [
+                                                    {
+                                                        "typeIdentifier": "t_stringliteral_9c4138cd0a1311e4748f70d0fe3dc55f0f5f75e0f20db731225cbc3b8914016a",
+                                                        "typeString": "literal_string \"NFT\""
+                                                    }
+                                                ],
+                                                "id": 1774,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "lValueRequested": false,
+                                                "nodeType": "ElementaryTypeNameExpression",
+                                                "src": "836:5:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                    "typeString": "type(bytes storage pointer)"
+                                                },
+                                                "typeName": {
+                                                    "id": 1773,
+                                                    "name": "bytes",
+                                                    "nodeType": "ElementaryTypeName",
+                                                    "src": "836:5:5",
+                                                    "typeDescriptions": {}
+                                                }
+                                            },
+                                            "id": 1776,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": true,
+                                            "kind": "typeConversion",
+                                            "lValueRequested": false,
+                                            "nameLocations": [],
+                                            "names": [],
+                                            "nodeType": "FunctionCall",
+                                            "src": "836:12:5",
+                                            "tryCall": false,
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes memory"
+                                            }
+                                        }
+                                    ],
+                                    "expression": {
+                                        "argumentTypes": [
+                                            {
+                                                "typeIdentifier": "t_bytes_memory_ptr",
+                                                "typeString": "bytes memory"
+                                            }
+                                        ],
+                                        "id": 1772,
+                                        "name": "keccak256",
+                                        "nodeType": "Identifier",
+                                        "overloadedDeclarations": [],
+                                        "referencedDeclaration": 4294967288,
+                                        "src": "826:9:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                            "typeString": "function (bytes memory) pure returns (bytes32)"
+                                        }
+                                    },
+                                    "id": 1777,
+                                    "isConstant": false,
+                                    "isLValue": false,
+                                    "isPure": true,
+                                    "kind": "functionCall",
+                                    "lValueRequested": false,
+                                    "nameLocations": [],
+                                    "names": [],
+                                    "nodeType": "FunctionCall",
+                                    "src": "826:23:5",
+                                    "tryCall": false,
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes32",
+                                        "typeString": "bytes32"
+                                    }
+                                },
+                                "visibility": "internal"
+                            },
+                            {
+                                "body": {
+                                    "id": 1799,
+                                    "nodeType": "Block",
+                                    "src": "1159:889:5",
+                                    "statements": [
+                                        {
+                                            "assignments": [
+                                                1784
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 1784,
+                                                    "mutability": "mutable",
+                                                    "name": "commonContract",
+                                                    "nameLocation": "1174:14:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 1799,
+                                                    "src": "1163:25:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_contract$_Collection_$1248",
+                                                        "typeString": "contract Collection"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1783,
+                                                        "nodeType": "UserDefinedTypeName",
+                                                        "pathNode": {
+                                                            "id": 1782,
+                                                            "name": "Collection",
+                                                            "nameLocations": [
+                                                                "1163:10:5"
+                                                            ],
+                                                            "nodeType": "IdentifierPath",
+                                                            "referencedDeclaration": 1248,
+                                                            "src": "1163:10:5"
+                                                        },
+                                                        "referencedDeclaration": 1248,
+                                                        "src": "1163:10:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                                            "typeString": "contract Collection"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 1788,
+                                            "initialValue": {
+                                                "arguments": [
+                                                    {
+                                                        "id": 1786,
+                                                        "name": "_collection",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1780,
+                                                        "src": "1202:11:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    ],
+                                                    "id": 1785,
+                                                    "name": "Collection",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1248,
+                                                    "src": "1191:10:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_contract$_Collection_$1248_$",
+                                                        "typeString": "type(contract Collection)"
+                                                    }
+                                                },
+                                                "id": 1787,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "1191:23:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "1163:51:5"
+                                        },
+                                        {
+                                            "expression": {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [
+                                                            {
+                                                                "expression": {
+                                                                    "id": 1792,
+                                                                    "name": "msg",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 4294967281,
+                                                                    "src": "1256:3:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_magic_message",
+                                                                        "typeString": "msg"
+                                                                    }
+                                                                },
+                                                                "id": 1793,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "1260:6:5",
+                                                                "memberName": "sender",
+                                                                "nodeType": "MemberAccess",
+                                                                "src": "1256:10:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 1790,
+                                                                "name": "commonContract",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1784,
+                                                                "src": "1226:14:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                                    "typeString": "contract Collection"
+                                                                }
+                                                            },
+                                                            "id": 1791,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "1241:14:5",
+                                                            "memberName": "isOwnerOrAdmin",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1204,
+                                                            "src": "1226:29:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
+                                                                "typeString": "function (address) view external returns (bool)"
+                                                            }
+                                                        },
+                                                        "id": 1794,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "1226:41:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        }
+                                                    },
+                                                    {
+                                                        "hexValue": "4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2063616c6c2074686973206d6574686f64",
+                                                        "id": 1795,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "string",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "1269:50:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3",
+                                                            "typeString": "literal_string \"Only collection admin/owner can call this method\""
+                                                        },
+                                                        "value": "Only collection admin/owner can call this method"
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3",
+                                                            "typeString": "literal_string \"Only collection admin/owner can call this method\""
+                                                        }
+                                                    ],
+                                                    "id": 1789,
+                                                    "name": "require",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [
+                                                        4294967278,
+                                                        4294967278
+                                                    ],
+                                                    "referencedDeclaration": 4294967278,
+                                                    "src": "1218:7:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+                                                        "typeString": "function (bool,string memory) pure"
+                                                    }
+                                                },
+                                                "id": 1796,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "1218:102:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_tuple$__$",
+                                                    "typeString": "tuple()"
+                                                }
+                                            },
+                                            "id": 1797,
+                                            "nodeType": "ExpressionStatement",
+                                            "src": "1218:102:5"
+                                        },
+                                        {
+                                            "id": 1798,
+                                            "nodeType": "PlaceholderStatement",
+                                            "src": "2043:1:5"
+                                        }
+                                    ]
+                                },
+                                "id": 1800,
+                                "name": "checkRestrictions",
+                                "nameLocation": "1120:17:5",
+                                "nodeType": "ModifierDefinition",
+                                "parameters": {
+                                    "id": 1781,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1780,
+                                            "mutability": "mutable",
+                                            "name": "_collection",
+                                            "nameLocation": "1146:11:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1800,
+                                            "src": "1138:19:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1779,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "1138:7:5",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "1137:21:5"
+                                },
+                                "src": "1111:937:5",
+                                "virtual": false,
+                                "visibility": "internal"
+                            },
+                            {
+                                "anonymous": false,
+                                "documentation": {
+                                    "id": 1801,
+                                    "nodeType": "StructuredDocumentation",
+                                    "src": "2051:69:5",
+                                    "text": "@dev This emits when a mint to a substrate address has been made."
+                                },
+                                "eventSelector": "fb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb7535",
+                                "id": 1811,
+                                "name": "MintToSub",
+                                "nameLocation": "2128:9:5",
+                                "nodeType": "EventDefinition",
+                                "parameters": {
+                                    "id": 1810,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1803,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "_toEth",
+                                            "nameLocation": "2146:6:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1811,
+                                            "src": "2138:14:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1802,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2138:7:5",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1805,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "_toSub",
+                                            "nameLocation": "2162:6:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1811,
+                                            "src": "2154:14:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1804,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2154:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1807,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "_collection",
+                                            "nameLocation": "2178:11:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1811,
+                                            "src": "2170:19:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1806,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2170:7:5",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1809,
+                                            "indexed": false,
+                                            "mutability": "mutable",
+                                            "name": "_tokenId",
+                                            "nameLocation": "2199:8:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1811,
+                                            "src": "2191:16:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1808,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2191:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2137:71:5"
+                                },
+                                "src": "2122:87:5"
+                            },
+                            {
+                                "body": {
+                                    "id": 1941,
+                                    "nodeType": "Block",
+                                    "src": "2326:1359:5",
+                                    "statements": [
+                                        {
+                                            "assignments": [
+                                                1823
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 1823,
+                                                    "mutability": "mutable",
+                                                    "name": "commonContract",
+                                                    "nameLocation": "2487:14:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 1941,
+                                                    "src": "2476:25:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_contract$_Collection_$1248",
+                                                        "typeString": "contract Collection"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1822,
+                                                        "nodeType": "UserDefinedTypeName",
+                                                        "pathNode": {
+                                                            "id": 1821,
+                                                            "name": "Collection",
+                                                            "nameLocations": [
+                                                                "2476:10:5"
+                                                            ],
+                                                            "nodeType": "IdentifierPath",
+                                                            "referencedDeclaration": 1248,
+                                                            "src": "2476:10:5"
+                                                        },
+                                                        "referencedDeclaration": 1248,
+                                                        "src": "2476:10:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                                            "typeString": "contract Collection"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 1827,
+                                            "initialValue": {
+                                                "arguments": [
+                                                    {
+                                                        "id": 1825,
+                                                        "name": "_collection",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1813,
+                                                        "src": "2515:11:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    ],
+                                                    "id": 1824,
+                                                    "name": "Collection",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1248,
+                                                    "src": "2504:10:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_contract$_Collection_$1248_$",
+                                                        "typeString": "type(contract Collection)"
+                                                    }
+                                                },
+                                                "id": 1826,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "2504:23:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "2476:51:5"
+                                        },
+                                        {
+                                            "assignments": [
+                                                1829
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 1829,
+                                                    "mutability": "mutable",
+                                                    "name": "collectionType",
+                                                    "nameLocation": "2539:14:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 1941,
+                                                    "src": "2531:22:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1828,
+                                                        "name": "bytes32",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "2531:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 1838,
+                                            "initialValue": {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [],
+                                                                "expression": {
+                                                                    "argumentTypes": [],
+                                                                    "expression": {
+                                                                        "id": 1833,
+                                                                        "name": "commonContract",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1823,
+                                                                        "src": "2572:14:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                                                            "typeString": "contract Collection"
+                                                                        }
+                                                                    },
+                                                                    "id": 1834,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "2587:20:5",
+                                                                    "memberName": "uniqueCollectionType",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 1219,
+                                                                    "src": "2572:35:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
+                                                                        "typeString": "function () view external returns (string memory)"
+                                                                    }
+                                                                },
+                                                                "id": 1835,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "2572:37:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_string_memory_ptr",
+                                                                    "typeString": "string memory"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_string_memory_ptr",
+                                                                    "typeString": "string memory"
+                                                                }
+                                                            ],
+                                                            "id": 1832,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "lValueRequested": false,
+                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                            "src": "2566:5:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                                "typeString": "type(bytes storage pointer)"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 1831,
+                                                                "name": "bytes",
+                                                                "nodeType": "ElementaryTypeName",
+                                                                "src": "2566:5:5",
+                                                                "typeDescriptions": {}
+                                                            }
+                                                        },
+                                                        "id": 1836,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "2566:44:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes_memory_ptr",
+                                                            "typeString": "bytes memory"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_bytes_memory_ptr",
+                                                            "typeString": "bytes memory"
+                                                        }
+                                                    ],
+                                                    "id": 1830,
+                                                    "name": "keccak256",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 4294967288,
+                                                    "src": "2556:9:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
+                                                    }
+                                                },
+                                                "id": 1837,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "2556:55:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "2531:80:5"
+                                        },
+                                        {
+                                            "assignments": [
+                                                1840
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 1840,
+                                                    "mutability": "mutable",
+                                                    "name": "tokenId",
+                                                    "nameLocation": "2623:7:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 1941,
+                                                    "src": "2615:15:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1839,
+                                                        "name": "uint256",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "2615:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 1841,
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "2615:15:5"
+                                        },
+                                        {
+                                            "condition": {
+                                                "commonType": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                },
+                                                "id": 1844,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "lValueRequested": false,
+                                                "leftExpression": {
+                                                    "id": 1842,
+                                                    "name": "collectionType",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1829,
+                                                    "src": "2639:14:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    }
+                                                },
+                                                "nodeType": "BinaryOperation",
+                                                "operator": "==",
+                                                "rightExpression": {
+                                                    "id": 1843,
+                                                    "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1770,
+                                                    "src": "2657:26:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    }
+                                                },
+                                                "src": "2639:44:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "falseBody": {
+                                                "condition": {
+                                                    "commonType": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    },
+                                                    "id": 1885,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftExpression": {
+                                                        "id": 1883,
+                                                        "name": "collectionType",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1829,
+                                                        "src": "2970:14:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "nodeType": "BinaryOperation",
+                                                    "operator": "==",
+                                                    "rightExpression": {
+                                                        "id": 1884,
+                                                        "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1778,
+                                                        "src": "2988:27:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "src": "2970:45:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bool",
+                                                        "typeString": "bool"
+                                                    }
+                                                },
+                                                "falseBody": {
+                                                    "id": 1928,
+                                                    "nodeType": "Block",
+                                                    "src": "3325:69:5",
+                                                    "statements": [
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c792077697468204e4654206f7220524654",
+                                                                        "id": 1925,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "string",
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "Literal",
+                                                                        "src": "3337:51:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                            "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                        },
+                                                                        "value": "Wrong collection type. Works only with NFT or RFT"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                            "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                        }
+                                                                    ],
+                                                                    "id": 1924,
+                                                                    "name": "revert",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [
+                                                                        4294967277,
+                                                                        4294967277
+                                                                    ],
+                                                                    "referencedDeclaration": 4294967277,
+                                                                    "src": "3330:6:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+                                                                        "typeString": "function (string memory) pure"
+                                                                    }
+                                                                },
+                                                                "id": 1926,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "3330:59:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 1927,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "3330:59:5"
+                                                        }
+                                                    ]
+                                                },
+                                                "id": 1929,
+                                                "nodeType": "IfStatement",
+                                                "src": "2966:428:5",
+                                                "trueBody": {
+                                                    "id": 1923,
+                                                    "nodeType": "Block",
+                                                    "src": "3017:302:5",
+                                                    "statements": [
+                                                        {
+                                                            "assignments": [
+                                                                1888
+                                                            ],
+                                                            "declarations": [
+                                                                {
+                                                                    "constant": false,
+                                                                    "id": 1888,
+                                                                    "mutability": "mutable",
+                                                                    "name": "nftCollection",
+                                                                    "nameLocation": "3032:13:5",
+                                                                    "nodeType": "VariableDeclaration",
+                                                                    "scope": 1923,
+                                                                    "src": "3022:23:5",
+                                                                    "stateVariable": false,
+                                                                    "storageLocation": "default",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                        "typeString": "contract UniqueNFT"
+                                                                    },
+                                                                    "typeName": {
+                                                                        "id": 1887,
+                                                                        "nodeType": "UserDefinedTypeName",
+                                                                        "pathNode": {
+                                                                            "id": 1886,
+                                                                            "name": "UniqueNFT",
+                                                                            "nameLocations": [
+                                                                                "3022:9:5"
+                                                                            ],
+                                                                            "nodeType": "IdentifierPath",
+                                                                            "referencedDeclaration": 930,
+                                                                            "src": "3022:9:5"
+                                                                        },
+                                                                        "referencedDeclaration": 930,
+                                                                        "src": "3022:9:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                            "typeString": "contract UniqueNFT"
+                                                                        }
+                                                                    },
+                                                                    "visibility": "internal"
+                                                                }
+                                                            ],
+                                                            "id": 1892,
+                                                            "initialValue": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 1890,
+                                                                        "name": "_collection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1813,
+                                                                        "src": "3058:11:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    ],
+                                                                    "id": 1889,
+                                                                    "name": "UniqueNFT",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 930,
+                                                                    "src": "3048:9:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_contract$_UniqueNFT_$930_$",
+                                                                        "typeString": "type(contract UniqueNFT)"
+                                                                    }
+                                                                },
+                                                                "id": 1891,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "typeConversion",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "3048:22:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "nodeType": "VariableDeclarationStatement",
+                                                            "src": "3022:48:5"
+                                                        },
+                                                        {
+                                                            "expression": {
+                                                                "id": 1901,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "leftHandSide": {
+                                                                    "id": 1893,
+                                                                    "name": "tokenId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1840,
+                                                                    "src": "3120:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "nodeType": "Assignment",
+                                                                "operator": "=",
+                                                                "rightHandSide": {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "id": 1898,
+                                                                                    "name": "this",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 4294967268,
+                                                                                    "src": "3157:4:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                        "typeString": "contract EvmToSubstrate"
+                                                                                    }
+                                                                                }
+                                                                            ],
+                                                                            "expression": {
+                                                                                "argumentTypes": [
+                                                                                    {
+                                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                        "typeString": "contract EvmToSubstrate"
+                                                                                    }
+                                                                                ],
+                                                                                "id": 1897,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                                "src": "3149:7:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                                    "typeString": "type(address)"
+                                                                                },
+                                                                                "typeName": {
+                                                                                    "id": 1896,
+                                                                                    "name": "address",
+                                                                                    "nodeType": "ElementaryTypeName",
+                                                                                    "src": "3149:7:5",
+                                                                                    "typeDescriptions": {}
+                                                                                }
+                                                                            },
+                                                                            "id": 1899,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "kind": "typeConversion",
+                                                                            "lValueRequested": false,
+                                                                            "nameLocations": [],
+                                                                            "names": [],
+                                                                            "nodeType": "FunctionCall",
+                                                                            "src": "3149:13:5",
+                                                                            "tryCall": false,
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "id": 1894,
+                                                                            "name": "nftCollection",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 1888,
+                                                                            "src": "3130:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                                "typeString": "contract UniqueNFT"
+                                                                            }
+                                                                        },
+                                                                        "id": 1895,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "3144:4:5",
+                                                                        "memberName": "mint",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 671,
+                                                                        "src": "3130:18:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                            "typeString": "function (address) external returns (uint256)"
+                                                                        }
+                                                                    },
+                                                                    "id": 1900,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "functionCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "3130:33:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "src": "3120:43:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "id": 1902,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "3120:43:5"
+                                                        },
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "id": 1909,
+                                                                                        "name": "this",
+                                                                                        "nodeType": "Identifier",
+                                                                                        "overloadedDeclarations": [],
+                                                                                        "referencedDeclaration": 4294967268,
+                                                                                        "src": "3232:4:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                            "typeString": "contract EvmToSubstrate"
+                                                                                        }
+                                                                                    }
+                                                                                ],
+                                                                                "expression": {
+                                                                                    "argumentTypes": [
+                                                                                        {
+                                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                            "typeString": "contract EvmToSubstrate"
+                                                                                        }
+                                                                                    ],
+                                                                                    "id": 1908,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": true,
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                                    "src": "3224:7:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                                        "typeString": "type(address)"
+                                                                                    },
+                                                                                    "typeName": {
+                                                                                        "id": 1907,
+                                                                                        "name": "address",
+                                                                                        "nodeType": "ElementaryTypeName",
+                                                                                        "src": "3224:7:5",
+                                                                                        "typeDescriptions": {}
+                                                                                    }
+                                                                                },
+                                                                                "id": 1910,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "kind": "typeConversion",
+                                                                                "lValueRequested": false,
+                                                                                "nameLocations": [],
+                                                                                "names": [],
+                                                                                "nodeType": "FunctionCall",
+                                                                                "src": "3224:13:5",
+                                                                                "tryCall": false,
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                }
+                                                                            },
+                                                                            {
+                                                                                "hexValue": "30",
+                                                                                "id": 1911,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "number",
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "Literal",
+                                                                                "src": "3239:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                },
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                },
+                                                                                {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                }
+                                                                            ],
+                                                                            "id": 1906,
+                                                                            "name": "NftCrossAccountId",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 610,
+                                                                            "src": "3206:17:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                                "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                            }
+                                                                        },
+                                                                        "id": 1912,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "structConstructorCall",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "3206:35:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "hexValue": "30",
+                                                                                        "id": 1916,
+                                                                                        "isConstant": false,
+                                                                                        "isLValue": false,
+                                                                                        "isPure": true,
+                                                                                        "kind": "number",
+                                                                                        "lValueRequested": false,
+                                                                                        "nodeType": "Literal",
+                                                                                        "src": "3273:1:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                                            "typeString": "int_const 0"
+                                                                                        },
+                                                                                        "value": "0"
+                                                                                    }
+                                                                                ],
+                                                                                "expression": {
+                                                                                    "argumentTypes": [
+                                                                                        {
+                                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                                            "typeString": "int_const 0"
+                                                                                        }
+                                                                                    ],
+                                                                                    "id": 1915,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": true,
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                                    "src": "3265:7:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                                        "typeString": "type(address)"
+                                                                                    },
+                                                                                    "typeName": {
+                                                                                        "id": 1914,
+                                                                                        "name": "address",
+                                                                                        "nodeType": "ElementaryTypeName",
+                                                                                        "src": "3265:7:5",
+                                                                                        "typeDescriptions": {}
+                                                                                    }
+                                                                                },
+                                                                                "id": 1917,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "typeConversion",
+                                                                                "lValueRequested": false,
+                                                                                "nameLocations": [],
+                                                                                "names": [],
+                                                                                "nodeType": "FunctionCall",
+                                                                                "src": "3265:10:5",
+                                                                                "tryCall": false,
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                }
+                                                                            },
+                                                                            {
+                                                                                "id": 1918,
+                                                                                "name": "_substrateReceiver",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1815,
+                                                                                "src": "3277:18:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                },
+                                                                                {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            ],
+                                                                            "id": 1913,
+                                                                            "name": "NftCrossAccountId",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 610,
+                                                                            "src": "3247:17:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                                "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                            }
+                                                                        },
+                                                                        "id": 1919,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "structConstructorCall",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "3247:49:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 1920,
+                                                                        "name": "tokenId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1840,
+                                                                        "src": "3302:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "id": 1903,
+                                                                        "name": "nftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1888,
+                                                                        "src": "3169:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                            "typeString": "contract UniqueNFT"
+                                                                        }
+                                                                    },
+                                                                    "id": 1905,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "3183:17:5",
+                                                                    "memberName": "transferFromCross",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 734,
+                                                                    "src": "3169:31:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_uint256_$returns$__$",
+                                                                        "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                                    }
+                                                                },
+                                                                "id": 1921,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "3169:145:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 1922,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "3169:145:5"
+                                                        }
+                                                    ]
+                                                }
+                                            },
+                                            "id": 1930,
+                                            "nodeType": "IfStatement",
+                                            "src": "2635:759:5",
+                                            "trueBody": {
+                                                "id": 1882,
+                                                "nodeType": "Block",
+                                                "src": "2685:275:5",
+                                                "statements": [
+                                                    {
+                                                        "assignments": [
+                                                            1847
+                                                        ],
+                                                        "declarations": [
+                                                            {
+                                                                "constant": false,
+                                                                "id": 1847,
+                                                                "mutability": "mutable",
+                                                                "name": "rftCollection",
+                                                                "nameLocation": "2707:13:5",
+                                                                "nodeType": "VariableDeclaration",
+                                                                "scope": 1882,
+                                                                "src": "2690:30:5",
+                                                                "stateVariable": false,
+                                                                "storageLocation": "default",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                    "typeString": "contract UniqueRefungible"
+                                                                },
+                                                                "typeName": {
+                                                                    "id": 1846,
+                                                                    "nodeType": "UserDefinedTypeName",
+                                                                    "pathNode": {
+                                                                        "id": 1845,
+                                                                        "name": "UniqueRefungible",
+                                                                        "nameLocations": [
+                                                                            "2690:16:5"
+                                                                        ],
+                                                                        "nodeType": "IdentifierPath",
+                                                                        "referencedDeclaration": 1572,
+                                                                        "src": "2690:16:5"
+                                                                    },
+                                                                    "referencedDeclaration": 1572,
+                                                                    "src": "2690:16:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                        "typeString": "contract UniqueRefungible"
+                                                                    }
+                                                                },
+                                                                "visibility": "internal"
+                                                            }
+                                                        ],
+                                                        "id": 1851,
+                                                        "initialValue": {
+                                                            "arguments": [
+                                                                {
+                                                                    "id": 1849,
+                                                                    "name": "_collection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1813,
+                                                                    "src": "2740:11:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                ],
+                                                                "id": 1848,
+                                                                "name": "UniqueRefungible",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1572,
+                                                                "src": "2723:16:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_contract$_UniqueRefungible_$1572_$",
+                                                                    "typeString": "type(contract UniqueRefungible)"
+                                                                }
+                                                            },
+                                                            "id": 1850,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "typeConversion",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "2723:29:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "nodeType": "VariableDeclarationStatement",
+                                                        "src": "2690:62:5"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "id": 1860,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "leftHandSide": {
+                                                                "id": 1852,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1840,
+                                                                "src": "2761:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "nodeType": "Assignment",
+                                                            "operator": "=",
+                                                            "rightHandSide": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "id": 1857,
+                                                                                "name": "this",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 4294967268,
+                                                                                "src": "2798:4:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            ],
+                                                                            "id": 1856,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "2790:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 1855,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "2790:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 1858,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "2790:13:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "id": 1853,
+                                                                        "name": "rftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1847,
+                                                                        "src": "2771:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                            "typeString": "contract UniqueRefungible"
+                                                                        }
+                                                                    },
+                                                                    "id": 1854,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "2785:4:5",
+                                                                    "memberName": "mint",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 1314,
+                                                                    "src": "2771:18:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                        "typeString": "function (address) external returns (uint256)"
+                                                                    }
+                                                                },
+                                                                "id": 1859,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "2771:33:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "src": "2761:43:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "id": 1861,
+                                                        "nodeType": "ExpressionStatement",
+                                                        "src": "2761:43:5"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "id": 1868,
+                                                                                    "name": "this",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 4294967268,
+                                                                                    "src": "2873:4:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                        "typeString": "contract EvmToSubstrate"
+                                                                                    }
+                                                                                }
+                                                                            ],
+                                                                            "expression": {
+                                                                                "argumentTypes": [
+                                                                                    {
+                                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                        "typeString": "contract EvmToSubstrate"
+                                                                                    }
+                                                                                ],
+                                                                                "id": 1867,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                                "src": "2865:7:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                                    "typeString": "type(address)"
+                                                                                },
+                                                                                "typeName": {
+                                                                                    "id": 1866,
+                                                                                    "name": "address",
+                                                                                    "nodeType": "ElementaryTypeName",
+                                                                                    "src": "2865:7:5",
+                                                                                    "typeDescriptions": {}
+                                                                                }
+                                                                            },
+                                                                            "id": 1869,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "kind": "typeConversion",
+                                                                            "lValueRequested": false,
+                                                                            "nameLocations": [],
+                                                                            "names": [],
+                                                                            "nodeType": "FunctionCall",
+                                                                            "src": "2865:13:5",
+                                                                            "tryCall": false,
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            }
+                                                                        },
+                                                                        {
+                                                                            "hexValue": "30",
+                                                                            "id": 1870,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "kind": "number",
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "Literal",
+                                                                            "src": "2880:1:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            },
+                                                                            "value": "0"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            },
+                                                                            {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1865,
+                                                                        "name": "RftCrossAccountId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1253,
+                                                                        "src": "2847:17:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$1253_storage_ptr_$",
+                                                                            "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                        }
+                                                                    },
+                                                                    "id": 1871,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "structConstructorCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "2847:35:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                        "typeString": "struct EthCrossAccount memory"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "hexValue": "30",
+                                                                                    "id": 1875,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": true,
+                                                                                    "kind": "number",
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "Literal",
+                                                                                    "src": "2914:1:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                                        "typeString": "int_const 0"
+                                                                                    },
+                                                                                    "value": "0"
+                                                                                }
+                                                                            ],
+                                                                            "expression": {
+                                                                                "argumentTypes": [
+                                                                                    {
+                                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                                        "typeString": "int_const 0"
+                                                                                    }
+                                                                                ],
+                                                                                "id": 1874,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                                "src": "2906:7:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                                    "typeString": "type(address)"
+                                                                                },
+                                                                                "typeName": {
+                                                                                    "id": 1873,
+                                                                                    "name": "address",
+                                                                                    "nodeType": "ElementaryTypeName",
+                                                                                    "src": "2906:7:5",
+                                                                                    "typeDescriptions": {}
+                                                                                }
+                                                                            },
+                                                                            "id": 1876,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "kind": "typeConversion",
+                                                                            "lValueRequested": false,
+                                                                            "nameLocations": [],
+                                                                            "names": [],
+                                                                            "nodeType": "FunctionCall",
+                                                                            "src": "2906:10:5",
+                                                                            "tryCall": false,
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            }
+                                                                        },
+                                                                        {
+                                                                            "id": 1877,
+                                                                            "name": "_substrateReceiver",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 1815,
+                                                                            "src": "2918:18:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            },
+                                                                            {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1872,
+                                                                        "name": "RftCrossAccountId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1253,
+                                                                        "src": "2888:17:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$1253_storage_ptr_$",
+                                                                            "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                        }
+                                                                    },
+                                                                    "id": 1878,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "structConstructorCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "2888:49:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                        "typeString": "struct EthCrossAccount memory"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "id": 1879,
+                                                                    "name": "tokenId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1840,
+                                                                    "src": "2943:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                        "typeString": "struct EthCrossAccount memory"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                        "typeString": "struct EthCrossAccount memory"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "id": 1862,
+                                                                    "name": "rftCollection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1847,
+                                                                    "src": "2810:13:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                        "typeString": "contract UniqueRefungible"
+                                                                    }
+                                                                },
+                                                                "id": 1864,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "2824:17:5",
+                                                                "memberName": "transferFromCross",
+                                                                "nodeType": "MemberAccess",
+                                                                "referencedDeclaration": 1368,
+                                                                "src": "2810:31:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$1253_memory_ptr_$_t_struct$_EthCrossAccount_$1253_memory_ptr_$_t_uint256_$returns$__$",
+                                                                    "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                                }
+                                                            },
+                                                            "id": 1880,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "functionCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "2810:145:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_tuple$__$",
+                                                                "typeString": "tuple()"
+                                                            }
+                                                        },
+                                                        "id": 1881,
+                                                        "nodeType": "ExpressionStatement",
+                                                        "src": "2810:145:5"
+                                                    }
+                                                ]
+                                            }
+                                        },
+                                        {
+                                            "eventCall": {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [
+                                                            {
+                                                                "hexValue": "30",
+                                                                "id": 1934,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "number",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "3636:1:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                    "typeString": "int_const 0"
+                                                                },
+                                                                "value": "0"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                    "typeString": "int_const 0"
+                                                                }
+                                                            ],
+                                                            "id": 1933,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "lValueRequested": false,
+                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                            "src": "3628:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                "typeString": "type(address)"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 1932,
+                                                                "name": "address",
+                                                                "nodeType": "ElementaryTypeName",
+                                                                "src": "3628:7:5",
+                                                                "typeDescriptions": {}
+                                                            }
+                                                        },
+                                                        "id": 1935,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3628:10:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 1936,
+                                                        "name": "_substrateReceiver",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1815,
+                                                        "src": "3640:18:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 1937,
+                                                        "name": "_collection",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1813,
+                                                        "src": "3660:11:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 1938,
+                                                        "name": "tokenId",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1840,
+                                                        "src": "3673:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    ],
+                                                    "id": 1931,
+                                                    "name": "MintToSub",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1811,
+                                                    "src": "3618:9:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+                                                        "typeString": "function (address,uint256,address,uint256)"
+                                                    }
+                                                },
+                                                "id": 1939,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "3618:63:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_tuple$__$",
+                                                    "typeString": "tuple()"
+                                                }
+                                            },
+                                            "id": 1940,
+                                            "nodeType": "EmitStatement",
+                                            "src": "3613:68:5"
+                                        }
+                                    ]
+                                },
+                                "functionSelector": "7a8d9786",
+                                "id": 1942,
+                                "implemented": true,
+                                "kind": "function",
+                                "modifiers": [
+                                    {
+                                        "arguments": [
+                                            {
+                                                "id": 1818,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1813,
+                                                "src": "2313:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "id": 1819,
+                                        "kind": "modifierInvocation",
+                                        "modifierName": {
+                                            "id": 1817,
+                                            "name": "checkRestrictions",
+                                            "nameLocations": [
+                                                "2295:17:5"
+                                            ],
+                                            "nodeType": "IdentifierPath",
+                                            "referencedDeclaration": 1800,
+                                            "src": "2295:17:5"
+                                        },
+                                        "nodeType": "ModifierInvocation",
+                                        "src": "2295:30:5"
+                                    }
+                                ],
+                                "name": "mintToSubstrate",
+                                "nameLocation": "2221:15:5",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1816,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1813,
+                                            "mutability": "mutable",
+                                            "name": "_collection",
+                                            "nameLocation": "2245:11:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1942,
+                                            "src": "2237:19:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1812,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2237:7:5",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1815,
+                                            "mutability": "mutable",
+                                            "name": "_substrateReceiver",
+                                            "nameLocation": "2266:18:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1942,
+                                            "src": "2258:26:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1814,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2258:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "2236:49:5"
+                                },
+                                "returnParameters": {
+                                    "id": 1820,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "2326:0:5"
+                                },
+                                "scope": 2269,
+                                "src": "2212:1473:5",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "body": {
+                                    "id": 2150,
+                                    "nodeType": "Block",
+                                    "src": "3855:1590:5",
+                                    "statements": [
+                                        {
+                                            "assignments": [
+                                                1957
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 1957,
+                                                    "mutability": "mutable",
+                                                    "name": "propertiesLength",
+                                                    "nameLocation": "4016:16:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 2150,
+                                                    "src": "4008:24:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1956,
+                                                        "name": "uint256",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "4008:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 1960,
+                                            "initialValue": {
+                                                "expression": {
+                                                    "id": 1958,
+                                                    "name": "properties",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1950,
+                                                    "src": "4035:10:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                        "typeString": "struct Property calldata[] calldata"
+                                                    }
+                                                },
+                                                "id": 1959,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "lValueRequested": false,
+                                                "memberLocation": "4046:6:5",
+                                                "memberName": "length",
+                                                "nodeType": "MemberAccess",
+                                                "src": "4035:17:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "4008:44:5"
+                                        },
+                                        {
+                                            "expression": {
+                                                "arguments": [
+                                                    {
+                                                        "commonType": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        },
+                                                        "id": 1964,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftExpression": {
+                                                            "id": 1962,
+                                                            "name": "propertiesLength",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1957,
+                                                            "src": "4064:16:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "BinaryOperation",
+                                                        "operator": ">",
+                                                        "rightExpression": {
+                                                            "hexValue": "30",
+                                                            "id": 1963,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "kind": "number",
+                                                            "lValueRequested": false,
+                                                            "nodeType": "Literal",
+                                                            "src": "4083:1:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                "typeString": "int_const 0"
+                                                            },
+                                                            "value": "0"
+                                                        },
+                                                        "src": "4064:20:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        }
+                                                    },
+                                                    {
+                                                        "hexValue": "50726f70657269657320697320656d707479",
+                                                        "id": 1965,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "string",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "4086:20:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                            "typeString": "literal_string \"Properies is empty\""
+                                                        },
+                                                        "value": "Properies is empty"
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                            "typeString": "literal_string \"Properies is empty\""
+                                                        }
+                                                    ],
+                                                    "id": 1961,
+                                                    "name": "require",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [
+                                                        4294967278,
+                                                        4294967278
+                                                    ],
+                                                    "referencedDeclaration": 4294967278,
+                                                    "src": "4056:7:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+                                                        "typeString": "function (bool,string memory) pure"
+                                                    }
+                                                },
+                                                "id": 1966,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "4056:51:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_tuple$__$",
+                                                    "typeString": "tuple()"
+                                                }
+                                            },
+                                            "id": 1967,
+                                            "nodeType": "ExpressionStatement",
+                                            "src": "4056:51:5"
+                                        },
+                                        {
+                                            "assignments": [
+                                                1970
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 1970,
+                                                    "mutability": "mutable",
+                                                    "name": "commonContract",
+                                                    "nameLocation": "4123:14:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 2150,
+                                                    "src": "4112:25:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_contract$_Collection_$1248",
+                                                        "typeString": "contract Collection"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1969,
+                                                        "nodeType": "UserDefinedTypeName",
+                                                        "pathNode": {
+                                                            "id": 1968,
+                                                            "name": "Collection",
+                                                            "nameLocations": [
+                                                                "4112:10:5"
+                                                            ],
+                                                            "nodeType": "IdentifierPath",
+                                                            "referencedDeclaration": 1248,
+                                                            "src": "4112:10:5"
+                                                        },
+                                                        "referencedDeclaration": 1248,
+                                                        "src": "4112:10:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                                            "typeString": "contract Collection"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 1974,
+                                            "initialValue": {
+                                                "arguments": [
+                                                    {
+                                                        "id": 1972,
+                                                        "name": "_collection",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1944,
+                                                        "src": "4151:11:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    ],
+                                                    "id": 1971,
+                                                    "name": "Collection",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1248,
+                                                    "src": "4140:10:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_contract$_Collection_$1248_$",
+                                                        "typeString": "type(contract Collection)"
+                                                    }
+                                                },
+                                                "id": 1973,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "4140:23:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "4112:51:5"
+                                        },
+                                        {
+                                            "assignments": [
+                                                1976
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 1976,
+                                                    "mutability": "mutable",
+                                                    "name": "collectionType",
+                                                    "nameLocation": "4175:14:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 2150,
+                                                    "src": "4167:22:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1975,
+                                                        "name": "bytes32",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "4167:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 1985,
+                                            "initialValue": {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [],
+                                                                "expression": {
+                                                                    "argumentTypes": [],
+                                                                    "expression": {
+                                                                        "id": 1980,
+                                                                        "name": "commonContract",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1970,
+                                                                        "src": "4208:14:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                                                            "typeString": "contract Collection"
+                                                                        }
+                                                                    },
+                                                                    "id": 1981,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "4223:20:5",
+                                                                    "memberName": "uniqueCollectionType",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 1219,
+                                                                    "src": "4208:35:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
+                                                                        "typeString": "function () view external returns (string memory)"
+                                                                    }
+                                                                },
+                                                                "id": 1982,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "4208:37:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_string_memory_ptr",
+                                                                    "typeString": "string memory"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_string_memory_ptr",
+                                                                    "typeString": "string memory"
+                                                                }
+                                                            ],
+                                                            "id": 1979,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "lValueRequested": false,
+                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                            "src": "4202:5:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                                "typeString": "type(bytes storage pointer)"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 1978,
+                                                                "name": "bytes",
+                                                                "nodeType": "ElementaryTypeName",
+                                                                "src": "4202:5:5",
+                                                                "typeDescriptions": {}
+                                                            }
+                                                        },
+                                                        "id": 1983,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "4202:44:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes_memory_ptr",
+                                                            "typeString": "bytes memory"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_bytes_memory_ptr",
+                                                            "typeString": "bytes memory"
+                                                        }
+                                                    ],
+                                                    "id": 1977,
+                                                    "name": "keccak256",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 4294967288,
+                                                    "src": "4192:9:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
+                                                    }
+                                                },
+                                                "id": 1984,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "4192:55:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "4167:80:5"
+                                        },
+                                        {
+                                            "assignments": [
+                                                1987
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 1987,
+                                                    "mutability": "mutable",
+                                                    "name": "tokenId",
+                                                    "nameLocation": "4259:7:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 2150,
+                                                    "src": "4251:15:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1986,
+                                                        "name": "uint256",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "4251:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 1988,
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "4251:15:5"
+                                        },
+                                        {
+                                            "condition": {
+                                                "commonType": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                },
+                                                "id": 1991,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "lValueRequested": false,
+                                                "leftExpression": {
+                                                    "id": 1989,
+                                                    "name": "collectionType",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1976,
+                                                    "src": "4275:14:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    }
+                                                },
+                                                "nodeType": "BinaryOperation",
+                                                "operator": "==",
+                                                "rightExpression": {
+                                                    "id": 1990,
+                                                    "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1770,
+                                                    "src": "4293:26:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    }
+                                                },
+                                                "src": "4275:44:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "falseBody": {
+                                                "condition": {
+                                                    "commonType": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    },
+                                                    "id": 2063,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftExpression": {
+                                                        "id": 2061,
+                                                        "name": "collectionType",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1976,
+                                                        "src": "4770:14:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "nodeType": "BinaryOperation",
+                                                    "operator": "==",
+                                                    "rightExpression": {
+                                                        "id": 2062,
+                                                        "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1778,
+                                                        "src": "4788:27:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "src": "4770:45:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bool",
+                                                        "typeString": "bool"
+                                                    }
+                                                },
+                                                "falseBody": {
+                                                    "id": 2137,
+                                                    "nodeType": "Block",
+                                                    "src": "5248:69:5",
+                                                    "statements": [
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c792077697468204e4654206f7220524654",
+                                                                        "id": 2134,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "string",
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "Literal",
+                                                                        "src": "5260:51:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                            "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                        },
+                                                                        "value": "Wrong collection type. Works only with NFT or RFT"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                            "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                        }
+                                                                    ],
+                                                                    "id": 2133,
+                                                                    "name": "revert",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [
+                                                                        4294967277,
+                                                                        4294967277
+                                                                    ],
+                                                                    "referencedDeclaration": 4294967277,
+                                                                    "src": "5253:6:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+                                                                        "typeString": "function (string memory) pure"
+                                                                    }
+                                                                },
+                                                                "id": 2135,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "5253:59:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 2136,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "5253:59:5"
+                                                        }
+                                                    ]
+                                                },
+                                                "id": 2138,
+                                                "nodeType": "IfStatement",
+                                                "src": "4766:551:5",
+                                                "trueBody": {
+                                                    "id": 2132,
+                                                    "nodeType": "Block",
+                                                    "src": "4817:425:5",
+                                                    "statements": [
+                                                        {
+                                                            "assignments": [
+                                                                2066
+                                                            ],
+                                                            "declarations": [
+                                                                {
+                                                                    "constant": false,
+                                                                    "id": 2066,
+                                                                    "mutability": "mutable",
+                                                                    "name": "nftCollection",
+                                                                    "nameLocation": "4832:13:5",
+                                                                    "nodeType": "VariableDeclaration",
+                                                                    "scope": 2132,
+                                                                    "src": "4822:23:5",
+                                                                    "stateVariable": false,
+                                                                    "storageLocation": "default",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                        "typeString": "contract UniqueNFT"
+                                                                    },
+                                                                    "typeName": {
+                                                                        "id": 2065,
+                                                                        "nodeType": "UserDefinedTypeName",
+                                                                        "pathNode": {
+                                                                            "id": 2064,
+                                                                            "name": "UniqueNFT",
+                                                                            "nameLocations": [
+                                                                                "4822:9:5"
+                                                                            ],
+                                                                            "nodeType": "IdentifierPath",
+                                                                            "referencedDeclaration": 930,
+                                                                            "src": "4822:9:5"
+                                                                        },
+                                                                        "referencedDeclaration": 930,
+                                                                        "src": "4822:9:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                            "typeString": "contract UniqueNFT"
+                                                                        }
+                                                                    },
+                                                                    "visibility": "internal"
+                                                                }
+                                                            ],
+                                                            "id": 2070,
+                                                            "initialValue": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 2068,
+                                                                        "name": "_collection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1944,
+                                                                        "src": "4858:11:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2067,
+                                                                    "name": "UniqueNFT",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 930,
+                                                                    "src": "4848:9:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_contract$_UniqueNFT_$930_$",
+                                                                        "typeString": "type(contract UniqueNFT)"
+                                                                    }
+                                                                },
+                                                                "id": 2069,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "typeConversion",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "4848:22:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "nodeType": "VariableDeclarationStatement",
+                                                            "src": "4822:48:5"
+                                                        },
+                                                        {
+                                                            "expression": {
+                                                                "id": 2075,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "leftHandSide": {
+                                                                    "id": 2071,
+                                                                    "name": "tokenId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1987,
+                                                                    "src": "4875:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "nodeType": "Assignment",
+                                                                "operator": "=",
+                                                                "rightHandSide": {
+                                                                    "arguments": [],
+                                                                    "expression": {
+                                                                        "argumentTypes": [],
+                                                                        "expression": {
+                                                                            "id": 2072,
+                                                                            "name": "nftCollection",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 2066,
+                                                                            "src": "4885:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                                "typeString": "contract UniqueNFT"
+                                                                            }
+                                                                        },
+                                                                        "id": 2073,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "4899:11:5",
+                                                                        "memberName": "nextTokenId",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 757,
+                                                                        "src": "4885:25:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+                                                                            "typeString": "function () view external returns (uint256)"
+                                                                        }
+                                                                    },
+                                                                    "id": 2074,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "functionCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "4885:27:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "src": "4875:37:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "id": 2076,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "4875:37:5"
+                                                        },
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "id": 2082,
+                                                                                "name": "this",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 4294967268,
+                                                                                "src": "4944:4:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2081,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "4936:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 2080,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "4936:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 2083,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "4936:13:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "id": 2077,
+                                                                        "name": "nftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2066,
+                                                                        "src": "4917:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                            "typeString": "contract UniqueNFT"
+                                                                        }
+                                                                    },
+                                                                    "id": 2079,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "4931:4:5",
+                                                                    "memberName": "mint",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 671,
+                                                                    "src": "4917:18:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                        "typeString": "function (address) external returns (uint256)"
+                                                                    }
+                                                                },
+                                                                "id": 2084,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "4917:33:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "id": 2085,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "4917:33:5"
+                                                        },
+                                                        {
+                                                            "body": {
+                                                                "id": 2110,
+                                                                "nodeType": "Block",
+                                                                "src": "5002:86:5",
+                                                                "statements": [
+                                                                    {
+                                                                        "expression": {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "id": 2099,
+                                                                                    "name": "tokenId",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 1987,
+                                                                                    "src": "5034:7:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_uint256",
+                                                                                        "typeString": "uint256"
+                                                                                    }
+                                                                                },
+                                                                                {
+                                                                                    "expression": {
+                                                                                        "baseExpression": {
+                                                                                            "id": 2100,
+                                                                                            "name": "properties",
+                                                                                            "nodeType": "Identifier",
+                                                                                            "overloadedDeclarations": [],
+                                                                                            "referencedDeclaration": 1950,
+                                                                                            "src": "5043:10:5",
+                                                                                            "typeDescriptions": {
+                                                                                                "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                                                                "typeString": "struct Property calldata[] calldata"
+                                                                                            }
+                                                                                        },
+                                                                                        "id": 2102,
+                                                                                        "indexExpression": {
+                                                                                            "id": 2101,
+                                                                                            "name": "i",
+                                                                                            "nodeType": "Identifier",
+                                                                                            "overloadedDeclarations": [],
+                                                                                            "referencedDeclaration": 2087,
+                                                                                            "src": "5054:1:5",
+                                                                                            "typeDescriptions": {
+                                                                                                "typeIdentifier": "t_uint256",
+                                                                                                "typeString": "uint256"
+                                                                                            }
+                                                                                        },
+                                                                                        "isConstant": false,
+                                                                                        "isLValue": false,
+                                                                                        "isPure": false,
+                                                                                        "lValueRequested": false,
+                                                                                        "nodeType": "IndexAccess",
+                                                                                        "src": "5043:13:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_struct$_Property_$1762_calldata_ptr",
+                                                                                            "typeString": "struct Property calldata"
+                                                                                        }
+                                                                                    },
+                                                                                    "id": 2103,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": false,
+                                                                                    "lValueRequested": false,
+                                                                                    "memberLocation": "5057:3:5",
+                                                                                    "memberName": "key",
+                                                                                    "nodeType": "MemberAccess",
+                                                                                    "referencedDeclaration": 1759,
+                                                                                    "src": "5043:17:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_string_calldata_ptr",
+                                                                                        "typeString": "string calldata"
+                                                                                    }
+                                                                                },
+                                                                                {
+                                                                                    "expression": {
+                                                                                        "baseExpression": {
+                                                                                            "id": 2104,
+                                                                                            "name": "properties",
+                                                                                            "nodeType": "Identifier",
+                                                                                            "overloadedDeclarations": [],
+                                                                                            "referencedDeclaration": 1950,
+                                                                                            "src": "5062:10:5",
+                                                                                            "typeDescriptions": {
+                                                                                                "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                                                                "typeString": "struct Property calldata[] calldata"
+                                                                                            }
+                                                                                        },
+                                                                                        "id": 2106,
+                                                                                        "indexExpression": {
+                                                                                            "id": 2105,
+                                                                                            "name": "i",
+                                                                                            "nodeType": "Identifier",
+                                                                                            "overloadedDeclarations": [],
+                                                                                            "referencedDeclaration": 2087,
+                                                                                            "src": "5073:1:5",
+                                                                                            "typeDescriptions": {
+                                                                                                "typeIdentifier": "t_uint256",
+                                                                                                "typeString": "uint256"
+                                                                                            }
+                                                                                        },
+                                                                                        "isConstant": false,
+                                                                                        "isLValue": false,
+                                                                                        "isPure": false,
+                                                                                        "lValueRequested": false,
+                                                                                        "nodeType": "IndexAccess",
+                                                                                        "src": "5062:13:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_struct$_Property_$1762_calldata_ptr",
+                                                                                            "typeString": "struct Property calldata"
+                                                                                        }
+                                                                                    },
+                                                                                    "id": 2107,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": false,
+                                                                                    "lValueRequested": false,
+                                                                                    "memberLocation": "5076:5:5",
+                                                                                    "memberName": "value",
+                                                                                    "nodeType": "MemberAccess",
+                                                                                    "referencedDeclaration": 1761,
+                                                                                    "src": "5062:19:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                                        "typeString": "bytes calldata"
+                                                                                    }
+                                                                                }
+                                                                            ],
+                                                                            "expression": {
+                                                                                "argumentTypes": [
+                                                                                    {
+                                                                                        "typeIdentifier": "t_uint256",
+                                                                                        "typeString": "uint256"
+                                                                                    },
+                                                                                    {
+                                                                                        "typeIdentifier": "t_string_calldata_ptr",
+                                                                                        "typeString": "string calldata"
+                                                                                    },
+                                                                                    {
+                                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                                        "typeString": "bytes calldata"
+                                                                                    }
+                                                                                ],
+                                                                                "expression": {
+                                                                                    "id": 2096,
+                                                                                    "name": "nftCollection",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 2066,
+                                                                                    "src": "5008:13:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                                        "typeString": "contract UniqueNFT"
+                                                                                    }
+                                                                                },
+                                                                                "id": 2098,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "lValueRequested": false,
+                                                                                "memberLocation": "5022:11:5",
+                                                                                "memberName": "setProperty",
+                                                                                "nodeType": "MemberAccess",
+                                                                                "referencedDeclaration": 328,
+                                                                                "src": "5008:25:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
+                                                                                    "typeString": "function (uint256,string memory,bytes memory) external"
+                                                                                }
+                                                                            },
+                                                                            "id": 2108,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "kind": "functionCall",
+                                                                            "lValueRequested": false,
+                                                                            "nameLocations": [],
+                                                                            "names": [],
+                                                                            "nodeType": "FunctionCall",
+                                                                            "src": "5008:74:5",
+                                                                            "tryCall": false,
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_tuple$__$",
+                                                                                "typeString": "tuple()"
+                                                                            }
+                                                                        },
+                                                                        "id": 2109,
+                                                                        "nodeType": "ExpressionStatement",
+                                                                        "src": "5008:74:5"
+                                                                    }
+                                                                ]
+                                                            },
+                                                            "condition": {
+                                                                "commonType": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                },
+                                                                "id": 2092,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "leftExpression": {
+                                                                    "id": 2090,
+                                                                    "name": "i",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 2087,
+                                                                    "src": "4975:1:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "nodeType": "BinaryOperation",
+                                                                "operator": "<",
+                                                                "rightExpression": {
+                                                                    "id": 2091,
+                                                                    "name": "propertiesLength",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1957,
+                                                                    "src": "4979:16:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "src": "4975:20:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_bool",
+                                                                    "typeString": "bool"
+                                                                }
+                                                            },
+                                                            "id": 2111,
+                                                            "initializationExpression": {
+                                                                "assignments": [
+                                                                    2087
+                                                                ],
+                                                                "declarations": [
+                                                                    {
+                                                                        "constant": false,
+                                                                        "id": 2087,
+                                                                        "mutability": "mutable",
+                                                                        "name": "i",
+                                                                        "nameLocation": "4968:1:5",
+                                                                        "nodeType": "VariableDeclaration",
+                                                                        "scope": 2111,
+                                                                        "src": "4960:9:5",
+                                                                        "stateVariable": false,
+                                                                        "storageLocation": "default",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 2086,
+                                                                            "name": "uint256",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "4960:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            }
+                                                                        },
+                                                                        "visibility": "internal"
+                                                                    }
+                                                                ],
+                                                                "id": 2089,
+                                                                "initialValue": {
+                                                                    "hexValue": "30",
+                                                                    "id": 2088,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "number",
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "Literal",
+                                                                    "src": "4972:1:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    },
+                                                                    "value": "0"
+                                                                },
+                                                                "nodeType": "VariableDeclarationStatement",
+                                                                "src": "4960:13:5"
+                                                            },
+                                                            "loopExpression": {
+                                                                "expression": {
+                                                                    "id": 2094,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "UnaryOperation",
+                                                                    "operator": "++",
+                                                                    "prefix": true,
+                                                                    "src": "4997:3:5",
+                                                                    "subExpression": {
+                                                                        "id": 2093,
+                                                                        "name": "i",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2087,
+                                                                        "src": "4999:1:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    },
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "id": 2095,
+                                                                "nodeType": "ExpressionStatement",
+                                                                "src": "4997:3:5"
+                                                            },
+                                                            "nodeType": "ForStatement",
+                                                            "src": "4955:133:5"
+                                                        },
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "id": 2118,
+                                                                                        "name": "this",
+                                                                                        "nodeType": "Identifier",
+                                                                                        "overloadedDeclarations": [],
+                                                                                        "referencedDeclaration": 4294967268,
+                                                                                        "src": "5155:4:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                            "typeString": "contract EvmToSubstrate"
+                                                                                        }
+                                                                                    }
+                                                                                ],
+                                                                                "expression": {
+                                                                                    "argumentTypes": [
+                                                                                        {
+                                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                            "typeString": "contract EvmToSubstrate"
+                                                                                        }
+                                                                                    ],
+                                                                                    "id": 2117,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": true,
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                                    "src": "5147:7:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                                        "typeString": "type(address)"
+                                                                                    },
+                                                                                    "typeName": {
+                                                                                        "id": 2116,
+                                                                                        "name": "address",
+                                                                                        "nodeType": "ElementaryTypeName",
+                                                                                        "src": "5147:7:5",
+                                                                                        "typeDescriptions": {}
+                                                                                    }
+                                                                                },
+                                                                                "id": 2119,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "kind": "typeConversion",
+                                                                                "lValueRequested": false,
+                                                                                "nameLocations": [],
+                                                                                "names": [],
+                                                                                "nodeType": "FunctionCall",
+                                                                                "src": "5147:13:5",
+                                                                                "tryCall": false,
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                }
+                                                                            },
+                                                                            {
+                                                                                "hexValue": "30",
+                                                                                "id": 2120,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "number",
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "Literal",
+                                                                                "src": "5162:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                },
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                },
+                                                                                {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2115,
+                                                                            "name": "NftCrossAccountId",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 610,
+                                                                            "src": "5129:17:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                                "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                            }
+                                                                        },
+                                                                        "id": 2121,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "structConstructorCall",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "5129:35:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "hexValue": "30",
+                                                                                        "id": 2125,
+                                                                                        "isConstant": false,
+                                                                                        "isLValue": false,
+                                                                                        "isPure": true,
+                                                                                        "kind": "number",
+                                                                                        "lValueRequested": false,
+                                                                                        "nodeType": "Literal",
+                                                                                        "src": "5196:1:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                                            "typeString": "int_const 0"
+                                                                                        },
+                                                                                        "value": "0"
+                                                                                    }
+                                                                                ],
+                                                                                "expression": {
+                                                                                    "argumentTypes": [
+                                                                                        {
+                                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                                            "typeString": "int_const 0"
+                                                                                        }
+                                                                                    ],
+                                                                                    "id": 2124,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": true,
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                                    "src": "5188:7:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                                        "typeString": "type(address)"
+                                                                                    },
+                                                                                    "typeName": {
+                                                                                        "id": 2123,
+                                                                                        "name": "address",
+                                                                                        "nodeType": "ElementaryTypeName",
+                                                                                        "src": "5188:7:5",
+                                                                                        "typeDescriptions": {}
+                                                                                    }
+                                                                                },
+                                                                                "id": 2126,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "typeConversion",
+                                                                                "lValueRequested": false,
+                                                                                "nameLocations": [],
+                                                                                "names": [],
+                                                                                "nodeType": "FunctionCall",
+                                                                                "src": "5188:10:5",
+                                                                                "tryCall": false,
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                }
+                                                                            },
+                                                                            {
+                                                                                "id": 2127,
+                                                                                "name": "_substrateReceiver",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1946,
+                                                                                "src": "5200:18:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                },
+                                                                                {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2122,
+                                                                            "name": "NftCrossAccountId",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 610,
+                                                                            "src": "5170:17:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                                "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                            }
+                                                                        },
+                                                                        "id": 2128,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "structConstructorCall",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "5170:49:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 2129,
+                                                                        "name": "tokenId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1987,
+                                                                        "src": "5225:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "id": 2112,
+                                                                        "name": "nftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2066,
+                                                                        "src": "5092:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                            "typeString": "contract UniqueNFT"
+                                                                        }
+                                                                    },
+                                                                    "id": 2114,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "5106:17:5",
+                                                                    "memberName": "transferFromCross",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 734,
+                                                                    "src": "5092:31:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_uint256_$returns$__$",
+                                                                        "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                                    }
+                                                                },
+                                                                "id": 2130,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "5092:145:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 2131,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "5092:145:5"
+                                                        }
+                                                    ]
+                                                }
+                                            },
+                                            "id": 2139,
+                                            "nodeType": "IfStatement",
+                                            "src": "4271:1046:5",
+                                            "trueBody": {
+                                                "id": 2060,
+                                                "nodeType": "Block",
+                                                "src": "4321:439:5",
+                                                "statements": [
+                                                    {
+                                                        "assignments": [
+                                                            1994
+                                                        ],
+                                                        "declarations": [
+                                                            {
+                                                                "constant": false,
+                                                                "id": 1994,
+                                                                "mutability": "mutable",
+                                                                "name": "rftCollection",
+                                                                "nameLocation": "4343:13:5",
+                                                                "nodeType": "VariableDeclaration",
+                                                                "scope": 2060,
+                                                                "src": "4326:30:5",
+                                                                "stateVariable": false,
+                                                                "storageLocation": "default",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                    "typeString": "contract UniqueRefungible"
+                                                                },
+                                                                "typeName": {
+                                                                    "id": 1993,
+                                                                    "nodeType": "UserDefinedTypeName",
+                                                                    "pathNode": {
+                                                                        "id": 1992,
+                                                                        "name": "UniqueRefungible",
+                                                                        "nameLocations": [
+                                                                            "4326:16:5"
+                                                                        ],
+                                                                        "nodeType": "IdentifierPath",
+                                                                        "referencedDeclaration": 1572,
+                                                                        "src": "4326:16:5"
+                                                                    },
+                                                                    "referencedDeclaration": 1572,
+                                                                    "src": "4326:16:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                        "typeString": "contract UniqueRefungible"
+                                                                    }
+                                                                },
+                                                                "visibility": "internal"
+                                                            }
+                                                        ],
+                                                        "id": 1998,
+                                                        "initialValue": {
+                                                            "arguments": [
+                                                                {
+                                                                    "id": 1996,
+                                                                    "name": "_collection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1944,
+                                                                    "src": "4376:11:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                ],
+                                                                "id": 1995,
+                                                                "name": "UniqueRefungible",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1572,
+                                                                "src": "4359:16:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_contract$_UniqueRefungible_$1572_$",
+                                                                    "typeString": "type(contract UniqueRefungible)"
+                                                                }
+                                                            },
+                                                            "id": 1997,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "typeConversion",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4359:29:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "nodeType": "VariableDeclarationStatement",
+                                                        "src": "4326:62:5"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "id": 2003,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "leftHandSide": {
+                                                                "id": 1999,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1987,
+                                                                "src": "4393:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "nodeType": "Assignment",
+                                                            "operator": "=",
+                                                            "rightHandSide": {
+                                                                "arguments": [],
+                                                                "expression": {
+                                                                    "argumentTypes": [],
+                                                                    "expression": {
+                                                                        "id": 2000,
+                                                                        "name": "rftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1994,
+                                                                        "src": "4403:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                            "typeString": "contract UniqueRefungible"
+                                                                        }
+                                                                    },
+                                                                    "id": 2001,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "4417:11:5",
+                                                                    "memberName": "nextTokenId",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 1391,
+                                                                    "src": "4403:25:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+                                                                        "typeString": "function () view external returns (uint256)"
+                                                                    }
+                                                                },
+                                                                "id": 2002,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "4403:27:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "src": "4393:37:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "id": 2004,
+                                                        "nodeType": "ExpressionStatement",
+                                                        "src": "4393:37:5"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 2010,
+                                                                            "name": "this",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 4294967268,
+                                                                            "src": "4462:4:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        ],
+                                                                        "id": 2009,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "4454:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 2008,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "4454:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 2011,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "4454:13:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "id": 2005,
+                                                                    "name": "rftCollection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1994,
+                                                                    "src": "4435:13:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                        "typeString": "contract UniqueRefungible"
+                                                                    }
+                                                                },
+                                                                "id": 2007,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "4449:4:5",
+                                                                "memberName": "mint",
+                                                                "nodeType": "MemberAccess",
+                                                                "referencedDeclaration": 1314,
+                                                                "src": "4435:18:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                    "typeString": "function (address) external returns (uint256)"
+                                                                }
+                                                            },
+                                                            "id": 2012,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "functionCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4435:33:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "id": 2013,
+                                                        "nodeType": "ExpressionStatement",
+                                                        "src": "4435:33:5"
+                                                    },
+                                                    {
+                                                        "body": {
+                                                            "id": 2038,
+                                                            "nodeType": "Block",
+                                                            "src": "4520:86:5",
+                                                            "statements": [
+                                                                {
+                                                                    "expression": {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "id": 2027,
+                                                                                "name": "tokenId",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1987,
+                                                                                "src": "4552:7:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            },
+                                                                            {
+                                                                                "expression": {
+                                                                                    "baseExpression": {
+                                                                                        "id": 2028,
+                                                                                        "name": "properties",
+                                                                                        "nodeType": "Identifier",
+                                                                                        "overloadedDeclarations": [],
+                                                                                        "referencedDeclaration": 1950,
+                                                                                        "src": "4561:10:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                                                            "typeString": "struct Property calldata[] calldata"
+                                                                                        }
+                                                                                    },
+                                                                                    "id": 2030,
+                                                                                    "indexExpression": {
+                                                                                        "id": 2029,
+                                                                                        "name": "i",
+                                                                                        "nodeType": "Identifier",
+                                                                                        "overloadedDeclarations": [],
+                                                                                        "referencedDeclaration": 2015,
+                                                                                        "src": "4572:1:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_uint256",
+                                                                                            "typeString": "uint256"
+                                                                                        }
+                                                                                    },
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": false,
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "IndexAccess",
+                                                                                    "src": "4561:13:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_struct$_Property_$1762_calldata_ptr",
+                                                                                        "typeString": "struct Property calldata"
+                                                                                    }
+                                                                                },
+                                                                                "id": 2031,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "lValueRequested": false,
+                                                                                "memberLocation": "4575:3:5",
+                                                                                "memberName": "key",
+                                                                                "nodeType": "MemberAccess",
+                                                                                "referencedDeclaration": 1759,
+                                                                                "src": "4561:17:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_string_calldata_ptr",
+                                                                                    "typeString": "string calldata"
+                                                                                }
+                                                                            },
+                                                                            {
+                                                                                "expression": {
+                                                                                    "baseExpression": {
+                                                                                        "id": 2032,
+                                                                                        "name": "properties",
+                                                                                        "nodeType": "Identifier",
+                                                                                        "overloadedDeclarations": [],
+                                                                                        "referencedDeclaration": 1950,
+                                                                                        "src": "4580:10:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                                                            "typeString": "struct Property calldata[] calldata"
+                                                                                        }
+                                                                                    },
+                                                                                    "id": 2034,
+                                                                                    "indexExpression": {
+                                                                                        "id": 2033,
+                                                                                        "name": "i",
+                                                                                        "nodeType": "Identifier",
+                                                                                        "overloadedDeclarations": [],
+                                                                                        "referencedDeclaration": 2015,
+                                                                                        "src": "4591:1:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_uint256",
+                                                                                            "typeString": "uint256"
+                                                                                        }
+                                                                                    },
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": false,
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "IndexAccess",
+                                                                                    "src": "4580:13:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_struct$_Property_$1762_calldata_ptr",
+                                                                                        "typeString": "struct Property calldata"
+                                                                                    }
+                                                                                },
+                                                                                "id": 2035,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "lValueRequested": false,
+                                                                                "memberLocation": "4594:5:5",
+                                                                                "memberName": "value",
+                                                                                "nodeType": "MemberAccess",
+                                                                                "referencedDeclaration": 1761,
+                                                                                "src": "4580:19:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                                    "typeString": "bytes calldata"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                },
+                                                                                {
+                                                                                    "typeIdentifier": "t_string_calldata_ptr",
+                                                                                    "typeString": "string calldata"
+                                                                                },
+                                                                                {
+                                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                                    "typeString": "bytes calldata"
+                                                                                }
+                                                                            ],
+                                                                            "expression": {
+                                                                                "id": 2024,
+                                                                                "name": "rftCollection",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1994,
+                                                                                "src": "4526:13:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                                    "typeString": "contract UniqueRefungible"
+                                                                                }
+                                                                            },
+                                                                            "id": 2026,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "memberLocation": "4540:11:5",
+                                                                            "memberName": "setProperty",
+                                                                            "nodeType": "MemberAccess",
+                                                                            "referencedDeclaration": 971,
+                                                                            "src": "4526:25:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
+                                                                                "typeString": "function (uint256,string memory,bytes memory) external"
+                                                                            }
+                                                                        },
+                                                                        "id": 2036,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "functionCall",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "4526:74:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_tuple$__$",
+                                                                            "typeString": "tuple()"
+                                                                        }
+                                                                    },
+                                                                    "id": 2037,
+                                                                    "nodeType": "ExpressionStatement",
+                                                                    "src": "4526:74:5"
+                                                                }
+                                                            ]
+                                                        },
+                                                        "condition": {
+                                                            "commonType": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            },
+                                                            "id": 2020,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "leftExpression": {
+                                                                "id": 2018,
+                                                                "name": "i",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2015,
+                                                                "src": "4493:1:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "nodeType": "BinaryOperation",
+                                                            "operator": "<",
+                                                            "rightExpression": {
+                                                                "id": 2019,
+                                                                "name": "propertiesLength",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1957,
+                                                                "src": "4497:16:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "src": "4493:20:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_bool",
+                                                                "typeString": "bool"
+                                                            }
+                                                        },
+                                                        "id": 2039,
+                                                        "initializationExpression": {
+                                                            "assignments": [
+                                                                2015
+                                                            ],
+                                                            "declarations": [
+                                                                {
+                                                                    "constant": false,
+                                                                    "id": 2015,
+                                                                    "mutability": "mutable",
+                                                                    "name": "i",
+                                                                    "nameLocation": "4486:1:5",
+                                                                    "nodeType": "VariableDeclaration",
+                                                                    "scope": 2039,
+                                                                    "src": "4478:9:5",
+                                                                    "stateVariable": false,
+                                                                    "storageLocation": "default",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    },
+                                                                    "typeName": {
+                                                                        "id": 2014,
+                                                                        "name": "uint256",
+                                                                        "nodeType": "ElementaryTypeName",
+                                                                        "src": "4478:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    },
+                                                                    "visibility": "internal"
+                                                                }
+                                                            ],
+                                                            "id": 2017,
+                                                            "initialValue": {
+                                                                "hexValue": "30",
+                                                                "id": 2016,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "number",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "4490:1:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                    "typeString": "int_const 0"
+                                                                },
+                                                                "value": "0"
+                                                            },
+                                                            "nodeType": "VariableDeclarationStatement",
+                                                            "src": "4478:13:5"
+                                                        },
+                                                        "loopExpression": {
+                                                            "expression": {
+                                                                "id": 2022,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "nodeType": "UnaryOperation",
+                                                                "operator": "++",
+                                                                "prefix": true,
+                                                                "src": "4515:3:5",
+                                                                "subExpression": {
+                                                                    "id": 2021,
+                                                                    "name": "i",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 2015,
+                                                                    "src": "4517:1:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "id": 2023,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "4515:3:5"
+                                                        },
+                                                        "nodeType": "ForStatement",
+                                                        "src": "4473:133:5"
+                                                    },
+                                                    {
+                                                        "expression": {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "id": 2046,
+                                                                                    "name": "this",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 4294967268,
+                                                                                    "src": "4673:4:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                        "typeString": "contract EvmToSubstrate"
+                                                                                    }
+                                                                                }
+                                                                            ],
+                                                                            "expression": {
+                                                                                "argumentTypes": [
+                                                                                    {
+                                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                        "typeString": "contract EvmToSubstrate"
+                                                                                    }
+                                                                                ],
+                                                                                "id": 2045,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                                "src": "4665:7:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                                    "typeString": "type(address)"
+                                                                                },
+                                                                                "typeName": {
+                                                                                    "id": 2044,
+                                                                                    "name": "address",
+                                                                                    "nodeType": "ElementaryTypeName",
+                                                                                    "src": "4665:7:5",
+                                                                                    "typeDescriptions": {}
+                                                                                }
+                                                                            },
+                                                                            "id": 2047,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "kind": "typeConversion",
+                                                                            "lValueRequested": false,
+                                                                            "nameLocations": [],
+                                                                            "names": [],
+                                                                            "nodeType": "FunctionCall",
+                                                                            "src": "4665:13:5",
+                                                                            "tryCall": false,
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            }
+                                                                        },
+                                                                        {
+                                                                            "hexValue": "30",
+                                                                            "id": 2048,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "kind": "number",
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "Literal",
+                                                                            "src": "4680:1:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            },
+                                                                            "value": "0"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            },
+                                                                            {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            }
+                                                                        ],
+                                                                        "id": 2043,
+                                                                        "name": "RftCrossAccountId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1253,
+                                                                        "src": "4647:17:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$1253_storage_ptr_$",
+                                                                            "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                        }
+                                                                    },
+                                                                    "id": 2049,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "structConstructorCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "4647:35:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                        "typeString": "struct EthCrossAccount memory"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "hexValue": "30",
+                                                                                    "id": 2053,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": true,
+                                                                                    "kind": "number",
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "Literal",
+                                                                                    "src": "4714:1:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                                        "typeString": "int_const 0"
+                                                                                    },
+                                                                                    "value": "0"
+                                                                                }
+                                                                            ],
+                                                                            "expression": {
+                                                                                "argumentTypes": [
+                                                                                    {
+                                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                                        "typeString": "int_const 0"
+                                                                                    }
+                                                                                ],
+                                                                                "id": 2052,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                                "src": "4706:7:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                                    "typeString": "type(address)"
+                                                                                },
+                                                                                "typeName": {
+                                                                                    "id": 2051,
+                                                                                    "name": "address",
+                                                                                    "nodeType": "ElementaryTypeName",
+                                                                                    "src": "4706:7:5",
+                                                                                    "typeDescriptions": {}
+                                                                                }
+                                                                            },
+                                                                            "id": 2054,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "kind": "typeConversion",
+                                                                            "lValueRequested": false,
+                                                                            "nameLocations": [],
+                                                                            "names": [],
+                                                                            "nodeType": "FunctionCall",
+                                                                            "src": "4706:10:5",
+                                                                            "tryCall": false,
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            }
+                                                                        },
+                                                                        {
+                                                                            "id": 2055,
+                                                                            "name": "_substrateReceiver",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 1946,
+                                                                            "src": "4718:18:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            },
+                                                                            {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            }
+                                                                        ],
+                                                                        "id": 2050,
+                                                                        "name": "RftCrossAccountId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1253,
+                                                                        "src": "4688:17:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$1253_storage_ptr_$",
+                                                                            "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                        }
+                                                                    },
+                                                                    "id": 2056,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "structConstructorCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "4688:49:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                        "typeString": "struct EthCrossAccount memory"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "id": 2057,
+                                                                    "name": "tokenId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1987,
+                                                                    "src": "4743:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                        "typeString": "struct EthCrossAccount memory"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_struct$_EthCrossAccount_$1253_memory_ptr",
+                                                                        "typeString": "struct EthCrossAccount memory"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "id": 2040,
+                                                                    "name": "rftCollection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1994,
+                                                                    "src": "4610:13:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1572",
+                                                                        "typeString": "contract UniqueRefungible"
+                                                                    }
+                                                                },
+                                                                "id": 2042,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "4624:17:5",
+                                                                "memberName": "transferFromCross",
+                                                                "nodeType": "MemberAccess",
+                                                                "referencedDeclaration": 1368,
+                                                                "src": "4610:31:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$1253_memory_ptr_$_t_struct$_EthCrossAccount_$1253_memory_ptr_$_t_uint256_$returns$__$",
+                                                                    "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                                }
+                                                            },
+                                                            "id": 2058,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "functionCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4610:145:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_tuple$__$",
+                                                                "typeString": "tuple()"
+                                                            }
+                                                        },
+                                                        "id": 2059,
+                                                        "nodeType": "ExpressionStatement",
+                                                        "src": "4610:145:5"
+                                                    }
+                                                ]
+                                            }
+                                        },
+                                        {
+                                            "eventCall": {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [
+                                                            {
+                                                                "hexValue": "30",
+                                                                "id": 2143,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "number",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "5396:1:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                    "typeString": "int_const 0"
+                                                                },
+                                                                "value": "0"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                    "typeString": "int_const 0"
+                                                                }
+                                                            ],
+                                                            "id": 2142,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "lValueRequested": false,
+                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                            "src": "5388:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                "typeString": "type(address)"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 2141,
+                                                                "name": "address",
+                                                                "nodeType": "ElementaryTypeName",
+                                                                "src": "5388:7:5",
+                                                                "typeDescriptions": {}
+                                                            }
+                                                        },
+                                                        "id": 2144,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5388:10:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 2145,
+                                                        "name": "_substrateReceiver",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1946,
+                                                        "src": "5400:18:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 2146,
+                                                        "name": "_collection",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1944,
+                                                        "src": "5420:11:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 2147,
+                                                        "name": "tokenId",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1987,
+                                                        "src": "5433:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    ],
+                                                    "id": 2140,
+                                                    "name": "MintToSub",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1811,
+                                                    "src": "5378:9:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+                                                        "typeString": "function (address,uint256,address,uint256)"
+                                                    }
+                                                },
+                                                "id": 2148,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "5378:63:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_tuple$__$",
+                                                    "typeString": "tuple()"
+                                                }
+                                            },
+                                            "id": 2149,
+                                            "nodeType": "EmitStatement",
+                                            "src": "5373:68:5"
+                                        }
+                                    ]
+                                },
+                                "functionSelector": "440dff9d",
+                                "id": 2151,
+                                "implemented": true,
+                                "kind": "function",
+                                "modifiers": [
+                                    {
+                                        "arguments": [
+                                            {
+                                                "id": 1953,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1944,
+                                                "src": "3842:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "id": 1954,
+                                        "kind": "modifierInvocation",
+                                        "modifierName": {
+                                            "id": 1952,
+                                            "name": "checkRestrictions",
+                                            "nameLocations": [
+                                                "3824:17:5"
+                                            ],
+                                            "nodeType": "IdentifierPath",
+                                            "referencedDeclaration": 1800,
+                                            "src": "3824:17:5"
+                                        },
+                                        "nodeType": "ModifierInvocation",
+                                        "src": "3824:30:5"
+                                    }
+                                ],
+                                "name": "mintToSubstrateWithProperty",
+                                "nameLocation": "3697:27:5",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 1951,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 1944,
+                                            "mutability": "mutable",
+                                            "name": "_collection",
+                                            "nameLocation": "3736:11:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2151,
+                                            "src": "3728:19:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 1943,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3728:7:5",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1946,
+                                            "mutability": "mutable",
+                                            "name": "_substrateReceiver",
+                                            "nameLocation": "3759:18:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2151,
+                                            "src": "3751:26:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1945,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "3751:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 1950,
+                                            "mutability": "mutable",
+                                            "name": "properties",
+                                            "nameLocation": "3801:10:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2151,
+                                            "src": "3781:30:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "calldata",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Property_$1762_calldata_ptr_$dyn_calldata_ptr",
+                                                "typeString": "struct Property[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 1948,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 1947,
+                                                        "name": "Property",
+                                                        "nameLocations": [
+                                                            "3781:8:5"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 1762,
+                                                        "src": "3781:8:5"
+                                                    },
+                                                    "referencedDeclaration": 1762,
+                                                    "src": "3781:8:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_Property_$1762_storage_ptr",
+                                                        "typeString": "struct Property"
+                                                    }
+                                                },
+                                                "id": 1949,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "3781:10:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_Property_$1762_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct Property[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "3724:90:5"
+                                },
+                                "returnParameters": {
+                                    "id": 1955,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "3855:0:5"
+                                },
+                                "scope": 2269,
+                                "src": "3688:1757:5",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            },
+                            {
+                                "body": {
+                                    "id": 2267,
+                                    "nodeType": "Block",
+                                    "src": "5619:885:5",
+                                    "statements": [
+                                        {
+                                            "assignments": [
+                                                2166
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 2166,
+                                                    "mutability": "mutable",
+                                                    "name": "propertiesLength",
+                                                    "nameLocation": "5631:16:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 2267,
+                                                    "src": "5623:24:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 2165,
+                                                        "name": "uint256",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "5623:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 2169,
+                                            "initialValue": {
+                                                "expression": {
+                                                    "id": 2167,
+                                                    "name": "_properties",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 2159,
+                                                    "src": "5650:11:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                                        "typeString": "struct Tuple21 calldata[] calldata"
+                                                    }
+                                                },
+                                                "id": 2168,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "lValueRequested": false,
+                                                "memberLocation": "5662:6:5",
+                                                "memberName": "length",
+                                                "nodeType": "MemberAccess",
+                                                "src": "5650:18:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "5623:45:5"
+                                        },
+                                        {
+                                            "expression": {
+                                                "arguments": [
+                                                    {
+                                                        "commonType": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        },
+                                                        "id": 2173,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftExpression": {
+                                                            "id": 2171,
+                                                            "name": "propertiesLength",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 2166,
+                                                            "src": "5680:16:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "BinaryOperation",
+                                                        "operator": ">",
+                                                        "rightExpression": {
+                                                            "hexValue": "30",
+                                                            "id": 2172,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "kind": "number",
+                                                            "lValueRequested": false,
+                                                            "nodeType": "Literal",
+                                                            "src": "5699:1:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                "typeString": "int_const 0"
+                                                            },
+                                                            "value": "0"
+                                                        },
+                                                        "src": "5680:20:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        }
+                                                    },
+                                                    {
+                                                        "hexValue": "50726f70657269657320697320656d707479",
+                                                        "id": 2174,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "string",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "5702:20:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                            "typeString": "literal_string \"Properies is empty\""
+                                                        },
+                                                        "value": "Properies is empty"
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                            "typeString": "literal_string \"Properies is empty\""
+                                                        }
+                                                    ],
+                                                    "id": 2170,
+                                                    "name": "require",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [
+                                                        4294967278,
+                                                        4294967278
+                                                    ],
+                                                    "referencedDeclaration": 4294967278,
+                                                    "src": "5672:7:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+                                                        "typeString": "function (bool,string memory) pure"
+                                                    }
+                                                },
+                                                "id": 2175,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "5672:51:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_tuple$__$",
+                                                    "typeString": "tuple()"
+                                                }
+                                            },
+                                            "id": 2176,
+                                            "nodeType": "ExpressionStatement",
+                                            "src": "5672:51:5"
+                                        },
+                                        {
+                                            "assignments": [
+                                                2179
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 2179,
+                                                    "mutability": "mutable",
+                                                    "name": "commonContract",
+                                                    "nameLocation": "5739:14:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 2267,
+                                                    "src": "5728:25:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_contract$_Collection_$1248",
+                                                        "typeString": "contract Collection"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 2178,
+                                                        "nodeType": "UserDefinedTypeName",
+                                                        "pathNode": {
+                                                            "id": 2177,
+                                                            "name": "Collection",
+                                                            "nameLocations": [
+                                                                "5728:10:5"
+                                                            ],
+                                                            "nodeType": "IdentifierPath",
+                                                            "referencedDeclaration": 1248,
+                                                            "src": "5728:10:5"
+                                                        },
+                                                        "referencedDeclaration": 1248,
+                                                        "src": "5728:10:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                                            "typeString": "contract Collection"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 2183,
+                                            "initialValue": {
+                                                "arguments": [
+                                                    {
+                                                        "id": 2181,
+                                                        "name": "_collection",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 2153,
+                                                        "src": "5767:11:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    ],
+                                                    "id": 2180,
+                                                    "name": "Collection",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1248,
+                                                    "src": "5756:10:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_contract$_Collection_$1248_$",
+                                                        "typeString": "type(contract Collection)"
+                                                    }
+                                                },
+                                                "id": 2182,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "5756:23:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1248",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "5728:51:5"
+                                        },
+                                        {
+                                            "assignments": [
+                                                2185
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 2185,
+                                                    "mutability": "mutable",
+                                                    "name": "collectionType",
+                                                    "nameLocation": "5791:14:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 2267,
+                                                    "src": "5783:22:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 2184,
+                                                        "name": "bytes32",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "5783:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 2194,
+                                            "initialValue": {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [],
+                                                                "expression": {
+                                                                    "argumentTypes": [],
+                                                                    "expression": {
+                                                                        "id": 2189,
+                                                                        "name": "commonContract",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2179,
+                                                                        "src": "5824:14:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_Collection_$1248",
+                                                                            "typeString": "contract Collection"
+                                                                        }
+                                                                    },
+                                                                    "id": 2190,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "5839:20:5",
+                                                                    "memberName": "uniqueCollectionType",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 1219,
+                                                                    "src": "5824:35:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
+                                                                        "typeString": "function () view external returns (string memory)"
+                                                                    }
+                                                                },
+                                                                "id": 2191,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "5824:37:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_string_memory_ptr",
+                                                                    "typeString": "string memory"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_string_memory_ptr",
+                                                                    "typeString": "string memory"
+                                                                }
+                                                            ],
+                                                            "id": 2188,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "lValueRequested": false,
+                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                            "src": "5818:5:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                                "typeString": "type(bytes storage pointer)"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 2187,
+                                                                "name": "bytes",
+                                                                "nodeType": "ElementaryTypeName",
+                                                                "src": "5818:5:5",
+                                                                "typeDescriptions": {}
+                                                            }
+                                                        },
+                                                        "id": 2192,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5818:44:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes_memory_ptr",
+                                                            "typeString": "bytes memory"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_bytes_memory_ptr",
+                                                            "typeString": "bytes memory"
+                                                        }
+                                                    ],
+                                                    "id": 2186,
+                                                    "name": "keccak256",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 4294967288,
+                                                    "src": "5808:9:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
+                                                    }
+                                                },
+                                                "id": 2193,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "5808:55:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "5783:80:5"
+                                        },
+                                        {
+                                            "assignments": [
+                                                2196
+                                            ],
+                                            "declarations": [
+                                                {
+                                                    "constant": false,
+                                                    "id": 2196,
+                                                    "mutability": "mutable",
+                                                    "name": "tokenId",
+                                                    "nameLocation": "5875:7:5",
+                                                    "nodeType": "VariableDeclaration",
+                                                    "scope": 2267,
+                                                    "src": "5867:15:5",
+                                                    "stateVariable": false,
+                                                    "storageLocation": "default",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 2195,
+                                                        "name": "uint256",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "5867:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "visibility": "internal"
+                                                }
+                                            ],
+                                            "id": 2197,
+                                            "nodeType": "VariableDeclarationStatement",
+                                            "src": "5867:15:5"
+                                        },
+                                        {
+                                            "condition": {
+                                                "commonType": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                },
+                                                "id": 2200,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "lValueRequested": false,
+                                                "leftExpression": {
+                                                    "id": 2198,
+                                                    "name": "collectionType",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 2185,
+                                                    "src": "5891:14:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    }
+                                                },
+                                                "nodeType": "BinaryOperation",
+                                                "operator": "==",
+                                                "rightExpression": {
+                                                    "id": 2199,
+                                                    "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1770,
+                                                    "src": "5909:26:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    }
+                                                },
+                                                "src": "5891:44:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            "falseBody": {
+                                                "condition": {
+                                                    "commonType": {
+                                                        "typeIdentifier": "t_bytes32",
+                                                        "typeString": "bytes32"
+                                                    },
+                                                    "id": 2204,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftExpression": {
+                                                        "id": 2202,
+                                                        "name": "collectionType",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 2185,
+                                                        "src": "5949:14:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "nodeType": "BinaryOperation",
+                                                    "operator": "==",
+                                                    "rightExpression": {
+                                                        "id": 2203,
+                                                        "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1778,
+                                                        "src": "5967:27:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bytes32",
+                                                            "typeString": "bytes32"
+                                                        }
+                                                    },
+                                                    "src": "5949:45:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bool",
+                                                        "typeString": "bool"
+                                                    }
+                                                },
+                                                "falseBody": {
+                                                    "id": 2254,
+                                                    "nodeType": "Block",
+                                                    "src": "6359:69:5",
+                                                    "statements": [
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c792077697468204e4654206f7220524654",
+                                                                        "id": 2251,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "string",
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "Literal",
+                                                                        "src": "6371:51:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                            "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                        },
+                                                                        "value": "Wrong collection type. Works only with NFT or RFT"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                            "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                        }
+                                                                    ],
+                                                                    "id": 2250,
+                                                                    "name": "revert",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [
+                                                                        4294967277,
+                                                                        4294967277
+                                                                    ],
+                                                                    "referencedDeclaration": 4294967277,
+                                                                    "src": "6364:6:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+                                                                        "typeString": "function (string memory) pure"
+                                                                    }
+                                                                },
+                                                                "id": 2252,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "6364:59:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 2253,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "6364:59:5"
+                                                        }
+                                                    ]
+                                                },
+                                                "id": 2255,
+                                                "nodeType": "IfStatement",
+                                                "src": "5945:483:5",
+                                                "trueBody": {
+                                                    "id": 2249,
+                                                    "nodeType": "Block",
+                                                    "src": "5996:357:5",
+                                                    "statements": [
+                                                        {
+                                                            "assignments": [
+                                                                2207
+                                                            ],
+                                                            "declarations": [
+                                                                {
+                                                                    "constant": false,
+                                                                    "id": 2207,
+                                                                    "mutability": "mutable",
+                                                                    "name": "nftCollection",
+                                                                    "nameLocation": "6011:13:5",
+                                                                    "nodeType": "VariableDeclaration",
+                                                                    "scope": 2249,
+                                                                    "src": "6001:23:5",
+                                                                    "stateVariable": false,
+                                                                    "storageLocation": "default",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                        "typeString": "contract UniqueNFT"
+                                                                    },
+                                                                    "typeName": {
+                                                                        "id": 2206,
+                                                                        "nodeType": "UserDefinedTypeName",
+                                                                        "pathNode": {
+                                                                            "id": 2205,
+                                                                            "name": "UniqueNFT",
+                                                                            "nameLocations": [
+                                                                                "6001:9:5"
+                                                                            ],
+                                                                            "nodeType": "IdentifierPath",
+                                                                            "referencedDeclaration": 930,
+                                                                            "src": "6001:9:5"
+                                                                        },
+                                                                        "referencedDeclaration": 930,
+                                                                        "src": "6001:9:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                            "typeString": "contract UniqueNFT"
+                                                                        }
+                                                                    },
+                                                                    "visibility": "internal"
+                                                                }
+                                                            ],
+                                                            "id": 2211,
+                                                            "initialValue": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 2209,
+                                                                        "name": "_collection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2153,
+                                                                        "src": "6037:11:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2208,
+                                                                    "name": "UniqueNFT",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 930,
+                                                                    "src": "6027:9:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_contract$_UniqueNFT_$930_$",
+                                                                        "typeString": "type(contract UniqueNFT)"
+                                                                    }
+                                                                },
+                                                                "id": 2210,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "typeConversion",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "6027:22:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "nodeType": "VariableDeclarationStatement",
+                                                            "src": "6001:48:5"
+                                                        },
+                                                        {
+                                                            "expression": {
+                                                                "id": 2220,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "leftHandSide": {
+                                                                    "id": 2212,
+                                                                    "name": "tokenId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 2196,
+                                                                    "src": "6099:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "nodeType": "Assignment",
+                                                                "operator": "=",
+                                                                "rightHandSide": {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "arguments": [
+                                                                                {
+                                                                                    "id": 2217,
+                                                                                    "name": "this",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 4294967268,
+                                                                                    "src": "6136:4:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                        "typeString": "contract EvmToSubstrate"
+                                                                                    }
+                                                                                }
+                                                                            ],
+                                                                            "expression": {
+                                                                                "argumentTypes": [
+                                                                                    {
+                                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                        "typeString": "contract EvmToSubstrate"
+                                                                                    }
+                                                                                ],
+                                                                                "id": 2216,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                                "src": "6128:7:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                                    "typeString": "type(address)"
+                                                                                },
+                                                                                "typeName": {
+                                                                                    "id": 2215,
+                                                                                    "name": "address",
+                                                                                    "nodeType": "ElementaryTypeName",
+                                                                                    "src": "6128:7:5",
+                                                                                    "typeDescriptions": {}
+                                                                                }
+                                                                            },
+                                                                            "id": 2218,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "kind": "typeConversion",
+                                                                            "lValueRequested": false,
+                                                                            "nameLocations": [],
+                                                                            "names": [],
+                                                                            "nodeType": "FunctionCall",
+                                                                            "src": "6128:13:5",
+                                                                            "tryCall": false,
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_address",
+                                                                                "typeString": "address"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "id": 2213,
+                                                                            "name": "nftCollection",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 2207,
+                                                                            "src": "6109:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                                "typeString": "contract UniqueNFT"
+                                                                            }
+                                                                        },
+                                                                        "id": 2214,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "6123:4:5",
+                                                                        "memberName": "mint",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 671,
+                                                                        "src": "6109:18:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
+                                                                            "typeString": "function (address) external returns (uint256)"
+                                                                        }
+                                                                    },
+                                                                    "id": 2219,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "functionCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "6109:33:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "src": "6099:43:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "id": 2221,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "6099:43:5"
+                                                        },
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 2225,
+                                                                        "name": "tokenId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2196,
+                                                                        "src": "6176:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 2226,
+                                                                        "name": "_properties",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2159,
+                                                                        "src": "6185:11:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                                                            "typeString": "struct Tuple21 calldata[] calldata"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                                                            "typeString": "struct Tuple21 calldata[] calldata"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "id": 2222,
+                                                                        "name": "nftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2207,
+                                                                        "src": "6148:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                            "typeString": "contract UniqueNFT"
+                                                                        }
+                                                                    },
+                                                                    "id": 2224,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "6162:13:5",
+                                                                    "memberName": "setProperties",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 338,
+                                                                    "src": "6148:27:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_array$_t_struct$_Tuple21_$620_memory_ptr_$dyn_memory_ptr_$returns$__$",
+                                                                        "typeString": "function (uint256,struct Tuple21 memory[] memory) external"
+                                                                    }
+                                                                },
+                                                                "id": 2227,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "6148:49:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 2228,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "6148:49:5"
+                                                        },
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "id": 2235,
+                                                                                        "name": "this",
+                                                                                        "nodeType": "Identifier",
+                                                                                        "overloadedDeclarations": [],
+                                                                                        "referencedDeclaration": 4294967268,
+                                                                                        "src": "6266:4:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                            "typeString": "contract EvmToSubstrate"
+                                                                                        }
+                                                                                    }
+                                                                                ],
+                                                                                "expression": {
+                                                                                    "argumentTypes": [
+                                                                                        {
+                                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2269",
+                                                                                            "typeString": "contract EvmToSubstrate"
+                                                                                        }
+                                                                                    ],
+                                                                                    "id": 2234,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": true,
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                                    "src": "6258:7:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                                        "typeString": "type(address)"
+                                                                                    },
+                                                                                    "typeName": {
+                                                                                        "id": 2233,
+                                                                                        "name": "address",
+                                                                                        "nodeType": "ElementaryTypeName",
+                                                                                        "src": "6258:7:5",
+                                                                                        "typeDescriptions": {}
+                                                                                    }
+                                                                                },
+                                                                                "id": 2236,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "kind": "typeConversion",
+                                                                                "lValueRequested": false,
+                                                                                "nameLocations": [],
+                                                                                "names": [],
+                                                                                "nodeType": "FunctionCall",
+                                                                                "src": "6258:13:5",
+                                                                                "tryCall": false,
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                }
+                                                                            },
+                                                                            {
+                                                                                "hexValue": "30",
+                                                                                "id": 2237,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "number",
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "Literal",
+                                                                                "src": "6273:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                },
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                },
+                                                                                {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2232,
+                                                                            "name": "NftCrossAccountId",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 610,
+                                                                            "src": "6240:17:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                                "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                            }
+                                                                        },
+                                                                        "id": 2238,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "structConstructorCall",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "6240:35:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "arguments": [
+                                                                                    {
+                                                                                        "hexValue": "30",
+                                                                                        "id": 2242,
+                                                                                        "isConstant": false,
+                                                                                        "isLValue": false,
+                                                                                        "isPure": true,
+                                                                                        "kind": "number",
+                                                                                        "lValueRequested": false,
+                                                                                        "nodeType": "Literal",
+                                                                                        "src": "6307:1:5",
+                                                                                        "typeDescriptions": {
+                                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                                            "typeString": "int_const 0"
+                                                                                        },
+                                                                                        "value": "0"
+                                                                                    }
+                                                                                ],
+                                                                                "expression": {
+                                                                                    "argumentTypes": [
+                                                                                        {
+                                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                                            "typeString": "int_const 0"
+                                                                                        }
+                                                                                    ],
+                                                                                    "id": 2241,
+                                                                                    "isConstant": false,
+                                                                                    "isLValue": false,
+                                                                                    "isPure": true,
+                                                                                    "lValueRequested": false,
+                                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                                    "src": "6299:7:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                                        "typeString": "type(address)"
+                                                                                    },
+                                                                                    "typeName": {
+                                                                                        "id": 2240,
+                                                                                        "name": "address",
+                                                                                        "nodeType": "ElementaryTypeName",
+                                                                                        "src": "6299:7:5",
+                                                                                        "typeDescriptions": {}
+                                                                                    }
+                                                                                },
+                                                                                "id": 2243,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "typeConversion",
+                                                                                "lValueRequested": false,
+                                                                                "nameLocations": [],
+                                                                                "names": [],
+                                                                                "nodeType": "FunctionCall",
+                                                                                "src": "6299:10:5",
+                                                                                "tryCall": false,
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                }
+                                                                            },
+                                                                            {
+                                                                                "id": 2244,
+                                                                                "name": "_substrateReceiver",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 2155,
+                                                                                "src": "6311:18:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_address",
+                                                                                    "typeString": "address"
+                                                                                },
+                                                                                {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2239,
+                                                                            "name": "NftCrossAccountId",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 610,
+                                                                            "src": "6281:17:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_struct$_EthCrossAccount_$610_storage_ptr_$",
+                                                                                "typeString": "type(struct EthCrossAccount storage pointer)"
+                                                                            }
+                                                                        },
+                                                                        "id": 2245,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "structConstructorCall",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "6281:49:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 2246,
+                                                                        "name": "tokenId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2196,
+                                                                        "src": "6336:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_struct$_EthCrossAccount_$610_memory_ptr",
+                                                                            "typeString": "struct EthCrossAccount memory"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "id": 2229,
+                                                                        "name": "nftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 2207,
+                                                                        "src": "6203:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueNFT_$930",
+                                                                            "typeString": "contract UniqueNFT"
+                                                                        }
+                                                                    },
+                                                                    "id": 2231,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "6217:17:5",
+                                                                    "memberName": "transferFromCross",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 734,
+                                                                    "src": "6203:31:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_struct$_EthCrossAccount_$610_memory_ptr_$_t_uint256_$returns$__$",
+                                                                        "typeString": "function (struct EthCrossAccount memory,struct EthCrossAccount memory,uint256) external"
+                                                                    }
+                                                                },
+                                                                "id": 2247,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "6203:145:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 2248,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "6203:145:5"
+                                                        }
+                                                    ]
+                                                }
+                                            },
+                                            "id": 2256,
+                                            "nodeType": "IfStatement",
+                                            "src": "5887:541:5",
+                                            "trueBody": {
+                                                "id": 2201,
+                                                "nodeType": "Block",
+                                                "src": "5937:2:5",
+                                                "statements": []
+                                            }
+                                        },
+                                        {
+                                            "eventCall": {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [
+                                                            {
+                                                                "hexValue": "30",
+                                                                "id": 2260,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "number",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "6455:1:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                    "typeString": "int_const 0"
+                                                                },
+                                                                "value": "0"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                    "typeString": "int_const 0"
+                                                                }
+                                                            ],
+                                                            "id": 2259,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "lValueRequested": false,
+                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                            "src": "6447:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                "typeString": "type(address)"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 2258,
+                                                                "name": "address",
+                                                                "nodeType": "ElementaryTypeName",
+                                                                "src": "6447:7:5",
+                                                                "typeDescriptions": {}
+                                                            }
+                                                        },
+                                                        "id": 2261,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "6447:10:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 2262,
+                                                        "name": "_substrateReceiver",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 2155,
+                                                        "src": "6459:18:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 2263,
+                                                        "name": "_collection",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 2153,
+                                                        "src": "6479:11:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    },
+                                                    {
+                                                        "id": 2264,
+                                                        "name": "tokenId",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 2196,
+                                                        "src": "6492:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        },
+                                                        {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    ],
+                                                    "id": 2257,
+                                                    "name": "MintToSub",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1811,
+                                                    "src": "6437:9:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+                                                        "typeString": "function (address,uint256,address,uint256)"
+                                                    }
+                                                },
+                                                "id": 2265,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "6437:63:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_tuple$__$",
+                                                    "typeString": "tuple()"
+                                                }
+                                            },
+                                            "id": 2266,
+                                            "nodeType": "EmitStatement",
+                                            "src": "6432:68:5"
+                                        }
+                                    ]
+                                },
+                                "functionSelector": "3a0dbb1a",
+                                "id": 2268,
+                                "implemented": true,
+                                "kind": "function",
+                                "modifiers": [
+                                    {
+                                        "arguments": [
+                                            {
+                                                "id": 2162,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 2153,
+                                                "src": "5606:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "id": 2163,
+                                        "kind": "modifierInvocation",
+                                        "modifierName": {
+                                            "id": 2161,
+                                            "name": "checkRestrictions",
+                                            "nameLocations": [
+                                                "5588:17:5"
+                                            ],
+                                            "nodeType": "IdentifierPath",
+                                            "referencedDeclaration": 1800,
+                                            "src": "5588:17:5"
+                                        },
+                                        "nodeType": "ModifierInvocation",
+                                        "src": "5588:30:5"
+                                    }
+                                ],
+                                "name": "mintToSubstrateBulkProperty",
+                                "nameLocation": "5457:27:5",
+                                "nodeType": "FunctionDefinition",
+                                "parameters": {
+                                    "id": 2160,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [
+                                        {
+                                            "constant": false,
+                                            "id": 2153,
+                                            "mutability": "mutable",
+                                            "name": "_collection",
+                                            "nameLocation": "5496:11:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2268,
+                                            "src": "5488:19:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_address",
+                                                "typeString": "address"
+                                            },
+                                            "typeName": {
+                                                "id": 2152,
+                                                "name": "address",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5488:7:5",
+                                                "stateMutability": "nonpayable",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 2155,
+                                            "mutability": "mutable",
+                                            "name": "_substrateReceiver",
+                                            "nameLocation": "5519:18:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2268,
+                                            "src": "5511:26:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 2154,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "5511:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        },
+                                        {
+                                            "constant": false,
+                                            "id": 2159,
+                                            "mutability": "mutable",
+                                            "name": "_properties",
+                                            "nameLocation": "5564:11:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2268,
+                                            "src": "5541:34:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "calldata",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_calldata_ptr_$dyn_calldata_ptr",
+                                                "typeString": "struct Tuple21[]"
+                                            },
+                                            "typeName": {
+                                                "baseType": {
+                                                    "id": 2157,
+                                                    "nodeType": "UserDefinedTypeName",
+                                                    "pathNode": {
+                                                        "id": 2156,
+                                                        "name": "NftProperty",
+                                                        "nameLocations": [
+                                                            "5541:11:5"
+                                                        ],
+                                                        "nodeType": "IdentifierPath",
+                                                        "referencedDeclaration": 620,
+                                                        "src": "5541:11:5"
+                                                    },
+                                                    "referencedDeclaration": 620,
+                                                    "src": "5541:11:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_struct$_Tuple21_$620_storage_ptr",
+                                                        "typeString": "struct Tuple21"
+                                                    }
+                                                },
+                                                "id": 2158,
+                                                "nodeType": "ArrayTypeName",
+                                                "src": "5541:13:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_array$_t_struct$_Tuple21_$620_storage_$dyn_storage_ptr",
+                                                    "typeString": "struct Tuple21[]"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "src": "5484:94:5"
+                                },
+                                "returnParameters": {
+                                    "id": 2164,
+                                    "nodeType": "ParameterList",
+                                    "parameters": [],
+                                    "src": "5619:0:5"
+                                },
+                                "scope": 2269,
+                                "src": "5448:1056:5",
+                                "stateMutability": "nonpayable",
+                                "virtual": false,
+                                "visibility": "external"
+                            }
+                        ],
+                        "scope": 2270,
+                        "src": "673:5833:5",
+                        "usedErrors": []
+                    }
+                ],
+                "src": "44:6463:5"
+            },
+            "id": 5
+        }
+    }
+}
\ No newline at end of file
modifiedpallets/evm-contract-helpers/src/stubs/ContractHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungibleToken.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/unique/src/eth/stubs/CollectionHelpers.soldiffbeforeafterboth
--- a/pallets/unique/src/eth/stubs/CollectionHelpers.sol
+++ b/pallets/unique/src/eth/stubs/CollectionHelpers.sol
@@ -1,133 +0,0 @@
-// SPDX-License-Identifier: OTHER
-// This code is automatically generated
-
-pragma solidity >=0.8.0 <0.9.0;
-
-/// @dev common stubs holder
-contract Dummy {
-	uint8 dummy;
-	string stub_error = "this contract is implemented in native";
-}
-
-contract ERC165 is Dummy {
-	function supportsInterface(bytes4 interfaceID) external view returns (bool) {
-		require(false, stub_error);
-		interfaceID;
-		return true;
-	}
-}
-
-/// @dev inlined interface
-contract CollectionHelpersEvents {
-	event CollectionCreated(address indexed owner, address indexed collectionId);
-	event CollectionDestroyed(address indexed collectionId);
-}
-
-/// @title Contract, which allows users to operate with collections
-/// @dev the ERC-165 identifier for this interface is 0x7dea03b1
-contract CollectionHelpers is Dummy, ERC165, CollectionHelpersEvents {
-	/// Create an NFT collection
-	/// @param name Name of the collection
-	/// @param description Informative description of the collection
-	/// @param tokenPrefix Token prefix to represent the collection tokens in UI and user applications
-	/// @return address Address of the newly created collection
-	/// @dev EVM selector for this function is: 0x844af658,
-	///  or in textual repr: createNFTCollection(string,string,string)
-	function createNFTCollection(
-		string memory name,
-		string memory description,
-		string memory tokenPrefix
-	) public payable returns (address) {
-		require(false, stub_error);
-		name;
-		description;
-		tokenPrefix;
-		dummy = 0;
-		return 0x0000000000000000000000000000000000000000;
-	}
-
-	// /// Create an NFT collection
-	// /// @param name Name of the collection
-	// /// @param description Informative description of the collection
-	// /// @param tokenPrefix Token prefix to represent the collection tokens in UI and user applications
-	// /// @return address Address of the newly created collection
-	// /// @dev EVM selector for this function is: 0xe34a6844,
-	// ///  or in textual repr: createNonfungibleCollection(string,string,string)
-	// function createNonfungibleCollection(string memory name, string memory description, string memory tokenPrefix) public payable returns (address) {
-	// 	require(false, stub_error);
-	// 	name;
-	// 	description;
-	// 	tokenPrefix;
-	// 	dummy = 0;
-	// 	return 0x0000000000000000000000000000000000000000;
-	// }
-
-	/// @dev EVM selector for this function is: 0xab173450,
-	///  or in textual repr: createRFTCollection(string,string,string)
-	function createRFTCollection(
-		string memory name,
-		string memory description,
-		string memory tokenPrefix
-	) public payable returns (address) {
-		require(false, stub_error);
-		name;
-		description;
-		tokenPrefix;
-		dummy = 0;
-		return 0x0000000000000000000000000000000000000000;
-	}
-
-	/// @dev EVM selector for this function is: 0x7335b79f,
-	///  or in textual repr: createFTCollection(string,uint8,string,string)
-	function createFTCollection(
-		string memory name,
-		uint8 decimals,
-		string memory description,
-		string memory tokenPrefix
-	) public payable returns (address) {
-		require(false, stub_error);
-		name;
-		decimals;
-		description;
-		tokenPrefix;
-		dummy = 0;
-		return 0x0000000000000000000000000000000000000000;
-	}
-
-	/// @dev EVM selector for this function is: 0x85624258,
-	///  or in textual repr: makeCollectionERC721MetadataCompatible(address,string)
-	function makeCollectionERC721MetadataCompatible(address collection, string memory baseUri) public {
-		require(false, stub_error);
-		collection;
-		baseUri;
-		dummy = 0;
-	}
-
-	/// @dev EVM selector for this function is: 0x564e321f,
-	///  or in textual repr: destroyCollection(address)
-	function destroyCollection(address collectionAddress) public {
-		require(false, stub_error);
-		collectionAddress;
-		dummy = 0;
-	}
-
-	/// Check if a collection exists
-	/// @param collectionAddress Address of the collection in question
-	/// @return bool Does the collection exist?
-	/// @dev EVM selector for this function is: 0xc3de1494,
-	///  or in textual repr: isCollectionExist(address)
-	function isCollectionExist(address collectionAddress) public view returns (bool) {
-		require(false, stub_error);
-		collectionAddress;
-		dummy;
-		return false;
-	}
-
-	/// @dev EVM selector for this function is: 0xd23a7ab1,
-	///  or in textual repr: collectionCreationFee()
-	function collectionCreationFee() public view returns (uint256) {
-		require(false, stub_error);
-		dummy;
-		return 0;
-	}
-}
addedtests/src/eth/evmToSubstrate/ABI/EvmToSubstrate.jsondiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/ABI/EvmToSubstrate.json
@@ -0,0 +1,5909 @@
+{
+    "contractName": "EvmToSubstrate",
+    "abi": [
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "_toEth",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "_toSub",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "_collection",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "_tokenId",
+                    "type": "uint256"
+                }
+            ],
+            "name": "MintToSub",
+            "type": "event"
+        },
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "_collection",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_substrateReceiver",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mintToSubstrate",
+            "outputs": [],
+            "stateMutability": "nonpayable",
+            "type": "function"
+        },
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "_collection",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_substrateReceiver",
+                    "type": "uint256"
+                },
+                {
+                    "components": [
+                        {
+                            "internalType": "string",
+                            "name": "key",
+                            "type": "string"
+                        },
+                        {
+                            "internalType": "bytes",
+                            "name": "value",
+                            "type": "bytes"
+                        }
+                    ],
+                    "internalType": "struct Property[]",
+                    "name": "properties",
+                    "type": "tuple[]"
+                }
+            ],
+            "name": "mintToSubstrateWithProperty",
+            "outputs": [],
+            "stateMutability": "nonpayable",
+            "type": "function"
+        }
+    ],
+    "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_toEth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toSub\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MintToSub\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_substrateReceiver\",\"type\":\"uint256\"}],\"name\":\"mintToSubstrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collection\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_substrateReceiver\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"internalType\":\"struct Property[]\",\"name\":\"properties\",\"type\":\"tuple[]\"}],\"name\":\"mintToSubstrateWithProperty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"MintToSub(address,uint256,address,uint256)\":{\"details\":\"This emits when a mint to a substrate address has been made.\"}},\"kind\":\"dev\",\"methods\":{\"mintToSubstrate(address,uint256)\":{\"details\":\"Throws if RFT collection is already configured for this contract.  Throws if collection of wrong type (NFT, Fungible) is provided instead  of RFT collection.  Throws if `msg.sender` is not owner or admin of provided RFT collection.  Can only be called by contract owner.\",\"params\":{\"_collection\":\"address of RFT collection.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"mintToSubstrate(address,uint256)\":{\"notice\":\"Set RFT collection that contract will work with. RFT tokens for fractionalized NFT tokens would be created in this collection.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol\":\"EvmToSubstrate\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol\":{\"keccak256\":\"0xe91307f91e63b71da7395290b787ab8a4aeb8fe7d3a84cdae31cbce9fc9feda0\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://695a2b10727b1dc1630bc3b5beeda3b9c49a2b930ca55225f06dca1b171ecc58\",\"dweb:/ipfs/QmXvsf3FijN8NhkQza9iDkiF9CQJswhnHtWwLMxywVcEV6\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol\":{\"keccak256\":\"0xbf6cbc8921b46aceef74fcb0218f8af41a5c1c8c09278cd29b055d39af4ba06c\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://cb309a7e806ab15bf7db1469c70ce547e358783a8be709d48632062600bbdf58\",\"dweb:/ipfs/QmcUViezUamzuLB9Pp5AjwNbSNLdVqnrSbvrRMkHoEb5DY\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol\":{\"keccak256\":\"0x1f42224d400226c94cc333ee95b2158f91e157e49a056054dbef3295d603e7e9\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://fa5f97112c5d7b6749e3a3f554b6593706e132042ac669dc8b4c39f78e1160c1\",\"dweb:/ipfs/QmbrtRn7AbrH8Zu64m5aXJcNthooeZKgDC4NUm1WcJ6ZaU\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol\":{\"keccak256\":\"0x265d5f1642a84fcdc5ebc874fa9857ada43f85b8f2621a43f64873f8897b7fa6\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://324fc61ea39a5f834665612e023d90facbe6d0af444d4c7769bd32999d7ab441\",\"dweb:/ipfs/QmQX446wQKaFfPaQ6Wv4QaUojGYJvB7TxWPAcFt5UtbUqC\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol\":{\"keccak256\":\"0xb59b9048e1b781ac57c466c9d323422cac264676232514a713ccacdb531d9c40\",\"license\":\"OTHER\",\"urls\":[\"bzz-raw://51ce50ac81d569f7e385b41fa1a4bb77d3358fb83ae420fae65b73dec54feb05\",\"dweb:/ipfs/QmQSpdWmxammhuDwFWn9jTAnALKCgyNUYYGDVQF8QRzB3w\"]},\"/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol\":{\"keccak256\":\"0x3f58b981bf3923d570d2cd0c4aa5bb2650a76da628b6b3dd0d4ba32237f514bb\",\"license\":\"Apache License\",\"urls\":[\"bzz-raw://de485cdf79fde3f3de802182a9a9a43799d21ec4c2277e07988b430c49578c71\",\"dweb:/ipfs/QmVNdwyLMp7zQD5sZPDeE1SXwKQCX3yXhTLEki4pZcHu9u\"]}},\"version\":1}",
+    "bytecode": "608060405234801561001057600080fd5b50610e46806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063440dff9d1461003b5780637a8d978614610050575b600080fd5b61004e610049366004610aa4565b610063565b005b61004e61005e366004610b2e565b6106f9565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156100ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100cf9190610b58565b6100f45760405162461bcd60e51b81526004016100eb90610b81565b60405180910390fd5b82806101375760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b60448201526064016100eb565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa15801561017c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101a49190810190610be7565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b295820161043f5760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561023c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102609190610cb1565b6040516340c10f1960e01b8152306004820152602481018290529092506001600160a01b038216906340c10f19906044016020604051808303816000875af11580156102b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d49190610b58565b5060005b858110156103b357816001600160a01b0316631752d67b848c8c8581811061030257610302610cca565b90506020028101906103149190610ce0565b61031e9080610d00565b8e8e8781811061033057610330610cca565b90506020028101906103429190610ce0565b610350906020810190610d00565b6040518663ffffffff1660e01b8152600401610370959493929190610d77565b600060405180830381600087803b15801561038a57600080fd5b505af115801561039e573d6000803e3d6000fd5b50505050806103ac90610db0565b90506102d8565b50604080518082018252308152600060208083018290528351808501855291825281018d9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b92610407929091908790600401610dd7565b600060405180830381600087803b15801561042157600080fd5b505af1158015610435573d6000803e3d6000fd5b505050505061069d565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe96820161063b5760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e89190610cb1565b6040516340c10f1960e01b8152306004820152602481018290529092506001600160a01b038216906340c10f19906044016020604051808303816000875af1158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610b58565b5060005b858110156103b357816001600160a01b0316631752d67b848c8c8581811061058a5761058a610cca565b905060200281019061059c9190610ce0565b6105a69080610d00565b8e8e878181106105b8576105b8610cca565b90506020028101906105ca9190610ce0565b6105d8906020810190610d00565b6040518663ffffffff1660e01b81526004016105f8959493929190610d77565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b505050508061063490610db0565b9050610560565b60405162461bcd60e51b815260206004820152603160248201527f57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c6044820152701e481dda5d1a08139195081bdc88149195607a1b60648201526084016100eb565b6040805160008152602081018b90526001600160a01b038c16818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050505050565b604051639811b0c760e01b8152336004820152829081906001600160a01b03821690639811b0c790602401602060405180830381865afa158015610741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107659190610b58565b6107815760405162461bcd60e51b81526004016100eb90610b81565b60008490506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107ee9190810190610be7565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b29582016109aa576000879050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190610cb1565b6040516340c10f1960e01b8152306004820152602481018290529092506001600160a01b038216906340c10f19906044016020604051808303816000875af11580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e9190610b58565b50604080518082018252308152600060208083018290528351808501855291825281018a9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b92610972929091908790600401610dd7565b600060405180830381600087803b15801561098c57600080fd5b505af11580156109a0573d6000803e3d6000fd5b5050505050610a2f565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe96820161063b576000879050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610886573d6000803e3d6000fd5b6040805160008152602081018890526001600160a01b038916818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050565b80356001600160a01b0381168114610a9f57600080fd5b919050565b60008060008060608587031215610aba57600080fd5b610ac385610a88565b935060208501359250604085013567ffffffffffffffff80821115610ae757600080fd5b818701915087601f830112610afb57600080fd5b813581811115610b0a57600080fd5b8860208260051b8501011115610b1f57600080fd5b95989497505060200194505050565b60008060408385031215610b4157600080fd5b610b4a83610a88565b946020939093013593505050565b600060208284031215610b6a57600080fd5b81518015158114610b7a57600080fd5b9392505050565b60208082526030908201527f4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2060408201526f18d85b1b081d1a1a5cc81b595d1a1bd960821b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610bfa57600080fd5b825167ffffffffffffffff80821115610c1257600080fd5b818501915085601f830112610c2657600080fd5b815181811115610c3857610c38610bd1565b604051601f8201601f19908116603f01168101908382118183101715610c6057610c60610bd1565b816040528281528886848701011115610c7857600080fd5b600093505b82841015610c9a5784840186015181850187015292850192610c7d565b600086848301015280965050505050505092915050565b600060208284031215610cc357600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610cf657600080fd5b9190910192915050565b6000808335601e19843603018112610d1757600080fd5b83018035915067ffffffffffffffff821115610d3257600080fd5b602001915036819003821315610d4757600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152606060208201526000610d91606083018688610d4e565b8281036040840152610da4818587610d4e565b98975050505050505050565b600060018201610dd057634e487b7160e01b600052601160045260246000fd5b5060010190565b83516001600160a01b03908116825260209485015185830152835116604082015291909201516060820152608081019190915260a0019056fea2646970667358221220da8ff84a103be9db6b42d85b4650dc8a633327ec7c4a8dc98e58ce322129c48664736f6c63430008110033",
+    "deployedBytecode": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063440dff9d1461003b5780637a8d978614610050575b600080fd5b61004e610049366004610aa4565b610063565b005b61004e61005e366004610b2e565b6106f9565b604051639811b0c760e01b8152336004820152849081906001600160a01b03821690639811b0c790602401602060405180830381865afa1580156100ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100cf9190610b58565b6100f45760405162461bcd60e51b81526004016100eb90610b81565b60405180910390fd5b82806101375760405162461bcd60e51b815260206004820152601260248201527150726f70657269657320697320656d70747960701b60448201526064016100eb565b60008790506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa15801561017c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101a49190810190610be7565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b295820161043f5760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561023c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102609190610cb1565b6040516340c10f1960e01b8152306004820152602481018290529092506001600160a01b038216906340c10f19906044016020604051808303816000875af11580156102b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d49190610b58565b5060005b858110156103b357816001600160a01b0316631752d67b848c8c8581811061030257610302610cca565b90506020028101906103149190610ce0565b61031e9080610d00565b8e8e8781811061033057610330610cca565b90506020028101906103429190610ce0565b610350906020810190610d00565b6040518663ffffffff1660e01b8152600401610370959493929190610d77565b600060405180830381600087803b15801561038a57600080fd5b505af115801561039e573d6000803e3d6000fd5b50505050806103ac90610db0565b90506102d8565b50604080518082018252308152600060208083018290528351808501855291825281018d9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b92610407929091908790600401610dd7565b600060405180830381600087803b15801561042157600080fd5b505af1158015610435573d6000803e3d6000fd5b505050505061069d565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe96820161063b5760008a9050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e89190610cb1565b6040516340c10f1960e01b8152306004820152602481018290529092506001600160a01b038216906340c10f19906044016020604051808303816000875af1158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190610b58565b5060005b858110156103b357816001600160a01b0316631752d67b848c8c8581811061058a5761058a610cca565b905060200281019061059c9190610ce0565b6105a69080610d00565b8e8e878181106105b8576105b8610cca565b90506020028101906105ca9190610ce0565b6105d8906020810190610d00565b6040518663ffffffff1660e01b81526004016105f8959493929190610d77565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b505050508061063490610db0565b9050610560565b60405162461bcd60e51b815260206004820152603160248201527f57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c6044820152701e481dda5d1a08139195081bdc88149195607a1b60648201526084016100eb565b6040805160008152602081018b90526001600160a01b038c16818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050505050565b604051639811b0c760e01b8152336004820152829081906001600160a01b03821690639811b0c790602401602060405180830381865afa158015610741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107659190610b58565b6107815760405162461bcd60e51b81526004016100eb90610b81565b60008490506000816001600160a01b031663d34b55b86040518163ffffffff1660e01b8152600401600060405180830381865afa1580156107c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107ee9190810190610be7565b805160209182012060408051808201909152600a815269526546756e6769626c6560b01b920191909152905060007f3248d02b1e2f292b1142854ebdeec13d4b4f9224dbcdb24a3d7810fe54b7b29582016109aa576000879050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190610cb1565b6040516340c10f1960e01b8152306004820152602481018290529092506001600160a01b038216906340c10f19906044016020604051808303816000875af11580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e9190610b58565b50604080518082018252308152600060208083018290528351808501855291825281018a9052915163d5cf430b60e01b81526001600160a01b0384169263d5cf430b92610972929091908790600401610dd7565b600060405180830381600087803b15801561098c57600080fd5b505af11580156109a0573d6000803e3d6000fd5b5050505050610a2f565b60408051808201909152600381526213919560ea1b6020909101527f63bec732f5ecee1b8b708f2f01c23aa0f0a08a1f0df248cedda343c476ebfe96820161063b576000879050806001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610886573d6000803e3d6000fd5b6040805160008152602081018890526001600160a01b038916818301526060810183905290517ffb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb75359181900360800190a150505050505050565b80356001600160a01b0381168114610a9f57600080fd5b919050565b60008060008060608587031215610aba57600080fd5b610ac385610a88565b935060208501359250604085013567ffffffffffffffff80821115610ae757600080fd5b818701915087601f830112610afb57600080fd5b813581811115610b0a57600080fd5b8860208260051b8501011115610b1f57600080fd5b95989497505060200194505050565b60008060408385031215610b4157600080fd5b610b4a83610a88565b946020939093013593505050565b600060208284031215610b6a57600080fd5b81518015158114610b7a57600080fd5b9392505050565b60208082526030908201527f4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2060408201526f18d85b1b081d1a1a5cc81b595d1a1bd960821b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610bfa57600080fd5b825167ffffffffffffffff80821115610c1257600080fd5b818501915085601f830112610c2657600080fd5b815181811115610c3857610c38610bd1565b604051601f8201601f19908116603f01168101908382118183101715610c6057610c60610bd1565b816040528281528886848701011115610c7857600080fd5b600093505b82841015610c9a5784840186015181850187015292850192610c7d565b600086848301015280965050505050505092915050565b600060208284031215610cc357600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610cf657600080fd5b9190910192915050565b6000808335601e19843603018112610d1757600080fd5b83018035915067ffffffffffffffff821115610d3257600080fd5b602001915036819003821315610d4757600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152606060208201526000610d91606083018688610d4e565b8281036040840152610da4818587610d4e565b98975050505050505050565b600060018201610dd057634e487b7160e01b600052601160045260246000fd5b5060010190565b83516001600160a01b03908116825260209485015185830152835116604082015291909201516060820152608081019190915260a0019056fea2646970667358221220da8ff84a103be9db6b42d85b4650dc8a633327ec7c4a8dc98e58ce322129c48664736f6c63430008110033",
+    "sourceMap": "494:5314:5:-:0;;;;;;;;;;;;;;;;;;;",
+    "deployedSourceMap": "494:5314:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4031:1775;;;;;;:::i;:::-;;:::i;:::-;;2522:1506;;;;;;:::i;:::-;;:::i;4031:1775::-;1047:41;;-1:-1:-1;;;1047:41:5;;1077:10;1047:41;;;1387:51:6;4185:11:5;;;;-1:-1:-1;;;;;1047:29:5;;;;;1360:18:6;;1047:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1039:102;;;;-1:-1:-1;;;1039:102:5;;;;;;;:::i;:::-;;;;;;;;;4378:10;4407:20;4399:51:::1;;;::::0;-1:-1:-1;;;4399:51:5;;2350:2:6;4399:51:5::1;::::0;::::1;2332:21:6::0;2389:2;2369:18;;;2362:30;-1:-1:-1;;;2408:18:6;;;2401:48;2466:18;;4399:51:5::1;2148:342:6::0;4399:51:5::1;4455:25;4494:11;4455:51;;4510:22;4551:14;-1:-1:-1::0;;;;;4551:35:5::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;4551:37:5::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;4535:55:::0;;::::1;::::0;;::::1;::::0;577:19:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;577:19:5;::::1;::::0;;;;4535:55;-1:-1:-1;4594:15:5::1;4618:44:::0;;;4614:1064:::1;;4669:30;4719:11;4669:62;;4746:13;-1:-1:-1::0;;;;;4746:25:5::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4778:42;::::0;-1:-1:-1;;;4778:42:5;;4805:4:::1;4778:42;::::0;::::1;4037:51:6::0;4104:18;;;4097:34;;;4736:37:5;;-1:-1:-1;;;;;;4778:18:5;::::1;::::0;::::1;::::0;4010::6;;4778:42:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4830:9;4825:133;4849:16;4845:1;:20;4825:133;;;4878:13;-1:-1:-1::0;;;;;4878:25:5::1;;4904:7;4913:10;;4924:1;4913:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:17;::::0;;::::1;:::i;:::-;4932:10;;4943:1;4932:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;4878:74;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4867:3;;;;:::i;:::-;;;4825:133;;;-1:-1:-1::0;4999:35:5::1;::::0;;;;::::1;::::0;;5025:4:::1;4999:35:::0;;-1:-1:-1;4999:35:5::1;::::0;;::::1;::::0;;;5040:49;;;;::::1;::::0;;;;;;::::1;::::0;;;4962:145;;-1:-1:-1;;;4962:145:5;;-1:-1:-1;;;;;4962:31:5;::::1;::::0;::::1;::::0;:145:::1;::::0;4999:35;;5040:49;5095:7;;4962:145:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4664:448;4614:1064;;;657:12;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;657:12:5::1;::::0;;::::1;::::0;5122:45;;;5118:560:::1;;5174:23;5210:11;5174:48;;5237:13;-1:-1:-1::0;;;;;5237:25:5::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5269:42;::::0;-1:-1:-1;;;5269:42:5;;5296:4:::1;5269:42;::::0;::::1;4037:51:6::0;4104:18;;;4097:34;;;5227:37:5;;-1:-1:-1;;;;;;5269:18:5;::::1;::::0;::::1;::::0;4010::6;;5269:42:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5321:9;5316:133;5340:16;5336:1;:20;5316:133;;;5369:13;-1:-1:-1::0;;;;;5369:25:5::1;;5395:7;5404:10;;5415:1;5404:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:17;::::0;;::::1;:::i;:::-;5423:10;;5434:1;5423:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;5369:74;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5358:3;;;;:::i;:::-;;;5316:133;;5118:560;5614:59;::::0;-1:-1:-1;;;5614:59:5;;7969:2:6;5614:59:5::1;::::0;::::1;7951:21:6::0;8008:2;7988:18;;;7981:30;8047:34;8027:18;;;8020:62;-1:-1:-1;;;8098:18:6;;;8091:47;8155:19;;5614:59:5::1;7767:413:6::0;5118:560:5::1;5739:63;::::0;;5757:1:::1;8454:34:6::0;;8519:2;8504:18;;8497:34;;;-1:-1:-1;;;;;8567:15:6;;8547:18;;;8540:43;8614:2;8599:18;;8592:34;;;5739:63:5;;::::1;::::0;;;;8403:3:6;5739:63:5;;::::1;4198:1608;;;;980:889:::0;4031:1775;;;;;:::o;2522:1506::-;1047:41;;-1:-1:-1;;;1047:41:5;;1077:10;1047:41;;;1387:51:6;2623:11:5;;;;-1:-1:-1;;;;;1047:29:5;;;;;1360:18:6;;1047:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1039:102;;;;-1:-1:-1;;;1039:102:5;;;;;;;:::i;:::-;2786:25:::1;2825:11;2786:51;;2841:22;2882:14;-1:-1:-1::0;;;;;2882:35:5::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;2882:37:5::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;2866:55:::0;;::::1;::::0;;::::1;::::0;577:19:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;577:19:5;::::1;::::0;;;;2866:55;-1:-1:-1;2925:15:5::1;2949:44:::0;;;2945:792:::1;;3000:30;3050:11;3000:62;;3077:13;-1:-1:-1::0;;;;;3077:25:5::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3109:42;::::0;-1:-1:-1;;;3109:42:5;;3136:4:::1;3109:42;::::0;::::1;4037:51:6::0;4104:18;;;4097:34;;;3067:37:5;;-1:-1:-1;;;;;;3109:18:5;::::1;::::0;::::1;::::0;4010::6;;3109:42:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;3194:35:5::1;::::0;;;;::::1;::::0;;3220:4:::1;3194:35:::0;;-1:-1:-1;3194:35:5::1;::::0;;::::1;::::0;;;3235:49;;;;::::1;::::0;;;;;;::::1;::::0;;;3157:145;;-1:-1:-1;;;3157:145:5;;-1:-1:-1;;;;;3157:31:5;::::1;::::0;::::1;::::0;:145:::1;::::0;3194:35;;3235:49;3290:7;;3157:145:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2995:312;2945:792;;;657:12;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;657:12:5::1;::::0;;::::1;::::0;3317:45;;;3313:424:::1;;3369:23;3405:11;3369:48;;3432:13;-1:-1:-1::0;;;;;3432:25:5::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;3313:424;3961:63;::::0;;3979:1:::1;8454:34:6::0;;8519:2;8504:18;;8497:34;;;-1:-1:-1;;;;;8567:15:6;;8547:18;;;8540:43;8614:2;8599:18;;8592:34;;;3961:63:5;;::::1;::::0;;;;8403:3:6;3961:63:5;;::::1;2636:1392;;;980:889:::0;2522:1506;;;:::o;14:173:6:-;82:20;;-1:-1:-1;;;;;131:31:6;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:785::-;324:6;332;340;348;401:2;389:9;380:7;376:23;372:32;369:52;;;417:1;414;407:12;369:52;440:29;459:9;440:29;:::i;:::-;430:39;;516:2;505:9;501:18;488:32;478:42;;571:2;560:9;556:18;543:32;594:18;635:2;627:6;624:14;621:34;;;651:1;648;641:12;621:34;689:6;678:9;674:22;664:32;;734:7;727:4;723:2;719:13;715:27;705:55;;756:1;753;746:12;705:55;796:2;783:16;822:2;814:6;811:14;808:34;;;838:1;835;828:12;808:34;891:7;886:2;876:6;873:1;869:14;865:2;861:23;857:32;854:45;851:65;;;912:1;909;902:12;851:65;192:785;;;;-1:-1:-1;;943:2:6;935:11;;-1:-1:-1;;;192:785:6:o;982:254::-;1050:6;1058;1111:2;1099:9;1090:7;1086:23;1082:32;1079:52;;;1127:1;1124;1117:12;1079:52;1150:29;1169:9;1150:29;:::i;:::-;1140:39;1226:2;1211:18;;;;1198:32;;-1:-1:-1;;;982:254:6:o;1449:277::-;1516:6;1569:2;1557:9;1548:7;1544:23;1540:32;1537:52;;;1585:1;1582;1575:12;1537:52;1617:9;1611:16;1670:5;1663:13;1656:21;1649:5;1646:32;1636:60;;1692:1;1689;1682:12;1636:60;1715:5;1449:277;-1:-1:-1;;;1449:277:6:o;1731:412::-;1933:2;1915:21;;;1972:2;1952:18;;;1945:30;2011:34;2006:2;1991:18;;1984:62;-1:-1:-1;;;2077:2:6;2062:18;;2055:46;2133:3;2118:19;;1731:412::o;2495:127::-;2556:10;2551:3;2547:20;2544:1;2537:31;2587:4;2584:1;2577:15;2611:4;2608:1;2601:15;2627:1042;2707:6;2738:2;2781;2769:9;2760:7;2756:23;2752:32;2749:52;;;2797:1;2794;2787:12;2749:52;2830:9;2824:16;2859:18;2900:2;2892:6;2889:14;2886:34;;;2916:1;2913;2906:12;2886:34;2954:6;2943:9;2939:22;2929:32;;2999:7;2992:4;2988:2;2984:13;2980:27;2970:55;;3021:1;3018;3011:12;2970:55;3050:2;3044:9;3072:2;3068;3065:10;3062:36;;;3078:18;;:::i;:::-;3153:2;3147:9;3121:2;3207:13;;-1:-1:-1;;3203:22:6;;;3227:2;3199:31;3195:40;3183:53;;;3251:18;;;3271:22;;;3248:46;3245:72;;;3297:18;;:::i;:::-;3337:10;3333:2;3326:22;3372:2;3364:6;3357:18;3412:7;3407:2;3402;3398;3394:11;3390:20;3387:33;3384:53;;;3433:1;3430;3423:12;3384:53;3455:1;3446:10;;3465:129;3479:2;3476:1;3473:9;3465:129;;;3567:10;;;3563:19;;3557:26;3536:14;;;3532:23;;3525:59;3490:10;;;;3465:129;;;3636:1;3631:2;3626;3618:6;3614:15;3610:24;3603:35;3657:6;3647:16;;;;;;;;2627:1042;;;;:::o;3674:184::-;3744:6;3797:2;3785:9;3776:7;3772:23;3768:32;3765:52;;;3813:1;3810;3803:12;3765:52;-1:-1:-1;3836:16:6;;3674:184;-1:-1:-1;3674:184:6:o;4142:127::-;4203:10;4198:3;4194:20;4191:1;4184:31;4234:4;4231:1;4224:15;4258:4;4255:1;4248:15;4274:325;4368:4;4426:11;4413:25;4520:2;4516:7;4505:8;4489:14;4485:29;4481:43;4461:18;4457:68;4447:96;;4539:1;4536;4529:12;4447:96;4560:33;;;;;4274:325;-1:-1:-1;;4274:325:6:o;4604:522::-;4682:4;4688:6;4748:11;4735:25;4842:2;4838:7;4827:8;4811:14;4807:29;4803:43;4783:18;4779:68;4769:96;;4861:1;4858;4851:12;4769:96;4888:33;;4940:20;;;-1:-1:-1;4983:18:6;4972:30;;4969:50;;;5015:1;5012;5005:12;4969:50;5048:4;5036:17;;-1:-1:-1;5079:14:6;5075:27;;;5065:38;;5062:58;;;5116:1;5113;5106:12;5062:58;4604:522;;;;;:::o;5657:267::-;5746:6;5741:3;5734:19;5798:6;5791:5;5784:4;5779:3;5775:14;5762:43;-1:-1:-1;5850:1:6;5825:16;;;5843:4;5821:27;;;5814:38;;;;5906:2;5885:15;;;-1:-1:-1;;5881:29:6;5872:39;;;5868:50;;5657:267::o;5929:506::-;6172:6;6161:9;6154:25;6215:2;6210;6199:9;6195:18;6188:30;6135:4;6241:62;6299:2;6288:9;6284:18;6276:6;6268;6241:62;:::i;:::-;6351:9;6343:6;6339:22;6334:2;6323:9;6319:18;6312:50;6379;6422:6;6414;6406;6379:50;:::i;:::-;6371:58;5929:506;-1:-1:-1;;;;;;;;5929:506:6:o;6440:232::-;6479:3;6500:17;;;6497:140;;6559:10;6554:3;6550:20;6547:1;6540:31;6594:4;6591:1;6584:15;6622:4;6619:1;6612:15;6497:140;-1:-1:-1;6664:1:6;6653:13;;6440:232::o;6855:453::-;6753:12;;-1:-1:-1;;;;;6749:38:6;;;6737:51;;6837:4;6826:16;;;6820:23;6804:14;;;6797:47;6753:12;;6749:38;7254:2;7239:18;;6737:51;6826:16;;;;6820:23;6804:14;;;6797:47;7289:3;7274:19;;7267:35;;;;7141:3;7126:19;;6855:453::o",
+    "sourcePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol",
+    "compiler": {
+        "name": "solc",
+        "version": "0.8.17+commit.8df45f5f"
+    },
+    "ast": {
+        "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol",
+        "exportedSymbols": {
+            "Collection": [
+                1167
+            ],
+            "CollectionHelpers": [
+                89
+            ],
+            "ContractHelpers": [
+                272
+            ],
+            "EvmToSubstrate": [
+                2100
+            ],
+            "NftCrossAccountId": [
+                700
+            ],
+            "Property": [
+                1695
+            ],
+            "RftCrossAccountId": [
+                1315
+            ],
+            "UniqueNFT": [
+                893
+            ],
+            "UniqueRefungible": [
+                1508
+            ],
+            "UniqueRefungibleToken": [
+                1675
+            ]
+        },
+        "id": 2101,
+        "license": "Apache License",
+        "nodeType": "SourceUnit",
+        "nodes": [
+            {
+                "id": 1677,
+                "literals": [
+                    "solidity",
+                    ">=",
+                    "0.8",
+                    ".0"
+                ],
+                "nodeType": "PragmaDirective",
+                "src": "44:24:5"
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/CollectionHelpers.sol",
+                "file": "../api/CollectionHelpers.sol",
+                "id": 1679,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2101,
+                "sourceUnit": 90,
+                "src": "69:63:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1678,
+                            "name": "CollectionHelpers",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 89,
+                            "src": "77:17:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/ContractHelpers.sol",
+                "file": "../api/ContractHelpers.sol",
+                "id": 1681,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2101,
+                "sourceUnit": 278,
+                "src": "133:59:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1680,
+                            "name": "ContractHelpers",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 272,
+                            "src": "141:15:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungibleToken.sol",
+                "file": "../api/UniqueRefungibleToken.sol",
+                "id": 1683,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2101,
+                "sourceUnit": 1676,
+                "src": "193:71:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1682,
+                            "name": "UniqueRefungibleToken",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1675,
+                            "src": "201:21:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueRefungible.sol",
+                "file": "../api/UniqueRefungible.sol",
+                "id": 1687,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2101,
+                "sourceUnit": 1509,
+                "src": "265:102:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1684,
+                            "name": "UniqueRefungible",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1508,
+                            "src": "273:16:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1685,
+                            "name": "Collection",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1167,
+                            "src": "291:10:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1686,
+                            "name": "Tuple8",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 1315,
+                            "src": "303:6:5",
+                            "typeDescriptions": {}
+                        },
+                        "local": "RftCrossAccountId",
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "absolutePath": "/home/praetorp/Repos/Polkadot/unique-chain/tests/src/eth/api/UniqueNFT.sol",
+                "file": "../api/UniqueNFT.sol",
+                "id": 1690,
+                "nameLocation": "-1:-1:-1",
+                "nodeType": "ImportDirective",
+                "scope": 2101,
+                "sourceUnit": 894,
+                "src": "368:76:5",
+                "symbolAliases": [
+                    {
+                        "foreign": {
+                            "id": 1688,
+                            "name": "UniqueNFT",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 893,
+                            "src": "376:9:5",
+                            "typeDescriptions": {}
+                        },
+                        "nameLocation": "-1:-1:-1"
+                    },
+                    {
+                        "foreign": {
+                            "id": 1689,
+                            "name": "Tuple8",
+                            "nodeType": "Identifier",
+                            "overloadedDeclarations": [],
+                            "referencedDeclaration": 700,
+                            "src": "387:6:5",
+                            "typeDescriptions": {}
+                        },
+                        "local": "NftCrossAccountId",
+                        "nameLocation": "-1:-1:-1"
+                    }
+                ],
+                "unitAlias": ""
+            },
+            {
+                "canonicalName": "Property",
+                "id": 1695,
+                "members": [
+                    {
+                        "constant": false,
+                        "id": 1692,
+                        "mutability": "mutable",
+                        "name": "key",
+                        "nameLocation": "472:3:5",
+                        "nodeType": "VariableDeclaration",
+                        "scope": 1695,
+                        "src": "465:10:5",
+                        "stateVariable": false,
+                        "storageLocation": "default",
+                        "typeDescriptions": {
+                            "typeIdentifier": "t_string_storage_ptr",
+                            "typeString": "string"
+                        },
+                        "typeName": {
+                            "id": 1691,
+                            "name": "string",
+                            "nodeType": "ElementaryTypeName",
+                            "src": "465:6:5",
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_string_storage_ptr",
+                                "typeString": "string"
+                            }
+                        },
+                        "visibility": "internal"
+                    },
+                    {
+                        "constant": false,
+                        "id": 1694,
+                        "mutability": "mutable",
+                        "name": "value",
+                        "nameLocation": "484:5:5",
+                        "nodeType": "VariableDeclaration",
+                        "scope": 1695,
+                        "src": "478:11:5",
+                        "stateVariable": false,
+                        "storageLocation": "default",
+                        "typeDescriptions": {
+                            "typeIdentifier": "t_bytes_storage_ptr",
+                            "typeString": "bytes"
+                        },
+                        "typeName": {
+                            "id": 1693,
+                            "name": "bytes",
+                            "nodeType": "ElementaryTypeName",
+                            "src": "478:5:5",
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes_storage_ptr",
+                                "typeString": "bytes"
+                            }
+                        },
+                        "visibility": "internal"
+                    }
+                ],
+                "name": "Property",
+                "nameLocation": "453:8:5",
+                "nodeType": "StructDefinition",
+                "scope": 2101,
+                "src": "446:46:5",
+                "visibility": "public"
+            },
+            {
+                "abstract": false,
+                "baseContracts": [],
+                "canonicalName": "EvmToSubstrate",
+                "contractDependencies": [],
+                "contractKind": "contract",
+                "fullyImplemented": true,
+                "id": 2100,
+                "linearizedBaseContracts": [
+                    2100
+                ],
+                "name": "EvmToSubstrate",
+                "nameLocation": "503:14:5",
+                "nodeType": "ContractDefinition",
+                "nodes": [
+                    {
+                        "constant": true,
+                        "id": 1703,
+                        "mutability": "constant",
+                        "name": "REFUNGIBLE_COLLECTION_TYPE",
+                        "nameLocation": "538:26:5",
+                        "nodeType": "VariableDeclaration",
+                        "scope": 2100,
+                        "src": "521:76:5",
+                        "stateVariable": true,
+                        "storageLocation": "default",
+                        "typeDescriptions": {
+                            "typeIdentifier": "t_bytes32",
+                            "typeString": "bytes32"
+                        },
+                        "typeName": {
+                            "id": 1696,
+                            "name": "bytes32",
+                            "nodeType": "ElementaryTypeName",
+                            "src": "521:7:5",
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes32",
+                                "typeString": "bytes32"
+                            }
+                        },
+                        "value": {
+                            "arguments": [
+                                {
+                                    "arguments": [
+                                        {
+                                            "hexValue": "526546756e6769626c65",
+                                            "id": 1700,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": true,
+                                            "kind": "string",
+                                            "lValueRequested": false,
+                                            "nodeType": "Literal",
+                                            "src": "583:12:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_stringliteral_cdb72fd4e1d0d6d4eebd7ab142113ec2b4b06ddb24324db5c287ef01ab484d6b",
+                                                "typeString": "literal_string \"ReFungible\""
+                                            },
+                                            "value": "ReFungible"
+                                        }
+                                    ],
+                                    "expression": {
+                                        "argumentTypes": [
+                                            {
+                                                "typeIdentifier": "t_stringliteral_cdb72fd4e1d0d6d4eebd7ab142113ec2b4b06ddb24324db5c287ef01ab484d6b",
+                                                "typeString": "literal_string \"ReFungible\""
+                                            }
+                                        ],
+                                        "id": 1699,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": true,
+                                        "lValueRequested": false,
+                                        "nodeType": "ElementaryTypeNameExpression",
+                                        "src": "577:5:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                            "typeString": "type(bytes storage pointer)"
+                                        },
+                                        "typeName": {
+                                            "id": 1698,
+                                            "name": "bytes",
+                                            "nodeType": "ElementaryTypeName",
+                                            "src": "577:5:5",
+                                            "typeDescriptions": {}
+                                        }
+                                    },
+                                    "id": 1701,
+                                    "isConstant": false,
+                                    "isLValue": false,
+                                    "isPure": true,
+                                    "kind": "typeConversion",
+                                    "lValueRequested": false,
+                                    "nameLocations": [],
+                                    "names": [],
+                                    "nodeType": "FunctionCall",
+                                    "src": "577:19:5",
+                                    "tryCall": false,
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes_memory_ptr",
+                                        "typeString": "bytes memory"
+                                    }
+                                }
+                            ],
+                            "expression": {
+                                "argumentTypes": [
+                                    {
+                                        "typeIdentifier": "t_bytes_memory_ptr",
+                                        "typeString": "bytes memory"
+                                    }
+                                ],
+                                "id": 1697,
+                                "name": "keccak256",
+                                "nodeType": "Identifier",
+                                "overloadedDeclarations": [],
+                                "referencedDeclaration": 4294967288,
+                                "src": "567:9:5",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                    "typeString": "function (bytes memory) pure returns (bytes32)"
+                                }
+                            },
+                            "id": 1702,
+                            "isConstant": false,
+                            "isLValue": false,
+                            "isPure": true,
+                            "kind": "functionCall",
+                            "lValueRequested": false,
+                            "nameLocations": [],
+                            "names": [],
+                            "nodeType": "FunctionCall",
+                            "src": "567:30:5",
+                            "tryCall": false,
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes32",
+                                "typeString": "bytes32"
+                            }
+                        },
+                        "visibility": "internal"
+                    },
+                    {
+                        "constant": true,
+                        "id": 1711,
+                        "mutability": "constant",
+                        "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                        "nameLocation": "617:27:5",
+                        "nodeType": "VariableDeclaration",
+                        "scope": 2100,
+                        "src": "600:70:5",
+                        "stateVariable": true,
+                        "storageLocation": "default",
+                        "typeDescriptions": {
+                            "typeIdentifier": "t_bytes32",
+                            "typeString": "bytes32"
+                        },
+                        "typeName": {
+                            "id": 1704,
+                            "name": "bytes32",
+                            "nodeType": "ElementaryTypeName",
+                            "src": "600:7:5",
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes32",
+                                "typeString": "bytes32"
+                            }
+                        },
+                        "value": {
+                            "arguments": [
+                                {
+                                    "arguments": [
+                                        {
+                                            "hexValue": "4e4654",
+                                            "id": 1708,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": true,
+                                            "kind": "string",
+                                            "lValueRequested": false,
+                                            "nodeType": "Literal",
+                                            "src": "663:5:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_stringliteral_9c4138cd0a1311e4748f70d0fe3dc55f0f5f75e0f20db731225cbc3b8914016a",
+                                                "typeString": "literal_string \"NFT\""
+                                            },
+                                            "value": "NFT"
+                                        }
+                                    ],
+                                    "expression": {
+                                        "argumentTypes": [
+                                            {
+                                                "typeIdentifier": "t_stringliteral_9c4138cd0a1311e4748f70d0fe3dc55f0f5f75e0f20db731225cbc3b8914016a",
+                                                "typeString": "literal_string \"NFT\""
+                                            }
+                                        ],
+                                        "id": 1707,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": true,
+                                        "lValueRequested": false,
+                                        "nodeType": "ElementaryTypeNameExpression",
+                                        "src": "657:5:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                            "typeString": "type(bytes storage pointer)"
+                                        },
+                                        "typeName": {
+                                            "id": 1706,
+                                            "name": "bytes",
+                                            "nodeType": "ElementaryTypeName",
+                                            "src": "657:5:5",
+                                            "typeDescriptions": {}
+                                        }
+                                    },
+                                    "id": 1709,
+                                    "isConstant": false,
+                                    "isLValue": false,
+                                    "isPure": true,
+                                    "kind": "typeConversion",
+                                    "lValueRequested": false,
+                                    "nameLocations": [],
+                                    "names": [],
+                                    "nodeType": "FunctionCall",
+                                    "src": "657:12:5",
+                                    "tryCall": false,
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_bytes_memory_ptr",
+                                        "typeString": "bytes memory"
+                                    }
+                                }
+                            ],
+                            "expression": {
+                                "argumentTypes": [
+                                    {
+                                        "typeIdentifier": "t_bytes_memory_ptr",
+                                        "typeString": "bytes memory"
+                                    }
+                                ],
+                                "id": 1705,
+                                "name": "keccak256",
+                                "nodeType": "Identifier",
+                                "overloadedDeclarations": [],
+                                "referencedDeclaration": 4294967288,
+                                "src": "647:9:5",
+                                "typeDescriptions": {
+                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                    "typeString": "function (bytes memory) pure returns (bytes32)"
+                                }
+                            },
+                            "id": 1710,
+                            "isConstant": false,
+                            "isLValue": false,
+                            "isPure": true,
+                            "kind": "functionCall",
+                            "lValueRequested": false,
+                            "nameLocations": [],
+                            "names": [],
+                            "nodeType": "FunctionCall",
+                            "src": "647:23:5",
+                            "tryCall": false,
+                            "typeDescriptions": {
+                                "typeIdentifier": "t_bytes32",
+                                "typeString": "bytes32"
+                            }
+                        },
+                        "visibility": "internal"
+                    },
+                    {
+                        "body": {
+                            "id": 1732,
+                            "nodeType": "Block",
+                            "src": "980:889:5",
+                            "statements": [
+                                {
+                                    "assignments": [
+                                        1717
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1717,
+                                            "mutability": "mutable",
+                                            "name": "commonContract",
+                                            "nameLocation": "995:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1732,
+                                            "src": "984:25:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_contract$_Collection_$1167",
+                                                "typeString": "contract Collection"
+                                            },
+                                            "typeName": {
+                                                "id": 1716,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1715,
+                                                    "name": "Collection",
+                                                    "nameLocations": [
+                                                        "984:10:5"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1167,
+                                                    "src": "984:10:5"
+                                                },
+                                                "referencedDeclaration": 1167,
+                                                "src": "984:10:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1167",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1721,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "id": 1719,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1713,
+                                                "src": "1023:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            ],
+                                            "id": 1718,
+                                            "name": "Collection",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1167,
+                                            "src": "1012:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_type$_t_contract$_Collection_$1167_$",
+                                                "typeString": "type(contract Collection)"
+                                            }
+                                        },
+                                        "id": 1720,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "typeConversion",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "1012:23:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_contract$_Collection_$1167",
+                                            "typeString": "contract Collection"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "984:51:5"
+                                },
+                                {
+                                    "expression": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "expression": {
+                                                            "id": 1725,
+                                                            "name": "msg",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 4294967281,
+                                                            "src": "1077:3:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_magic_message",
+                                                                "typeString": "msg"
+                                                            }
+                                                        },
+                                                        "id": 1726,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "1081:6:5",
+                                                        "memberName": "sender",
+                                                        "nodeType": "MemberAccess",
+                                                        "src": "1077:10:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_address",
+                                                            "typeString": "address"
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "id": 1723,
+                                                        "name": "commonContract",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1717,
+                                                        "src": "1047:14:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_Collection_$1167",
+                                                            "typeString": "contract Collection"
+                                                        }
+                                                    },
+                                                    "id": 1724,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "memberLocation": "1062:14:5",
+                                                    "memberName": "isOwnerOrAdmin",
+                                                    "nodeType": "MemberAccess",
+                                                    "referencedDeclaration": 1131,
+                                                    "src": "1047:29:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
+                                                        "typeString": "function (address) view external returns (bool)"
+                                                    }
+                                                },
+                                                "id": 1727,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "functionCall",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "1047:41:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            {
+                                                "hexValue": "4f6e6c7920636f6c6c656374696f6e2061646d696e2f6f776e65722063616e2063616c6c2074686973206d6574686f64",
+                                                "id": 1728,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "string",
+                                                "lValueRequested": false,
+                                                "nodeType": "Literal",
+                                                "src": "1090:50:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3",
+                                                    "typeString": "literal_string \"Only collection admin/owner can call this method\""
+                                                },
+                                                "value": "Only collection admin/owner can call this method"
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_stringliteral_9e1b1a457a3a51e38b70747f3c56c9a0ede0f22582e6963b10271c34b83f1ca3",
+                                                    "typeString": "literal_string \"Only collection admin/owner can call this method\""
+                                                }
+                                            ],
+                                            "id": 1722,
+                                            "name": "require",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [
+                                                4294967278,
+                                                4294967278
+                                            ],
+                                            "referencedDeclaration": 4294967278,
+                                            "src": "1039:7:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+                                                "typeString": "function (bool,string memory) pure"
+                                            }
+                                        },
+                                        "id": 1729,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "1039:102:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 1730,
+                                    "nodeType": "ExpressionStatement",
+                                    "src": "1039:102:5"
+                                },
+                                {
+                                    "id": 1731,
+                                    "nodeType": "PlaceholderStatement",
+                                    "src": "1864:1:5"
+                                }
+                            ]
+                        },
+                        "id": 1733,
+                        "name": "checkRestrictions",
+                        "nameLocation": "941:17:5",
+                        "nodeType": "ModifierDefinition",
+                        "parameters": {
+                            "id": 1714,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 1713,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "967:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1733,
+                                    "src": "959:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1712,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "959:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "958:21:5"
+                        },
+                        "src": "932:937:5",
+                        "virtual": false,
+                        "visibility": "internal"
+                    },
+                    {
+                        "anonymous": false,
+                        "documentation": {
+                            "id": 1734,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "1872:69:5",
+                            "text": "@dev This emits when a mint to a substrate address has been made."
+                        },
+                        "eventSelector": "fb3433367f20c42151d30b3d2c634726a94c4f9fa7d45120606029741aeb7535",
+                        "id": 1744,
+                        "name": "MintToSub",
+                        "nameLocation": "1949:9:5",
+                        "nodeType": "EventDefinition",
+                        "parameters": {
+                            "id": 1743,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 1736,
+                                    "indexed": false,
+                                    "mutability": "mutable",
+                                    "name": "_toEth",
+                                    "nameLocation": "1967:6:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1744,
+                                    "src": "1959:14:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1735,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "1959:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1738,
+                                    "indexed": false,
+                                    "mutability": "mutable",
+                                    "name": "_toSub",
+                                    "nameLocation": "1983:6:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1744,
+                                    "src": "1975:14:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 1737,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "1975:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1740,
+                                    "indexed": false,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "1999:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1744,
+                                    "src": "1991:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1739,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "1991:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1742,
+                                    "indexed": false,
+                                    "mutability": "mutable",
+                                    "name": "_tokenId",
+                                    "nameLocation": "2020:8:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1744,
+                                    "src": "2012:16:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 1741,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2012:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "1958:71:5"
+                        },
+                        "src": "1943:87:5"
+                    },
+                    {
+                        "body": {
+                            "id": 1887,
+                            "nodeType": "Block",
+                            "src": "2636:1392:5",
+                            "statements": [
+                                {
+                                    "assignments": [
+                                        1757
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1757,
+                                            "mutability": "mutable",
+                                            "name": "commonContract",
+                                            "nameLocation": "2797:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1887,
+                                            "src": "2786:25:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_contract$_Collection_$1167",
+                                                "typeString": "contract Collection"
+                                            },
+                                            "typeName": {
+                                                "id": 1756,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1755,
+                                                    "name": "Collection",
+                                                    "nameLocations": [
+                                                        "2786:10:5"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1167,
+                                                    "src": "2786:10:5"
+                                                },
+                                                "referencedDeclaration": 1167,
+                                                "src": "2786:10:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1167",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1761,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "id": 1759,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1747,
+                                                "src": "2825:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            ],
+                                            "id": 1758,
+                                            "name": "Collection",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1167,
+                                            "src": "2814:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_type$_t_contract$_Collection_$1167_$",
+                                                "typeString": "type(contract Collection)"
+                                            }
+                                        },
+                                        "id": 1760,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "typeConversion",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "2814:23:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_contract$_Collection_$1167",
+                                            "typeString": "contract Collection"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "2786:51:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1763
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1763,
+                                            "mutability": "mutable",
+                                            "name": "collectionType",
+                                            "nameLocation": "2849:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1887,
+                                            "src": "2841:22:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "typeName": {
+                                                "id": 1762,
+                                                "name": "bytes32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2841:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1772,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [],
+                                                        "expression": {
+                                                            "argumentTypes": [],
+                                                            "expression": {
+                                                                "id": 1767,
+                                                                "name": "commonContract",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1757,
+                                                                "src": "2882:14:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_Collection_$1167",
+                                                                    "typeString": "contract Collection"
+                                                                }
+                                                            },
+                                                            "id": 1768,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "2897:20:5",
+                                                            "memberName": "uniqueCollectionType",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1146,
+                                                            "src": "2882:35:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
+                                                                "typeString": "function () view external returns (string memory)"
+                                                            }
+                                                        },
+                                                        "id": 1769,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "2882:37:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    ],
+                                                    "id": 1766,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "2876:5:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                        "typeString": "type(bytes storage pointer)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1765,
+                                                        "name": "bytes",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "2876:5:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 1770,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "2876:44:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            ],
+                                            "id": 1764,
+                                            "name": "keccak256",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 4294967288,
+                                            "src": "2866:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                                "typeString": "function (bytes memory) pure returns (bytes32)"
+                                            }
+                                        },
+                                        "id": 1771,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "2866:55:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "2841:80:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1774
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1774,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "2933:7:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 1887,
+                                            "src": "2925:15:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1773,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "2925:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1775,
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "2925:15:5"
+                                },
+                                {
+                                    "condition": {
+                                        "commonType": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        },
+                                        "id": 1778,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "lValueRequested": false,
+                                        "leftExpression": {
+                                            "id": 1776,
+                                            "name": "collectionType",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1763,
+                                            "src": "2949:14:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "nodeType": "BinaryOperation",
+                                        "operator": "==",
+                                        "rightExpression": {
+                                            "id": 1777,
+                                            "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1703,
+                                            "src": "2967:26:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "src": "2949:44:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bool",
+                                            "typeString": "bool"
+                                        }
+                                    },
+                                    "falseBody": {
+                                        "condition": {
+                                            "commonType": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "id": 1825,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": false,
+                                            "lValueRequested": false,
+                                            "leftExpression": {
+                                                "id": 1823,
+                                                "name": "collectionType",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1763,
+                                                "src": "3317:14:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "nodeType": "BinaryOperation",
+                                            "operator": "==",
+                                            "rightExpression": {
+                                                "id": 1824,
+                                                "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1711,
+                                                "src": "3335:27:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "src": "3317:45:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            }
+                                        },
+                                        "falseBody": {
+                                            "id": 1874,
+                                            "nodeType": "Block",
+                                            "src": "3668:69:5",
+                                            "statements": [
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c792077697468204e4654206f7220524654",
+                                                                "id": 1871,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "string",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "3680:51:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                },
+                                                                "value": "Wrong collection type. Works only with NFT or RFT"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                }
+                                                            ],
+                                                            "id": 1870,
+                                                            "name": "revert",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [
+                                                                4294967277,
+                                                                4294967277
+                                                            ],
+                                                            "referencedDeclaration": 4294967277,
+                                                            "src": "3673:6:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+                                                                "typeString": "function (string memory) pure"
+                                                            }
+                                                        },
+                                                        "id": 1872,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3673:59:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 1873,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "3673:59:5"
+                                                }
+                                            ]
+                                        },
+                                        "id": 1875,
+                                        "nodeType": "IfStatement",
+                                        "src": "3313:424:5",
+                                        "trueBody": {
+                                            "id": 1869,
+                                            "nodeType": "Block",
+                                            "src": "3364:298:5",
+                                            "statements": [
+                                                {
+                                                    "assignments": [
+                                                        1828
+                                                    ],
+                                                    "declarations": [
+                                                        {
+                                                            "constant": false,
+                                                            "id": 1828,
+                                                            "mutability": "mutable",
+                                                            "name": "nftCollection",
+                                                            "nameLocation": "3379:13:5",
+                                                            "nodeType": "VariableDeclaration",
+                                                            "scope": 1869,
+                                                            "src": "3369:23:5",
+                                                            "stateVariable": false,
+                                                            "storageLocation": "default",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                "typeString": "contract UniqueNFT"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 1827,
+                                                                "nodeType": "UserDefinedTypeName",
+                                                                "pathNode": {
+                                                                    "id": 1826,
+                                                                    "name": "UniqueNFT",
+                                                                    "nameLocations": [
+                                                                        "3369:9:5"
+                                                                    ],
+                                                                    "nodeType": "IdentifierPath",
+                                                                    "referencedDeclaration": 893,
+                                                                    "src": "3369:9:5"
+                                                                },
+                                                                "referencedDeclaration": 893,
+                                                                "src": "3369:9:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "visibility": "internal"
+                                                        }
+                                                    ],
+                                                    "id": 1832,
+                                                    "initialValue": {
+                                                        "arguments": [
+                                                            {
+                                                                "id": 1830,
+                                                                "name": "_collection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1747,
+                                                                "src": "3405:11:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            ],
+                                                            "id": 1829,
+                                                            "name": "UniqueNFT",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 893,
+                                                            "src": "3395:9:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_contract$_UniqueNFT_$893_$",
+                                                                "typeString": "type(contract UniqueNFT)"
+                                                            }
+                                                        },
+                                                        "id": 1831,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3395:22:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                            "typeString": "contract UniqueNFT"
+                                                        }
+                                                    },
+                                                    "nodeType": "VariableDeclarationStatement",
+                                                    "src": "3369:48:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "id": 1837,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftHandSide": {
+                                                            "id": 1833,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1774,
+                                                            "src": "3422:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "Assignment",
+                                                        "operator": "=",
+                                                        "rightHandSide": {
+                                                            "arguments": [],
+                                                            "expression": {
+                                                                "argumentTypes": [],
+                                                                "expression": {
+                                                                    "id": 1834,
+                                                                    "name": "nftCollection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1828,
+                                                                    "src": "3432:13:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                        "typeString": "contract UniqueNFT"
+                                                                    }
+                                                                },
+                                                                "id": 1835,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "3446:11:5",
+                                                                "memberName": "nextTokenId",
+                                                                "nodeType": "MemberAccess",
+                                                                "referencedDeclaration": 666,
+                                                                "src": "3432:25:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+                                                                    "typeString": "function () view external returns (uint256)"
+                                                                }
+                                                            },
+                                                            "id": 1836,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "functionCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "3432:27:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "src": "3422:37:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "id": 1838,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "3422:37:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 1844,
+                                                                        "name": "this",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 4294967268,
+                                                                        "src": "3491:4:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                            "typeString": "contract EvmToSubstrate"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                            "typeString": "contract EvmToSubstrate"
+                                                                        }
+                                                                    ],
+                                                                    "id": 1843,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                    "src": "3483:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                        "typeString": "type(address)"
+                                                                    },
+                                                                    "typeName": {
+                                                                        "id": 1842,
+                                                                        "name": "address",
+                                                                        "nodeType": "ElementaryTypeName",
+                                                                        "src": "3483:7:5",
+                                                                        "typeDescriptions": {}
+                                                                    }
+                                                                },
+                                                                "id": 1845,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "typeConversion",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "3483:13:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            },
+                                                            {
+                                                                "id": 1846,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1774,
+                                                                "src": "3498:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 1839,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1828,
+                                                                "src": "3464:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 1841,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "3478:4:5",
+                                                            "memberName": "mint",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 590,
+                                                            "src": "3464:18:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+                                                                "typeString": "function (address,uint256) external returns (bool)"
+                                                            }
+                                                        },
+                                                        "id": 1847,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3464:42:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        }
+                                                    },
+                                                    "id": 1848,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "3464:42:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "id": 1855,
+                                                                                "name": "this",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 4294967268,
+                                                                                "src": "3575:4:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            ],
+                                                                            "id": 1854,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "3567:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 1853,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "3567:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 1856,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "3567:13:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "hexValue": "30",
+                                                                        "id": 1857,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "number",
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "Literal",
+                                                                        "src": "3582:1:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        },
+                                                                        "value": "0"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        }
+                                                                    ],
+                                                                    "id": 1852,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 700,
+                                                                    "src": "3549:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_Tuple8_$700_storage_ptr_$",
+                                                                        "typeString": "type(struct Tuple8 storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 1858,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "3549:35:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_Tuple8_$700_memory_ptr",
+                                                                    "typeString": "struct Tuple8 memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "hexValue": "30",
+                                                                                "id": 1862,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "number",
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "Literal",
+                                                                                "src": "3616:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                },
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                }
+                                                                            ],
+                                                                            "id": 1861,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "3608:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 1860,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "3608:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 1863,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "3608:10:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 1864,
+                                                                        "name": "_substrateReceiver",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1749,
+                                                                        "src": "3620:18:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    ],
+                                                                    "id": 1859,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 700,
+                                                                    "src": "3590:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_Tuple8_$700_storage_ptr_$",
+                                                                        "typeString": "type(struct Tuple8 storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 1865,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "3590:49:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_Tuple8_$700_memory_ptr",
+                                                                    "typeString": "struct Tuple8 memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "id": 1866,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1774,
+                                                                "src": "3645:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_Tuple8_$700_memory_ptr",
+                                                                    "typeString": "struct Tuple8 memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_Tuple8_$700_memory_ptr",
+                                                                    "typeString": "struct Tuple8 memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 1849,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1828,
+                                                                "src": "3512:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 1851,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "3526:17:5",
+                                                            "memberName": "transferFromCross",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 643,
+                                                            "src": "3512:31:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_struct$_Tuple8_$700_memory_ptr_$_t_struct$_Tuple8_$700_memory_ptr_$_t_uint256_$returns$__$",
+                                                                "typeString": "function (struct Tuple8 memory,struct Tuple8 memory,uint256) external"
+                                                            }
+                                                        },
+                                                        "id": 1867,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3512:145:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 1868,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "3512:145:5"
+                                                }
+                                            ]
+                                        }
+                                    },
+                                    "id": 1876,
+                                    "nodeType": "IfStatement",
+                                    "src": "2945:792:5",
+                                    "trueBody": {
+                                        "id": 1822,
+                                        "nodeType": "Block",
+                                        "src": "2995:312:5",
+                                        "statements": [
+                                            {
+                                                "assignments": [
+                                                    1781
+                                                ],
+                                                "declarations": [
+                                                    {
+                                                        "constant": false,
+                                                        "id": 1781,
+                                                        "mutability": "mutable",
+                                                        "name": "rftCollection",
+                                                        "nameLocation": "3017:13:5",
+                                                        "nodeType": "VariableDeclaration",
+                                                        "scope": 1822,
+                                                        "src": "3000:30:5",
+                                                        "stateVariable": false,
+                                                        "storageLocation": "default",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                            "typeString": "contract UniqueRefungible"
+                                                        },
+                                                        "typeName": {
+                                                            "id": 1780,
+                                                            "nodeType": "UserDefinedTypeName",
+                                                            "pathNode": {
+                                                                "id": 1779,
+                                                                "name": "UniqueRefungible",
+                                                                "nameLocations": [
+                                                                    "3000:16:5"
+                                                                ],
+                                                                "nodeType": "IdentifierPath",
+                                                                "referencedDeclaration": 1508,
+                                                                "src": "3000:16:5"
+                                                            },
+                                                            "referencedDeclaration": 1508,
+                                                            "src": "3000:16:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "visibility": "internal"
+                                                    }
+                                                ],
+                                                "id": 1785,
+                                                "initialValue": {
+                                                    "arguments": [
+                                                        {
+                                                            "id": 1783,
+                                                            "name": "_collection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1747,
+                                                            "src": "3050:11:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        ],
+                                                        "id": 1782,
+                                                        "name": "UniqueRefungible",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1508,
+                                                        "src": "3033:16:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_type$_t_contract$_UniqueRefungible_$1508_$",
+                                                            "typeString": "type(contract UniqueRefungible)"
+                                                        }
+                                                    },
+                                                    "id": 1784,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "typeConversion",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "3033:29:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                        "typeString": "contract UniqueRefungible"
+                                                    }
+                                                },
+                                                "nodeType": "VariableDeclarationStatement",
+                                                "src": "3000:62:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "id": 1790,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftHandSide": {
+                                                        "id": 1786,
+                                                        "name": "tokenId",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1774,
+                                                        "src": "3067:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "nodeType": "Assignment",
+                                                    "operator": "=",
+                                                    "rightHandSide": {
+                                                        "arguments": [],
+                                                        "expression": {
+                                                            "argumentTypes": [],
+                                                            "expression": {
+                                                                "id": 1787,
+                                                                "name": "rftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1781,
+                                                                "src": "3077:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                    "typeString": "contract UniqueRefungible"
+                                                                }
+                                                            },
+                                                            "id": 1788,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "3091:11:5",
+                                                            "memberName": "nextTokenId",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1273,
+                                                            "src": "3077:25:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+                                                                "typeString": "function () view external returns (uint256)"
+                                                            }
+                                                        },
+                                                        "id": 1789,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "3077:27:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "src": "3067:37:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    }
+                                                },
+                                                "id": 1791,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "3067:37:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "arguments": [
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "id": 1797,
+                                                                    "name": "this",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 4294967268,
+                                                                    "src": "3136:4:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                        "typeString": "contract EvmToSubstrate"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                        "typeString": "contract EvmToSubstrate"
+                                                                    }
+                                                                ],
+                                                                "id": 1796,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "lValueRequested": false,
+                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                "src": "3128:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                    "typeString": "type(address)"
+                                                                },
+                                                                "typeName": {
+                                                                    "id": 1795,
+                                                                    "name": "address",
+                                                                    "nodeType": "ElementaryTypeName",
+                                                                    "src": "3128:7:5",
+                                                                    "typeDescriptions": {}
+                                                                }
+                                                            },
+                                                            "id": 1798,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "typeConversion",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "3128:13:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        },
+                                                        {
+                                                            "id": 1799,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1774,
+                                                            "src": "3143:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "id": 1792,
+                                                            "name": "rftCollection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1781,
+                                                            "src": "3109:13:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "id": 1794,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "3123:4:5",
+                                                        "memberName": "mint",
+                                                        "nodeType": "MemberAccess",
+                                                        "referencedDeclaration": 1206,
+                                                        "src": "3109:18:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+                                                            "typeString": "function (address,uint256) external returns (bool)"
+                                                        }
+                                                    },
+                                                    "id": 1800,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "functionCall",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "3109:42:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bool",
+                                                        "typeString": "bool"
+                                                    }
+                                                },
+                                                "id": 1801,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "3109:42:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "arguments": [
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 1808,
+                                                                            "name": "this",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 4294967268,
+                                                                            "src": "3220:4:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1807,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "3212:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 1806,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "3212:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 1809,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "3212:13:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "hexValue": "30",
+                                                                    "id": 1810,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "number",
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "Literal",
+                                                                    "src": "3227:1:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    },
+                                                                    "value": "0"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    }
+                                                                ],
+                                                                "id": 1805,
+                                                                "name": "RftCrossAccountId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1315,
+                                                                "src": "3194:17:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_struct$_Tuple8_$1315_storage_ptr_$",
+                                                                    "typeString": "type(struct Tuple8 storage pointer)"
+                                                                }
+                                                            },
+                                                            "id": 1811,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "structConstructorCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "3194:35:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_struct$_Tuple8_$1315_memory_ptr",
+                                                                "typeString": "struct Tuple8 memory"
+                                                            }
+                                                        },
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "hexValue": "30",
+                                                                            "id": 1815,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "kind": "number",
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "Literal",
+                                                                            "src": "3261:1:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            },
+                                                                            "value": "0"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1814,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "3253:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 1813,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "3253:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 1816,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "3253:10:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "id": 1817,
+                                                                    "name": "_substrateReceiver",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1749,
+                                                                    "src": "3265:18:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                ],
+                                                                "id": 1812,
+                                                                "name": "RftCrossAccountId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1315,
+                                                                "src": "3235:17:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_struct$_Tuple8_$1315_storage_ptr_$",
+                                                                    "typeString": "type(struct Tuple8 storage pointer)"
+                                                                }
+                                                            },
+                                                            "id": 1818,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "structConstructorCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "3235:49:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_struct$_Tuple8_$1315_memory_ptr",
+                                                                "typeString": "struct Tuple8 memory"
+                                                            }
+                                                        },
+                                                        {
+                                                            "id": 1819,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1774,
+                                                            "src": "3290:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_struct$_Tuple8_$1315_memory_ptr",
+                                                                "typeString": "struct Tuple8 memory"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_struct$_Tuple8_$1315_memory_ptr",
+                                                                "typeString": "struct Tuple8 memory"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "id": 1802,
+                                                            "name": "rftCollection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1781,
+                                                            "src": "3157:13:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "id": 1804,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "3171:17:5",
+                                                        "memberName": "transferFromCross",
+                                                        "nodeType": "MemberAccess",
+                                                        "referencedDeclaration": 1250,
+                                                        "src": "3157:31:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_function_external_nonpayable$_t_struct$_Tuple8_$1315_memory_ptr_$_t_struct$_Tuple8_$1315_memory_ptr_$_t_uint256_$returns$__$",
+                                                            "typeString": "function (struct Tuple8 memory,struct Tuple8 memory,uint256) external"
+                                                        }
+                                                    },
+                                                    "id": 1820,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "functionCall",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "3157:145:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_tuple$__$",
+                                                        "typeString": "tuple()"
+                                                    }
+                                                },
+                                                "id": 1821,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "3157:145:5"
+                                            }
+                                        ]
+                                    }
+                                },
+                                {
+                                    "eventCall": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "hexValue": "30",
+                                                        "id": 1880,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "number",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "3979:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        },
+                                                        "value": "0"
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        }
+                                                    ],
+                                                    "id": 1879,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "3971:7:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                        "typeString": "type(address)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1878,
+                                                        "name": "address",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "3971:7:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 1881,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "3971:10:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 1882,
+                                                "name": "_substrateReceiver",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1749,
+                                                "src": "3983:18:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            {
+                                                "id": 1883,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1747,
+                                                "src": "4003:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 1884,
+                                                "name": "tokenId",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1774,
+                                                "src": "4016:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            ],
+                                            "id": 1877,
+                                            "name": "MintToSub",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1744,
+                                            "src": "3961:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+                                                "typeString": "function (address,uint256,address,uint256)"
+                                            }
+                                        },
+                                        "id": 1885,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "3961:63:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 1886,
+                                    "nodeType": "EmitStatement",
+                                    "src": "3956:68:5"
+                                }
+                            ]
+                        },
+                        "documentation": {
+                            "id": 1745,
+                            "nodeType": "StructuredDocumentation",
+                            "src": "2033:487:5",
+                            "text": "Set RFT collection that contract will work with. RFT tokens for fractionalized NFT tokens\n would be created in this collection.\n @dev Throws if RFT collection is already configured for this contract.\n  Throws if collection of wrong type (NFT, Fungible) is provided instead\n  of RFT collection.\n  Throws if `msg.sender` is not owner or admin of provided RFT collection.\n  Can only be called by contract owner.\n @param _collection address of RFT collection."
+                        },
+                        "functionSelector": "7a8d9786",
+                        "id": 1888,
+                        "implemented": true,
+                        "kind": "function",
+                        "modifiers": [
+                            {
+                                "arguments": [
+                                    {
+                                        "id": 1752,
+                                        "name": "_collection",
+                                        "nodeType": "Identifier",
+                                        "overloadedDeclarations": [],
+                                        "referencedDeclaration": 1747,
+                                        "src": "2623:11:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    }
+                                ],
+                                "id": 1753,
+                                "kind": "modifierInvocation",
+                                "modifierName": {
+                                    "id": 1751,
+                                    "name": "checkRestrictions",
+                                    "nameLocations": [
+                                        "2605:17:5"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1733,
+                                    "src": "2605:17:5"
+                                },
+                                "nodeType": "ModifierInvocation",
+                                "src": "2605:30:5"
+                            }
+                        ],
+                        "name": "mintToSubstrate",
+                        "nameLocation": "2531:15:5",
+                        "nodeType": "FunctionDefinition",
+                        "parameters": {
+                            "id": 1750,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 1747,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "2555:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1888,
+                                    "src": "2547:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1746,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2547:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1749,
+                                    "mutability": "mutable",
+                                    "name": "_substrateReceiver",
+                                    "nameLocation": "2576:18:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 1888,
+                                    "src": "2568:26:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 1748,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "2568:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "2546:49:5"
+                        },
+                        "returnParameters": {
+                            "id": 1754,
+                            "nodeType": "ParameterList",
+                            "parameters": [],
+                            "src": "2636:0:5"
+                        },
+                        "scope": 2100,
+                        "src": "2522:1506:5",
+                        "stateMutability": "nonpayable",
+                        "virtual": false,
+                        "visibility": "external"
+                    },
+                    {
+                        "body": {
+                            "id": 2098,
+                            "nodeType": "Block",
+                            "src": "4198:1608:5",
+                            "statements": [
+                                {
+                                    "assignments": [
+                                        1903
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1903,
+                                            "mutability": "mutable",
+                                            "name": "propertiesLength",
+                                            "nameLocation": "4359:16:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2098,
+                                            "src": "4351:24:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1902,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4351:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1906,
+                                    "initialValue": {
+                                        "expression": {
+                                            "id": 1904,
+                                            "name": "properties",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1896,
+                                            "src": "4378:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_array$_t_struct$_Property_$1695_calldata_ptr_$dyn_calldata_ptr",
+                                                "typeString": "struct Property calldata[] calldata"
+                                            }
+                                        },
+                                        "id": 1905,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "lValueRequested": false,
+                                        "memberLocation": "4389:6:5",
+                                        "memberName": "length",
+                                        "nodeType": "MemberAccess",
+                                        "src": "4378:17:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "4351:44:5"
+                                },
+                                {
+                                    "expression": {
+                                        "arguments": [
+                                            {
+                                                "commonType": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                },
+                                                "id": 1910,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "lValueRequested": false,
+                                                "leftExpression": {
+                                                    "id": 1908,
+                                                    "name": "propertiesLength",
+                                                    "nodeType": "Identifier",
+                                                    "overloadedDeclarations": [],
+                                                    "referencedDeclaration": 1903,
+                                                    "src": "4407:16:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    }
+                                                },
+                                                "nodeType": "BinaryOperation",
+                                                "operator": ">",
+                                                "rightExpression": {
+                                                    "hexValue": "30",
+                                                    "id": 1909,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "kind": "number",
+                                                    "lValueRequested": false,
+                                                    "nodeType": "Literal",
+                                                    "src": "4426:1:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                        "typeString": "int_const 0"
+                                                    },
+                                                    "value": "0"
+                                                },
+                                                "src": "4407:20:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                }
+                                            },
+                                            {
+                                                "hexValue": "50726f70657269657320697320656d707479",
+                                                "id": 1911,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "string",
+                                                "lValueRequested": false,
+                                                "nodeType": "Literal",
+                                                "src": "4429:20:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                    "typeString": "literal_string \"Properies is empty\""
+                                                },
+                                                "value": "Properies is empty"
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bool",
+                                                    "typeString": "bool"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_stringliteral_3c3e0098388726dfb54bb3f478f469c7fc9acc2aa2937bb94957726165b135a1",
+                                                    "typeString": "literal_string \"Properies is empty\""
+                                                }
+                                            ],
+                                            "id": 1907,
+                                            "name": "require",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [
+                                                4294967278,
+                                                4294967278
+                                            ],
+                                            "referencedDeclaration": 4294967278,
+                                            "src": "4399:7:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+                                                "typeString": "function (bool,string memory) pure"
+                                            }
+                                        },
+                                        "id": 1912,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "4399:51:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 1913,
+                                    "nodeType": "ExpressionStatement",
+                                    "src": "4399:51:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1916
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1916,
+                                            "mutability": "mutable",
+                                            "name": "commonContract",
+                                            "nameLocation": "4466:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2098,
+                                            "src": "4455:25:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_contract$_Collection_$1167",
+                                                "typeString": "contract Collection"
+                                            },
+                                            "typeName": {
+                                                "id": 1915,
+                                                "nodeType": "UserDefinedTypeName",
+                                                "pathNode": {
+                                                    "id": 1914,
+                                                    "name": "Collection",
+                                                    "nameLocations": [
+                                                        "4455:10:5"
+                                                    ],
+                                                    "nodeType": "IdentifierPath",
+                                                    "referencedDeclaration": 1167,
+                                                    "src": "4455:10:5"
+                                                },
+                                                "referencedDeclaration": 1167,
+                                                "src": "4455:10:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_contract$_Collection_$1167",
+                                                    "typeString": "contract Collection"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1920,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "id": 1918,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1890,
+                                                "src": "4494:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            ],
+                                            "id": 1917,
+                                            "name": "Collection",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1167,
+                                            "src": "4483:10:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_type$_t_contract$_Collection_$1167_$",
+                                                "typeString": "type(contract Collection)"
+                                            }
+                                        },
+                                        "id": 1919,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "typeConversion",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "4483:23:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_contract$_Collection_$1167",
+                                            "typeString": "contract Collection"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "4455:51:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1922
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1922,
+                                            "mutability": "mutable",
+                                            "name": "collectionType",
+                                            "nameLocation": "4518:14:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2098,
+                                            "src": "4510:22:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "typeName": {
+                                                "id": 1921,
+                                                "name": "bytes32",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4510:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1931,
+                                    "initialValue": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "arguments": [],
+                                                        "expression": {
+                                                            "argumentTypes": [],
+                                                            "expression": {
+                                                                "id": 1926,
+                                                                "name": "commonContract",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1916,
+                                                                "src": "4551:14:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_Collection_$1167",
+                                                                    "typeString": "contract Collection"
+                                                                }
+                                                            },
+                                                            "id": 1927,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "4566:20:5",
+                                                            "memberName": "uniqueCollectionType",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1146,
+                                                            "src": "4551:35:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
+                                                                "typeString": "function () view external returns (string memory)"
+                                                            }
+                                                        },
+                                                        "id": 1928,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "4551:37:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_string_memory_ptr",
+                                                            "typeString": "string memory"
+                                                        }
+                                                    ],
+                                                    "id": 1925,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "4545:5:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+                                                        "typeString": "type(bytes storage pointer)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 1924,
+                                                        "name": "bytes",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "4545:5:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 1929,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": false,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "4545:44:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_bytes_memory_ptr",
+                                                    "typeString": "bytes memory"
+                                                }
+                                            ],
+                                            "id": 1923,
+                                            "name": "keccak256",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 4294967288,
+                                            "src": "4535:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+                                                "typeString": "function (bytes memory) pure returns (bytes32)"
+                                            }
+                                        },
+                                        "id": 1930,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "4535:55:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        }
+                                    },
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "4510:80:5"
+                                },
+                                {
+                                    "assignments": [
+                                        1933
+                                    ],
+                                    "declarations": [
+                                        {
+                                            "constant": false,
+                                            "id": 1933,
+                                            "mutability": "mutable",
+                                            "name": "tokenId",
+                                            "nameLocation": "4602:7:5",
+                                            "nodeType": "VariableDeclaration",
+                                            "scope": 2098,
+                                            "src": "4594:15:5",
+                                            "stateVariable": false,
+                                            "storageLocation": "default",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_uint256",
+                                                "typeString": "uint256"
+                                            },
+                                            "typeName": {
+                                                "id": 1932,
+                                                "name": "uint256",
+                                                "nodeType": "ElementaryTypeName",
+                                                "src": "4594:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            "visibility": "internal"
+                                        }
+                                    ],
+                                    "id": 1934,
+                                    "nodeType": "VariableDeclarationStatement",
+                                    "src": "4594:15:5"
+                                },
+                                {
+                                    "condition": {
+                                        "commonType": {
+                                            "typeIdentifier": "t_bytes32",
+                                            "typeString": "bytes32"
+                                        },
+                                        "id": 1937,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "lValueRequested": false,
+                                        "leftExpression": {
+                                            "id": 1935,
+                                            "name": "collectionType",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1922,
+                                            "src": "4618:14:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "nodeType": "BinaryOperation",
+                                        "operator": "==",
+                                        "rightExpression": {
+                                            "id": 1936,
+                                            "name": "REFUNGIBLE_COLLECTION_TYPE",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1703,
+                                            "src": "4636:26:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            }
+                                        },
+                                        "src": "4618:44:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_bool",
+                                            "typeString": "bool"
+                                        }
+                                    },
+                                    "falseBody": {
+                                        "condition": {
+                                            "commonType": {
+                                                "typeIdentifier": "t_bytes32",
+                                                "typeString": "bytes32"
+                                            },
+                                            "id": 2010,
+                                            "isConstant": false,
+                                            "isLValue": false,
+                                            "isPure": false,
+                                            "lValueRequested": false,
+                                            "leftExpression": {
+                                                "id": 2008,
+                                                "name": "collectionType",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1922,
+                                                "src": "5122:14:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "nodeType": "BinaryOperation",
+                                            "operator": "==",
+                                            "rightExpression": {
+                                                "id": 2009,
+                                                "name": "NONFUNGIBLE_COLLECTION_TYPE",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1711,
+                                                "src": "5140:27:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_bytes32",
+                                                    "typeString": "bytes32"
+                                                }
+                                            },
+                                            "src": "5122:45:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_bool",
+                                                "typeString": "bool"
+                                            }
+                                        },
+                                        "falseBody": {
+                                            "id": 2085,
+                                            "nodeType": "Block",
+                                            "src": "5609:69:5",
+                                            "statements": [
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "hexValue": "57726f6e6720636f6c6c656374696f6e20747970652e20576f726b73206f6e6c792077697468204e4654206f7220524654",
+                                                                "id": 2082,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "kind": "string",
+                                                                "lValueRequested": false,
+                                                                "nodeType": "Literal",
+                                                                "src": "5621:51:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                },
+                                                                "value": "Wrong collection type. Works only with NFT or RFT"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_stringliteral_a720d6ef8719206bfa9a6cc035f350312523cbf9cf6cd62b2324270bef55372a",
+                                                                    "typeString": "literal_string \"Wrong collection type. Works only with NFT or RFT\""
+                                                                }
+                                                            ],
+                                                            "id": 2081,
+                                                            "name": "revert",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [
+                                                                4294967277,
+                                                                4294967277
+                                                            ],
+                                                            "referencedDeclaration": 4294967277,
+                                                            "src": "5614:6:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+                                                                "typeString": "function (string memory) pure"
+                                                            }
+                                                        },
+                                                        "id": 2083,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5614:59:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 2084,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "5614:59:5"
+                                                }
+                                            ]
+                                        },
+                                        "id": 2086,
+                                        "nodeType": "IfStatement",
+                                        "src": "5118:560:5",
+                                        "trueBody": {
+                                            "id": 2080,
+                                            "nodeType": "Block",
+                                            "src": "5169:434:5",
+                                            "statements": [
+                                                {
+                                                    "assignments": [
+                                                        2013
+                                                    ],
+                                                    "declarations": [
+                                                        {
+                                                            "constant": false,
+                                                            "id": 2013,
+                                                            "mutability": "mutable",
+                                                            "name": "nftCollection",
+                                                            "nameLocation": "5184:13:5",
+                                                            "nodeType": "VariableDeclaration",
+                                                            "scope": 2080,
+                                                            "src": "5174:23:5",
+                                                            "stateVariable": false,
+                                                            "storageLocation": "default",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                "typeString": "contract UniqueNFT"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 2012,
+                                                                "nodeType": "UserDefinedTypeName",
+                                                                "pathNode": {
+                                                                    "id": 2011,
+                                                                    "name": "UniqueNFT",
+                                                                    "nameLocations": [
+                                                                        "5174:9:5"
+                                                                    ],
+                                                                    "nodeType": "IdentifierPath",
+                                                                    "referencedDeclaration": 893,
+                                                                    "src": "5174:9:5"
+                                                                },
+                                                                "referencedDeclaration": 893,
+                                                                "src": "5174:9:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "visibility": "internal"
+                                                        }
+                                                    ],
+                                                    "id": 2017,
+                                                    "initialValue": {
+                                                        "arguments": [
+                                                            {
+                                                                "id": 2015,
+                                                                "name": "_collection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1890,
+                                                                "src": "5210:11:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            ],
+                                                            "id": 2014,
+                                                            "name": "UniqueNFT",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 893,
+                                                            "src": "5200:9:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_type$_t_contract$_UniqueNFT_$893_$",
+                                                                "typeString": "type(contract UniqueNFT)"
+                                                            }
+                                                        },
+                                                        "id": 2016,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "typeConversion",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5200:22:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                            "typeString": "contract UniqueNFT"
+                                                        }
+                                                    },
+                                                    "nodeType": "VariableDeclarationStatement",
+                                                    "src": "5174:48:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "id": 2022,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftHandSide": {
+                                                            "id": 2018,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1933,
+                                                            "src": "5227:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "Assignment",
+                                                        "operator": "=",
+                                                        "rightHandSide": {
+                                                            "arguments": [],
+                                                            "expression": {
+                                                                "argumentTypes": [],
+                                                                "expression": {
+                                                                    "id": 2019,
+                                                                    "name": "nftCollection",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 2013,
+                                                                    "src": "5237:13:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                        "typeString": "contract UniqueNFT"
+                                                                    }
+                                                                },
+                                                                "id": 2020,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "lValueRequested": false,
+                                                                "memberLocation": "5251:11:5",
+                                                                "memberName": "nextTokenId",
+                                                                "nodeType": "MemberAccess",
+                                                                "referencedDeclaration": 666,
+                                                                "src": "5237:25:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+                                                                    "typeString": "function () view external returns (uint256)"
+                                                                }
+                                                            },
+                                                            "id": 2021,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "functionCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "5237:27:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "src": "5227:37:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "id": 2023,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "5227:37:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 2029,
+                                                                        "name": "this",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 4294967268,
+                                                                        "src": "5296:4:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                            "typeString": "contract EvmToSubstrate"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                            "typeString": "contract EvmToSubstrate"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2028,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                                    "src": "5288:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                                        "typeString": "type(address)"
+                                                                    },
+                                                                    "typeName": {
+                                                                        "id": 2027,
+                                                                        "name": "address",
+                                                                        "nodeType": "ElementaryTypeName",
+                                                                        "src": "5288:7:5",
+                                                                        "typeDescriptions": {}
+                                                                    }
+                                                                },
+                                                                "id": 2030,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "typeConversion",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "5288:13:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                }
+                                                            },
+                                                            {
+                                                                "id": 2031,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1933,
+                                                                "src": "5303:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_address",
+                                                                    "typeString": "address"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 2024,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2013,
+                                                                "src": "5269:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 2026,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "5283:4:5",
+                                                            "memberName": "mint",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 590,
+                                                            "src": "5269:18:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+                                                                "typeString": "function (address,uint256) external returns (bool)"
+                                                            }
+                                                        },
+                                                        "id": 2032,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5269:42:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        }
+                                                    },
+                                                    "id": 2033,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "5269:42:5"
+                                                },
+                                                {
+                                                    "body": {
+                                                        "id": 2058,
+                                                        "nodeType": "Block",
+                                                        "src": "5363:86:5",
+                                                        "statements": [
+                                                            {
+                                                                "expression": {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 2047,
+                                                                            "name": "tokenId",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 1933,
+                                                                            "src": "5395:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            }
+                                                                        },
+                                                                        {
+                                                                            "expression": {
+                                                                                "baseExpression": {
+                                                                                    "id": 2048,
+                                                                                    "name": "properties",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 1896,
+                                                                                    "src": "5404:10:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_array$_t_struct$_Property_$1695_calldata_ptr_$dyn_calldata_ptr",
+                                                                                        "typeString": "struct Property calldata[] calldata"
+                                                                                    }
+                                                                                },
+                                                                                "id": 2050,
+                                                                                "indexExpression": {
+                                                                                    "id": 2049,
+                                                                                    "name": "i",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 2035,
+                                                                                    "src": "5415:1:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_uint256",
+                                                                                        "typeString": "uint256"
+                                                                                    }
+                                                                                },
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "IndexAccess",
+                                                                                "src": "5404:13:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_struct$_Property_$1695_calldata_ptr",
+                                                                                    "typeString": "struct Property calldata"
+                                                                                }
+                                                                            },
+                                                                            "id": 2051,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "memberLocation": "5418:3:5",
+                                                                            "memberName": "key",
+                                                                            "nodeType": "MemberAccess",
+                                                                            "referencedDeclaration": 1692,
+                                                                            "src": "5404:17:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_string_calldata_ptr",
+                                                                                "typeString": "string calldata"
+                                                                            }
+                                                                        },
+                                                                        {
+                                                                            "expression": {
+                                                                                "baseExpression": {
+                                                                                    "id": 2052,
+                                                                                    "name": "properties",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 1896,
+                                                                                    "src": "5423:10:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_array$_t_struct$_Property_$1695_calldata_ptr_$dyn_calldata_ptr",
+                                                                                        "typeString": "struct Property calldata[] calldata"
+                                                                                    }
+                                                                                },
+                                                                                "id": 2054,
+                                                                                "indexExpression": {
+                                                                                    "id": 2053,
+                                                                                    "name": "i",
+                                                                                    "nodeType": "Identifier",
+                                                                                    "overloadedDeclarations": [],
+                                                                                    "referencedDeclaration": 2035,
+                                                                                    "src": "5434:1:5",
+                                                                                    "typeDescriptions": {
+                                                                                        "typeIdentifier": "t_uint256",
+                                                                                        "typeString": "uint256"
+                                                                                    }
+                                                                                },
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": false,
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "IndexAccess",
+                                                                                "src": "5423:13:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_struct$_Property_$1695_calldata_ptr",
+                                                                                    "typeString": "struct Property calldata"
+                                                                                }
+                                                                            },
+                                                                            "id": 2055,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "memberLocation": "5437:5:5",
+                                                                            "memberName": "value",
+                                                                            "nodeType": "MemberAccess",
+                                                                            "referencedDeclaration": 1694,
+                                                                            "src": "5423:19:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                                "typeString": "bytes calldata"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_uint256",
+                                                                                "typeString": "uint256"
+                                                                            },
+                                                                            {
+                                                                                "typeIdentifier": "t_string_calldata_ptr",
+                                                                                "typeString": "string calldata"
+                                                                            },
+                                                                            {
+                                                                                "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                                "typeString": "bytes calldata"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "id": 2044,
+                                                                            "name": "nftCollection",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 2013,
+                                                                            "src": "5369:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                                "typeString": "contract UniqueNFT"
+                                                                            }
+                                                                        },
+                                                                        "id": 2046,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "5383:11:5",
+                                                                        "memberName": "setProperty",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 318,
+                                                                        "src": "5369:25:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
+                                                                            "typeString": "function (uint256,string memory,bytes memory) external"
+                                                                        }
+                                                                    },
+                                                                    "id": 2056,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "functionCall",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "5369:74:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_tuple$__$",
+                                                                        "typeString": "tuple()"
+                                                                    }
+                                                                },
+                                                                "id": 2057,
+                                                                "nodeType": "ExpressionStatement",
+                                                                "src": "5369:74:5"
+                                                            }
+                                                        ]
+                                                    },
+                                                    "condition": {
+                                                        "commonType": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        },
+                                                        "id": 2040,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "leftExpression": {
+                                                            "id": 2038,
+                                                            "name": "i",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 2035,
+                                                            "src": "5336:1:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "nodeType": "BinaryOperation",
+                                                        "operator": "<",
+                                                        "rightExpression": {
+                                                            "id": 2039,
+                                                            "name": "propertiesLength",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1903,
+                                                            "src": "5340:16:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "src": "5336:20:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_bool",
+                                                            "typeString": "bool"
+                                                        }
+                                                    },
+                                                    "id": 2059,
+                                                    "initializationExpression": {
+                                                        "assignments": [
+                                                            2035
+                                                        ],
+                                                        "declarations": [
+                                                            {
+                                                                "constant": false,
+                                                                "id": 2035,
+                                                                "mutability": "mutable",
+                                                                "name": "i",
+                                                                "nameLocation": "5329:1:5",
+                                                                "nodeType": "VariableDeclaration",
+                                                                "scope": 2059,
+                                                                "src": "5321:9:5",
+                                                                "stateVariable": false,
+                                                                "storageLocation": "default",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                },
+                                                                "typeName": {
+                                                                    "id": 2034,
+                                                                    "name": "uint256",
+                                                                    "nodeType": "ElementaryTypeName",
+                                                                    "src": "5321:7:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                },
+                                                                "visibility": "internal"
+                                                            }
+                                                        ],
+                                                        "id": 2037,
+                                                        "initialValue": {
+                                                            "hexValue": "30",
+                                                            "id": 2036,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": true,
+                                                            "kind": "number",
+                                                            "lValueRequested": false,
+                                                            "nodeType": "Literal",
+                                                            "src": "5333:1:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                "typeString": "int_const 0"
+                                                            },
+                                                            "value": "0"
+                                                        },
+                                                        "nodeType": "VariableDeclarationStatement",
+                                                        "src": "5321:13:5"
+                                                    },
+                                                    "loopExpression": {
+                                                        "expression": {
+                                                            "id": 2042,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "nodeType": "UnaryOperation",
+                                                            "operator": "++",
+                                                            "prefix": true,
+                                                            "src": "5358:3:5",
+                                                            "subExpression": {
+                                                                "id": 2041,
+                                                                "name": "i",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2035,
+                                                                "src": "5360:1:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "id": 2043,
+                                                        "nodeType": "ExpressionStatement",
+                                                        "src": "5358:3:5"
+                                                    },
+                                                    "nodeType": "ForStatement",
+                                                    "src": "5316:133:5"
+                                                },
+                                                {
+                                                    "expression": {
+                                                        "arguments": [
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "id": 2066,
+                                                                                "name": "this",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 4294967268,
+                                                                                "src": "5516:4:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                                    "typeString": "contract EvmToSubstrate"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2065,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "5508:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 2064,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "5508:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 2067,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "5508:13:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "hexValue": "30",
+                                                                        "id": 2068,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "number",
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "Literal",
+                                                                        "src": "5523:1:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        },
+                                                                        "value": "0"
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                                            "typeString": "int_const 0"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2063,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 700,
+                                                                    "src": "5490:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_Tuple8_$700_storage_ptr_$",
+                                                                        "typeString": "type(struct Tuple8 storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 2069,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "5490:35:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_Tuple8_$700_memory_ptr",
+                                                                    "typeString": "struct Tuple8 memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "arguments": [
+                                                                    {
+                                                                        "arguments": [
+                                                                            {
+                                                                                "hexValue": "30",
+                                                                                "id": 2073,
+                                                                                "isConstant": false,
+                                                                                "isLValue": false,
+                                                                                "isPure": true,
+                                                                                "kind": "number",
+                                                                                "lValueRequested": false,
+                                                                                "nodeType": "Literal",
+                                                                                "src": "5557:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                },
+                                                                                "value": "0"
+                                                                            }
+                                                                        ],
+                                                                        "expression": {
+                                                                            "argumentTypes": [
+                                                                                {
+                                                                                    "typeIdentifier": "t_rational_0_by_1",
+                                                                                    "typeString": "int_const 0"
+                                                                                }
+                                                                            ],
+                                                                            "id": 2072,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "ElementaryTypeNameExpression",
+                                                                            "src": "5549:7:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_type$_t_address_$",
+                                                                                "typeString": "type(address)"
+                                                                            },
+                                                                            "typeName": {
+                                                                                "id": 2071,
+                                                                                "name": "address",
+                                                                                "nodeType": "ElementaryTypeName",
+                                                                                "src": "5549:7:5",
+                                                                                "typeDescriptions": {}
+                                                                            }
+                                                                        },
+                                                                        "id": 2074,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "kind": "typeConversion",
+                                                                        "lValueRequested": false,
+                                                                        "nameLocations": [],
+                                                                        "names": [],
+                                                                        "nodeType": "FunctionCall",
+                                                                        "src": "5549:10:5",
+                                                                        "tryCall": false,
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "id": 2075,
+                                                                        "name": "_substrateReceiver",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1892,
+                                                                        "src": "5561:18:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_address",
+                                                                            "typeString": "address"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    ],
+                                                                    "id": 2070,
+                                                                    "name": "NftCrossAccountId",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 700,
+                                                                    "src": "5531:17:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_type$_t_struct$_Tuple8_$700_storage_ptr_$",
+                                                                        "typeString": "type(struct Tuple8 storage pointer)"
+                                                                    }
+                                                                },
+                                                                "id": 2076,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "structConstructorCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "5531:49:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_struct$_Tuple8_$700_memory_ptr",
+                                                                    "typeString": "struct Tuple8 memory"
+                                                                }
+                                                            },
+                                                            {
+                                                                "id": 2077,
+                                                                "name": "tokenId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1933,
+                                                                "src": "5586:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "argumentTypes": [
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_Tuple8_$700_memory_ptr",
+                                                                    "typeString": "struct Tuple8 memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_struct$_Tuple8_$700_memory_ptr",
+                                                                    "typeString": "struct Tuple8 memory"
+                                                                },
+                                                                {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "id": 2060,
+                                                                "name": "nftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 2013,
+                                                                "src": "5453:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueNFT_$893",
+                                                                    "typeString": "contract UniqueNFT"
+                                                                }
+                                                            },
+                                                            "id": 2062,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "5467:17:5",
+                                                            "memberName": "transferFromCross",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 643,
+                                                            "src": "5453:31:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_nonpayable$_t_struct$_Tuple8_$700_memory_ptr_$_t_struct$_Tuple8_$700_memory_ptr_$_t_uint256_$returns$__$",
+                                                                "typeString": "function (struct Tuple8 memory,struct Tuple8 memory,uint256) external"
+                                                            }
+                                                        },
+                                                        "id": 2078,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "5453:145:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_tuple$__$",
+                                                            "typeString": "tuple()"
+                                                        }
+                                                    },
+                                                    "id": 2079,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "5453:145:5"
+                                                }
+                                            ]
+                                        }
+                                    },
+                                    "id": 2087,
+                                    "nodeType": "IfStatement",
+                                    "src": "4614:1064:5",
+                                    "trueBody": {
+                                        "id": 2007,
+                                        "nodeType": "Block",
+                                        "src": "4664:448:5",
+                                        "statements": [
+                                            {
+                                                "assignments": [
+                                                    1940
+                                                ],
+                                                "declarations": [
+                                                    {
+                                                        "constant": false,
+                                                        "id": 1940,
+                                                        "mutability": "mutable",
+                                                        "name": "rftCollection",
+                                                        "nameLocation": "4686:13:5",
+                                                        "nodeType": "VariableDeclaration",
+                                                        "scope": 2007,
+                                                        "src": "4669:30:5",
+                                                        "stateVariable": false,
+                                                        "storageLocation": "default",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                            "typeString": "contract UniqueRefungible"
+                                                        },
+                                                        "typeName": {
+                                                            "id": 1939,
+                                                            "nodeType": "UserDefinedTypeName",
+                                                            "pathNode": {
+                                                                "id": 1938,
+                                                                "name": "UniqueRefungible",
+                                                                "nameLocations": [
+                                                                    "4669:16:5"
+                                                                ],
+                                                                "nodeType": "IdentifierPath",
+                                                                "referencedDeclaration": 1508,
+                                                                "src": "4669:16:5"
+                                                            },
+                                                            "referencedDeclaration": 1508,
+                                                            "src": "4669:16:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "visibility": "internal"
+                                                    }
+                                                ],
+                                                "id": 1944,
+                                                "initialValue": {
+                                                    "arguments": [
+                                                        {
+                                                            "id": 1942,
+                                                            "name": "_collection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1890,
+                                                            "src": "4719:11:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        ],
+                                                        "id": 1941,
+                                                        "name": "UniqueRefungible",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1508,
+                                                        "src": "4702:16:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_type$_t_contract$_UniqueRefungible_$1508_$",
+                                                            "typeString": "type(contract UniqueRefungible)"
+                                                        }
+                                                    },
+                                                    "id": 1943,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "typeConversion",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "4702:29:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                        "typeString": "contract UniqueRefungible"
+                                                    }
+                                                },
+                                                "nodeType": "VariableDeclarationStatement",
+                                                "src": "4669:62:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "id": 1949,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftHandSide": {
+                                                        "id": 1945,
+                                                        "name": "tokenId",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1933,
+                                                        "src": "4736:7:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "nodeType": "Assignment",
+                                                    "operator": "=",
+                                                    "rightHandSide": {
+                                                        "arguments": [],
+                                                        "expression": {
+                                                            "argumentTypes": [],
+                                                            "expression": {
+                                                                "id": 1946,
+                                                                "name": "rftCollection",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1940,
+                                                                "src": "4746:13:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                    "typeString": "contract UniqueRefungible"
+                                                                }
+                                                            },
+                                                            "id": 1947,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "lValueRequested": false,
+                                                            "memberLocation": "4760:11:5",
+                                                            "memberName": "nextTokenId",
+                                                            "nodeType": "MemberAccess",
+                                                            "referencedDeclaration": 1273,
+                                                            "src": "4746:25:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+                                                                "typeString": "function () view external returns (uint256)"
+                                                            }
+                                                        },
+                                                        "id": 1948,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "kind": "functionCall",
+                                                        "lValueRequested": false,
+                                                        "nameLocations": [],
+                                                        "names": [],
+                                                        "nodeType": "FunctionCall",
+                                                        "src": "4746:27:5",
+                                                        "tryCall": false,
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "src": "4736:37:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    }
+                                                },
+                                                "id": 1950,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "4736:37:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "arguments": [
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "id": 1956,
+                                                                    "name": "this",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 4294967268,
+                                                                    "src": "4805:4:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                        "typeString": "contract EvmToSubstrate"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                        "typeString": "contract EvmToSubstrate"
+                                                                    }
+                                                                ],
+                                                                "id": 1955,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": true,
+                                                                "lValueRequested": false,
+                                                                "nodeType": "ElementaryTypeNameExpression",
+                                                                "src": "4797:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_address_$",
+                                                                    "typeString": "type(address)"
+                                                                },
+                                                                "typeName": {
+                                                                    "id": 1954,
+                                                                    "name": "address",
+                                                                    "nodeType": "ElementaryTypeName",
+                                                                    "src": "4797:7:5",
+                                                                    "typeDescriptions": {}
+                                                                }
+                                                            },
+                                                            "id": 1957,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "typeConversion",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4797:13:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            }
+                                                        },
+                                                        {
+                                                            "id": 1958,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1933,
+                                                            "src": "4812:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_address",
+                                                                "typeString": "address"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "id": 1951,
+                                                            "name": "rftCollection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1940,
+                                                            "src": "4778:13:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "id": 1953,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "4792:4:5",
+                                                        "memberName": "mint",
+                                                        "nodeType": "MemberAccess",
+                                                        "referencedDeclaration": 1206,
+                                                        "src": "4778:18:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+                                                            "typeString": "function (address,uint256) external returns (bool)"
+                                                        }
+                                                    },
+                                                    "id": 1959,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "functionCall",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "4778:42:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bool",
+                                                        "typeString": "bool"
+                                                    }
+                                                },
+                                                "id": 1960,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "4778:42:5"
+                                            },
+                                            {
+                                                "body": {
+                                                    "id": 1985,
+                                                    "nodeType": "Block",
+                                                    "src": "4872:86:5",
+                                                    "statements": [
+                                                        {
+                                                            "expression": {
+                                                                "arguments": [
+                                                                    {
+                                                                        "id": 1974,
+                                                                        "name": "tokenId",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1933,
+                                                                        "src": "4904:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "expression": {
+                                                                            "baseExpression": {
+                                                                                "id": 1975,
+                                                                                "name": "properties",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1896,
+                                                                                "src": "4913:10:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_array$_t_struct$_Property_$1695_calldata_ptr_$dyn_calldata_ptr",
+                                                                                    "typeString": "struct Property calldata[] calldata"
+                                                                                }
+                                                                            },
+                                                                            "id": 1977,
+                                                                            "indexExpression": {
+                                                                                "id": 1976,
+                                                                                "name": "i",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1962,
+                                                                                "src": "4924:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            },
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "IndexAccess",
+                                                                            "src": "4913:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_struct$_Property_$1695_calldata_ptr",
+                                                                                "typeString": "struct Property calldata"
+                                                                            }
+                                                                        },
+                                                                        "id": 1978,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "4927:3:5",
+                                                                        "memberName": "key",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 1692,
+                                                                        "src": "4913:17:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_string_calldata_ptr",
+                                                                            "typeString": "string calldata"
+                                                                        }
+                                                                    },
+                                                                    {
+                                                                        "expression": {
+                                                                            "baseExpression": {
+                                                                                "id": 1979,
+                                                                                "name": "properties",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1896,
+                                                                                "src": "4932:10:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_array$_t_struct$_Property_$1695_calldata_ptr_$dyn_calldata_ptr",
+                                                                                    "typeString": "struct Property calldata[] calldata"
+                                                                                }
+                                                                            },
+                                                                            "id": 1981,
+                                                                            "indexExpression": {
+                                                                                "id": 1980,
+                                                                                "name": "i",
+                                                                                "nodeType": "Identifier",
+                                                                                "overloadedDeclarations": [],
+                                                                                "referencedDeclaration": 1962,
+                                                                                "src": "4943:1:5",
+                                                                                "typeDescriptions": {
+                                                                                    "typeIdentifier": "t_uint256",
+                                                                                    "typeString": "uint256"
+                                                                                }
+                                                                            },
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": false,
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "IndexAccess",
+                                                                            "src": "4932:13:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_struct$_Property_$1695_calldata_ptr",
+                                                                                "typeString": "struct Property calldata"
+                                                                            }
+                                                                        },
+                                                                        "id": 1982,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": false,
+                                                                        "lValueRequested": false,
+                                                                        "memberLocation": "4946:5:5",
+                                                                        "memberName": "value",
+                                                                        "nodeType": "MemberAccess",
+                                                                        "referencedDeclaration": 1694,
+                                                                        "src": "4932:19:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                            "typeString": "bytes calldata"
+                                                                        }
+                                                                    }
+                                                                ],
+                                                                "expression": {
+                                                                    "argumentTypes": [
+                                                                        {
+                                                                            "typeIdentifier": "t_uint256",
+                                                                            "typeString": "uint256"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_string_calldata_ptr",
+                                                                            "typeString": "string calldata"
+                                                                        },
+                                                                        {
+                                                                            "typeIdentifier": "t_bytes_calldata_ptr",
+                                                                            "typeString": "bytes calldata"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "id": 1971,
+                                                                        "name": "rftCollection",
+                                                                        "nodeType": "Identifier",
+                                                                        "overloadedDeclarations": [],
+                                                                        "referencedDeclaration": 1940,
+                                                                        "src": "4878:13:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                            "typeString": "contract UniqueRefungible"
+                                                                        }
+                                                                    },
+                                                                    "id": 1973,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "lValueRequested": false,
+                                                                    "memberLocation": "4892:11:5",
+                                                                    "memberName": "setProperty",
+                                                                    "nodeType": "MemberAccess",
+                                                                    "referencedDeclaration": 934,
+                                                                    "src": "4878:25:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
+                                                                        "typeString": "function (uint256,string memory,bytes memory) external"
+                                                                    }
+                                                                },
+                                                                "id": 1983,
+                                                                "isConstant": false,
+                                                                "isLValue": false,
+                                                                "isPure": false,
+                                                                "kind": "functionCall",
+                                                                "lValueRequested": false,
+                                                                "nameLocations": [],
+                                                                "names": [],
+                                                                "nodeType": "FunctionCall",
+                                                                "src": "4878:74:5",
+                                                                "tryCall": false,
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_tuple$__$",
+                                                                    "typeString": "tuple()"
+                                                                }
+                                                            },
+                                                            "id": 1984,
+                                                            "nodeType": "ExpressionStatement",
+                                                            "src": "4878:74:5"
+                                                        }
+                                                    ]
+                                                },
+                                                "condition": {
+                                                    "commonType": {
+                                                        "typeIdentifier": "t_uint256",
+                                                        "typeString": "uint256"
+                                                    },
+                                                    "id": 1967,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "lValueRequested": false,
+                                                    "leftExpression": {
+                                                        "id": 1965,
+                                                        "name": "i",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1962,
+                                                        "src": "4845:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "nodeType": "BinaryOperation",
+                                                    "operator": "<",
+                                                    "rightExpression": {
+                                                        "id": 1966,
+                                                        "name": "propertiesLength",
+                                                        "nodeType": "Identifier",
+                                                        "overloadedDeclarations": [],
+                                                        "referencedDeclaration": 1903,
+                                                        "src": "4849:16:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "src": "4845:20:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_bool",
+                                                        "typeString": "bool"
+                                                    }
+                                                },
+                                                "id": 1986,
+                                                "initializationExpression": {
+                                                    "assignments": [
+                                                        1962
+                                                    ],
+                                                    "declarations": [
+                                                        {
+                                                            "constant": false,
+                                                            "id": 1962,
+                                                            "mutability": "mutable",
+                                                            "name": "i",
+                                                            "nameLocation": "4838:1:5",
+                                                            "nodeType": "VariableDeclaration",
+                                                            "scope": 1986,
+                                                            "src": "4830:9:5",
+                                                            "stateVariable": false,
+                                                            "storageLocation": "default",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            },
+                                                            "typeName": {
+                                                                "id": 1961,
+                                                                "name": "uint256",
+                                                                "nodeType": "ElementaryTypeName",
+                                                                "src": "4830:7:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_uint256",
+                                                                    "typeString": "uint256"
+                                                                }
+                                                            },
+                                                            "visibility": "internal"
+                                                        }
+                                                    ],
+                                                    "id": 1964,
+                                                    "initialValue": {
+                                                        "hexValue": "30",
+                                                        "id": 1963,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "number",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "4842:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        },
+                                                        "value": "0"
+                                                    },
+                                                    "nodeType": "VariableDeclarationStatement",
+                                                    "src": "4830:13:5"
+                                                },
+                                                "loopExpression": {
+                                                    "expression": {
+                                                        "id": 1969,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "nodeType": "UnaryOperation",
+                                                        "operator": "++",
+                                                        "prefix": true,
+                                                        "src": "4867:3:5",
+                                                        "subExpression": {
+                                                            "id": 1968,
+                                                            "name": "i",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1962,
+                                                            "src": "4869:1:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        },
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_uint256",
+                                                            "typeString": "uint256"
+                                                        }
+                                                    },
+                                                    "id": 1970,
+                                                    "nodeType": "ExpressionStatement",
+                                                    "src": "4867:3:5"
+                                                },
+                                                "nodeType": "ForStatement",
+                                                "src": "4825:133:5"
+                                            },
+                                            {
+                                                "expression": {
+                                                    "arguments": [
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "id": 1993,
+                                                                            "name": "this",
+                                                                            "nodeType": "Identifier",
+                                                                            "overloadedDeclarations": [],
+                                                                            "referencedDeclaration": 4294967268,
+                                                                            "src": "5025:4:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_contract$_EvmToSubstrate_$2100",
+                                                                                "typeString": "contract EvmToSubstrate"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1992,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "5017:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 1991,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "5017:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 1994,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": false,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "5017:13:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "hexValue": "30",
+                                                                    "id": 1995,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "number",
+                                                                    "lValueRequested": false,
+                                                                    "nodeType": "Literal",
+                                                                    "src": "5032:1:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    },
+                                                                    "value": "0"
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_rational_0_by_1",
+                                                                        "typeString": "int_const 0"
+                                                                    }
+                                                                ],
+                                                                "id": 1990,
+                                                                "name": "RftCrossAccountId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1315,
+                                                                "src": "4999:17:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_struct$_Tuple8_$1315_storage_ptr_$",
+                                                                    "typeString": "type(struct Tuple8 storage pointer)"
+                                                                }
+                                                            },
+                                                            "id": 1996,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "structConstructorCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "4999:35:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_struct$_Tuple8_$1315_memory_ptr",
+                                                                "typeString": "struct Tuple8 memory"
+                                                            }
+                                                        },
+                                                        {
+                                                            "arguments": [
+                                                                {
+                                                                    "arguments": [
+                                                                        {
+                                                                            "hexValue": "30",
+                                                                            "id": 2000,
+                                                                            "isConstant": false,
+                                                                            "isLValue": false,
+                                                                            "isPure": true,
+                                                                            "kind": "number",
+                                                                            "lValueRequested": false,
+                                                                            "nodeType": "Literal",
+                                                                            "src": "5066:1:5",
+                                                                            "typeDescriptions": {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            },
+                                                                            "value": "0"
+                                                                        }
+                                                                    ],
+                                                                    "expression": {
+                                                                        "argumentTypes": [
+                                                                            {
+                                                                                "typeIdentifier": "t_rational_0_by_1",
+                                                                                "typeString": "int_const 0"
+                                                                            }
+                                                                        ],
+                                                                        "id": 1999,
+                                                                        "isConstant": false,
+                                                                        "isLValue": false,
+                                                                        "isPure": true,
+                                                                        "lValueRequested": false,
+                                                                        "nodeType": "ElementaryTypeNameExpression",
+                                                                        "src": "5058:7:5",
+                                                                        "typeDescriptions": {
+                                                                            "typeIdentifier": "t_type$_t_address_$",
+                                                                            "typeString": "type(address)"
+                                                                        },
+                                                                        "typeName": {
+                                                                            "id": 1998,
+                                                                            "name": "address",
+                                                                            "nodeType": "ElementaryTypeName",
+                                                                            "src": "5058:7:5",
+                                                                            "typeDescriptions": {}
+                                                                        }
+                                                                    },
+                                                                    "id": 2001,
+                                                                    "isConstant": false,
+                                                                    "isLValue": false,
+                                                                    "isPure": true,
+                                                                    "kind": "typeConversion",
+                                                                    "lValueRequested": false,
+                                                                    "nameLocations": [],
+                                                                    "names": [],
+                                                                    "nodeType": "FunctionCall",
+                                                                    "src": "5058:10:5",
+                                                                    "tryCall": false,
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    }
+                                                                },
+                                                                {
+                                                                    "id": 2002,
+                                                                    "name": "_substrateReceiver",
+                                                                    "nodeType": "Identifier",
+                                                                    "overloadedDeclarations": [],
+                                                                    "referencedDeclaration": 1892,
+                                                                    "src": "5070:18:5",
+                                                                    "typeDescriptions": {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                }
+                                                            ],
+                                                            "expression": {
+                                                                "argumentTypes": [
+                                                                    {
+                                                                        "typeIdentifier": "t_address",
+                                                                        "typeString": "address"
+                                                                    },
+                                                                    {
+                                                                        "typeIdentifier": "t_uint256",
+                                                                        "typeString": "uint256"
+                                                                    }
+                                                                ],
+                                                                "id": 1997,
+                                                                "name": "RftCrossAccountId",
+                                                                "nodeType": "Identifier",
+                                                                "overloadedDeclarations": [],
+                                                                "referencedDeclaration": 1315,
+                                                                "src": "5040:17:5",
+                                                                "typeDescriptions": {
+                                                                    "typeIdentifier": "t_type$_t_struct$_Tuple8_$1315_storage_ptr_$",
+                                                                    "typeString": "type(struct Tuple8 storage pointer)"
+                                                                }
+                                                            },
+                                                            "id": 2003,
+                                                            "isConstant": false,
+                                                            "isLValue": false,
+                                                            "isPure": false,
+                                                            "kind": "structConstructorCall",
+                                                            "lValueRequested": false,
+                                                            "nameLocations": [],
+                                                            "names": [],
+                                                            "nodeType": "FunctionCall",
+                                                            "src": "5040:49:5",
+                                                            "tryCall": false,
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_struct$_Tuple8_$1315_memory_ptr",
+                                                                "typeString": "struct Tuple8 memory"
+                                                            }
+                                                        },
+                                                        {
+                                                            "id": 2004,
+                                                            "name": "tokenId",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1933,
+                                                            "src": "5095:7:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        }
+                                                    ],
+                                                    "expression": {
+                                                        "argumentTypes": [
+                                                            {
+                                                                "typeIdentifier": "t_struct$_Tuple8_$1315_memory_ptr",
+                                                                "typeString": "struct Tuple8 memory"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_struct$_Tuple8_$1315_memory_ptr",
+                                                                "typeString": "struct Tuple8 memory"
+                                                            },
+                                                            {
+                                                                "typeIdentifier": "t_uint256",
+                                                                "typeString": "uint256"
+                                                            }
+                                                        ],
+                                                        "expression": {
+                                                            "id": 1987,
+                                                            "name": "rftCollection",
+                                                            "nodeType": "Identifier",
+                                                            "overloadedDeclarations": [],
+                                                            "referencedDeclaration": 1940,
+                                                            "src": "4962:13:5",
+                                                            "typeDescriptions": {
+                                                                "typeIdentifier": "t_contract$_UniqueRefungible_$1508",
+                                                                "typeString": "contract UniqueRefungible"
+                                                            }
+                                                        },
+                                                        "id": 1989,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": false,
+                                                        "lValueRequested": false,
+                                                        "memberLocation": "4976:17:5",
+                                                        "memberName": "transferFromCross",
+                                                        "nodeType": "MemberAccess",
+                                                        "referencedDeclaration": 1250,
+                                                        "src": "4962:31:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_function_external_nonpayable$_t_struct$_Tuple8_$1315_memory_ptr_$_t_struct$_Tuple8_$1315_memory_ptr_$_t_uint256_$returns$__$",
+                                                            "typeString": "function (struct Tuple8 memory,struct Tuple8 memory,uint256) external"
+                                                        }
+                                                    },
+                                                    "id": 2005,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": false,
+                                                    "kind": "functionCall",
+                                                    "lValueRequested": false,
+                                                    "nameLocations": [],
+                                                    "names": [],
+                                                    "nodeType": "FunctionCall",
+                                                    "src": "4962:145:5",
+                                                    "tryCall": false,
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_tuple$__$",
+                                                        "typeString": "tuple()"
+                                                    }
+                                                },
+                                                "id": 2006,
+                                                "nodeType": "ExpressionStatement",
+                                                "src": "4962:145:5"
+                                            }
+                                        ]
+                                    }
+                                },
+                                {
+                                    "eventCall": {
+                                        "arguments": [
+                                            {
+                                                "arguments": [
+                                                    {
+                                                        "hexValue": "30",
+                                                        "id": 2091,
+                                                        "isConstant": false,
+                                                        "isLValue": false,
+                                                        "isPure": true,
+                                                        "kind": "number",
+                                                        "lValueRequested": false,
+                                                        "nodeType": "Literal",
+                                                        "src": "5757:1:5",
+                                                        "typeDescriptions": {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        },
+                                                        "value": "0"
+                                                    }
+                                                ],
+                                                "expression": {
+                                                    "argumentTypes": [
+                                                        {
+                                                            "typeIdentifier": "t_rational_0_by_1",
+                                                            "typeString": "int_const 0"
+                                                        }
+                                                    ],
+                                                    "id": 2090,
+                                                    "isConstant": false,
+                                                    "isLValue": false,
+                                                    "isPure": true,
+                                                    "lValueRequested": false,
+                                                    "nodeType": "ElementaryTypeNameExpression",
+                                                    "src": "5749:7:5",
+                                                    "typeDescriptions": {
+                                                        "typeIdentifier": "t_type$_t_address_$",
+                                                        "typeString": "type(address)"
+                                                    },
+                                                    "typeName": {
+                                                        "id": 2089,
+                                                        "name": "address",
+                                                        "nodeType": "ElementaryTypeName",
+                                                        "src": "5749:7:5",
+                                                        "typeDescriptions": {}
+                                                    }
+                                                },
+                                                "id": 2092,
+                                                "isConstant": false,
+                                                "isLValue": false,
+                                                "isPure": true,
+                                                "kind": "typeConversion",
+                                                "lValueRequested": false,
+                                                "nameLocations": [],
+                                                "names": [],
+                                                "nodeType": "FunctionCall",
+                                                "src": "5749:10:5",
+                                                "tryCall": false,
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 2093,
+                                                "name": "_substrateReceiver",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1892,
+                                                "src": "5761:18:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            },
+                                            {
+                                                "id": 2094,
+                                                "name": "_collection",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1890,
+                                                "src": "5781:11:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                }
+                                            },
+                                            {
+                                                "id": 2095,
+                                                "name": "tokenId",
+                                                "nodeType": "Identifier",
+                                                "overloadedDeclarations": [],
+                                                "referencedDeclaration": 1933,
+                                                "src": "5794:7:5",
+                                                "typeDescriptions": {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            }
+                                        ],
+                                        "expression": {
+                                            "argumentTypes": [
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_address",
+                                                    "typeString": "address"
+                                                },
+                                                {
+                                                    "typeIdentifier": "t_uint256",
+                                                    "typeString": "uint256"
+                                                }
+                                            ],
+                                            "id": 2088,
+                                            "name": "MintToSub",
+                                            "nodeType": "Identifier",
+                                            "overloadedDeclarations": [],
+                                            "referencedDeclaration": 1744,
+                                            "src": "5739:9:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+                                                "typeString": "function (address,uint256,address,uint256)"
+                                            }
+                                        },
+                                        "id": 2096,
+                                        "isConstant": false,
+                                        "isLValue": false,
+                                        "isPure": false,
+                                        "kind": "functionCall",
+                                        "lValueRequested": false,
+                                        "nameLocations": [],
+                                        "names": [],
+                                        "nodeType": "FunctionCall",
+                                        "src": "5739:63:5",
+                                        "tryCall": false,
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_tuple$__$",
+                                            "typeString": "tuple()"
+                                        }
+                                    },
+                                    "id": 2097,
+                                    "nodeType": "EmitStatement",
+                                    "src": "5734:68:5"
+                                }
+                            ]
+                        },
+                        "functionSelector": "440dff9d",
+                        "id": 2099,
+                        "implemented": true,
+                        "kind": "function",
+                        "modifiers": [
+                            {
+                                "arguments": [
+                                    {
+                                        "id": 1899,
+                                        "name": "_collection",
+                                        "nodeType": "Identifier",
+                                        "overloadedDeclarations": [],
+                                        "referencedDeclaration": 1890,
+                                        "src": "4185:11:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    }
+                                ],
+                                "id": 1900,
+                                "kind": "modifierInvocation",
+                                "modifierName": {
+                                    "id": 1898,
+                                    "name": "checkRestrictions",
+                                    "nameLocations": [
+                                        "4167:17:5"
+                                    ],
+                                    "nodeType": "IdentifierPath",
+                                    "referencedDeclaration": 1733,
+                                    "src": "4167:17:5"
+                                },
+                                "nodeType": "ModifierInvocation",
+                                "src": "4167:30:5"
+                            }
+                        ],
+                        "name": "mintToSubstrateWithProperty",
+                        "nameLocation": "4040:27:5",
+                        "nodeType": "FunctionDefinition",
+                        "parameters": {
+                            "id": 1897,
+                            "nodeType": "ParameterList",
+                            "parameters": [
+                                {
+                                    "constant": false,
+                                    "id": 1890,
+                                    "mutability": "mutable",
+                                    "name": "_collection",
+                                    "nameLocation": "4079:11:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2099,
+                                    "src": "4071:19:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_address",
+                                        "typeString": "address"
+                                    },
+                                    "typeName": {
+                                        "id": 1889,
+                                        "name": "address",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "4071:7:5",
+                                        "stateMutability": "nonpayable",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_address",
+                                            "typeString": "address"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1892,
+                                    "mutability": "mutable",
+                                    "name": "_substrateReceiver",
+                                    "nameLocation": "4102:18:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2099,
+                                    "src": "4094:26:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "default",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_uint256",
+                                        "typeString": "uint256"
+                                    },
+                                    "typeName": {
+                                        "id": 1891,
+                                        "name": "uint256",
+                                        "nodeType": "ElementaryTypeName",
+                                        "src": "4094:7:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_uint256",
+                                            "typeString": "uint256"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                },
+                                {
+                                    "constant": false,
+                                    "id": 1896,
+                                    "mutability": "mutable",
+                                    "name": "properties",
+                                    "nameLocation": "4144:10:5",
+                                    "nodeType": "VariableDeclaration",
+                                    "scope": 2099,
+                                    "src": "4124:30:5",
+                                    "stateVariable": false,
+                                    "storageLocation": "calldata",
+                                    "typeDescriptions": {
+                                        "typeIdentifier": "t_array$_t_struct$_Property_$1695_calldata_ptr_$dyn_calldata_ptr",
+                                        "typeString": "struct Property[]"
+                                    },
+                                    "typeName": {
+                                        "baseType": {
+                                            "id": 1894,
+                                            "nodeType": "UserDefinedTypeName",
+                                            "pathNode": {
+                                                "id": 1893,
+                                                "name": "Property",
+                                                "nameLocations": [
+                                                    "4124:8:5"
+                                                ],
+                                                "nodeType": "IdentifierPath",
+                                                "referencedDeclaration": 1695,
+                                                "src": "4124:8:5"
+                                            },
+                                            "referencedDeclaration": 1695,
+                                            "src": "4124:8:5",
+                                            "typeDescriptions": {
+                                                "typeIdentifier": "t_struct$_Property_$1695_storage_ptr",
+                                                "typeString": "struct Property"
+                                            }
+                                        },
+                                        "id": 1895,
+                                        "nodeType": "ArrayTypeName",
+                                        "src": "4124:10:5",
+                                        "typeDescriptions": {
+                                            "typeIdentifier": "t_array$_t_struct$_Property_$1695_storage_$dyn_storage_ptr",
+                                            "typeString": "struct Property[]"
+                                        }
+                                    },
+                                    "visibility": "internal"
+                                }
+                            ],
+                            "src": "4067:90:5"
+                        },
+                        "returnParameters": {
+                            "id": 1901,
+                            "nodeType": "ParameterList",
+                            "parameters": [],
+                            "src": "4198:0:5"
+                        },
+                        "scope": 2100,
+                        "src": "4031:1775:5",
+                        "stateMutability": "nonpayable",
+                        "virtual": false,
+                        "visibility": "external"
+                    }
+                ],
+                "scope": 2101,
+                "src": "494:5314:5",
+                "usedErrors": []
+            }
+        ],
+        "src": "44:5765:5"
+    },
+    "functionHashes": {
+        "mintToSubstrate(address,uint256)": "7a8d9786",
+        "mintToSubstrateWithProperty(address,uint256,(string,bytes)[])": "440dff9d"
+    },
+    "gasEstimates": {
+        "creation": {
+            "codeDepositCost": "730800",
+            "executionCost": "766",
+            "totalCost": "731566"
+        },
+        "external": {
+            "mintToSubstrate(address,uint256)": "infinite",
+            "mintToSubstrateWithProperty(address,uint256,(string,bytes)[])": "infinite"
+        }
+    }
+}
\ No newline at end of file
addedtests/src/eth/evmToSubstrate/ABIGEN/EvmToSubstrate.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/ABIGEN/EvmToSubstrate.ts
@@ -0,0 +1,67 @@
+/* Autogenerated file. Do not edit manually. */
+/* tslint:disable */
+/* eslint-disable */
+
+import type BN from "bn.js";
+import type { ContractOptions } from "web3-eth-contract";
+import type { EventLog } from "web3-core";
+import type { EventEmitter } from "events";
+import type {
+  Callback,
+  PayableTransactionObject,
+  NonPayableTransactionObject,
+  BlockType,
+  ContractEventLog,
+  BaseContract,
+} from "./types";
+
+export interface EventOptions {
+  filter?: object;
+  fromBlock?: BlockType;
+  topics?: string[];
+}
+
+export type MintToSub = ContractEventLog<{
+  _toEth: string;
+  _toSub: string;
+  _collection: string;
+  _tokenId: string;
+  0: string;
+  1: string;
+  2: string;
+  3: string;
+}>;
+
+export interface EvmToSubstrate extends BaseContract {
+  constructor(
+    jsonInterface: any[],
+    address?: string,
+    options?: ContractOptions
+  ): EvmToSubstrate;
+  clone(): EvmToSubstrate;
+  methods: {
+    mintToSubstrate(
+      _collection: string,
+      _substrateReceiver: number | string | BN
+    ): NonPayableTransactionObject<void>;
+
+    mintToSubstrateWithProperty(
+      _collection: string,
+      _substrateReceiver: number | string | BN,
+      properties: [string, string | number[]][]
+    ): NonPayableTransactionObject<void>;
+  };
+  events: {
+    MintToSub(cb?: Callback<MintToSub>): EventEmitter;
+    MintToSub(options?: EventOptions, cb?: Callback<MintToSub>): EventEmitter;
+
+    allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
+  };
+
+  once(event: "MintToSub", cb: Callback<MintToSub>): void;
+  once(
+    event: "MintToSub",
+    options: EventOptions,
+    cb: Callback<MintToSub>
+  ): void;
+}
addedtests/src/eth/evmToSubstrate/ABIGEN/index.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/ABIGEN/index.ts
@@ -0,0 +1,4 @@
+/* Autogenerated file. Do not edit manually. */
+/* tslint:disable */
+/* eslint-disable */
+export type { EvmToSubstrate } from "./EvmToSubstrate";
addedtests/src/eth/evmToSubstrate/ABIGEN/types.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/ABIGEN/types.ts
@@ -0,0 +1,73 @@
+/* Autogenerated file. Do not edit manually. */
+/* tslint:disable */
+/* eslint-disable */
+import type BN from "bn.js";
+import type { EventEmitter } from "events";
+import type { EventLog, PromiEvent, TransactionReceipt } from "web3-core/types";
+import type { Contract } from "web3-eth-contract";
+
+export interface EstimateGasOptions {
+  from?: string;
+  gas?: number;
+  value?: number | string | BN;
+}
+
+export interface EventOptions {
+  filter?: object;
+  fromBlock?: BlockType;
+  topics?: string[];
+}
+
+export type Callback<T> = (error: Error, result: T) => void;
+export interface ContractEventLog<T> extends EventLog {
+  returnValues: T;
+}
+export interface ContractEventEmitter<T> extends EventEmitter {
+  on(event: "connected", listener: (subscriptionId: string) => void): this;
+  on(
+    event: "data" | "changed",
+    listener: (event: ContractEventLog<T>) => void
+  ): this;
+  on(event: "error", listener: (error: Error) => void): this;
+}
+
+export interface NonPayableTx {
+  nonce?: string | number | BN;
+  chainId?: string | number | BN;
+  from?: string;
+  to?: string;
+  data?: string;
+  gas?: string | number | BN;
+  maxPriorityFeePerGas?: string | number | BN;
+  maxFeePerGas?: string | number | BN;
+  gasPrice?: string | number | BN;
+}
+
+export interface PayableTx extends NonPayableTx {
+  value?: string | number | BN;
+}
+
+export interface NonPayableTransactionObject<T> {
+  arguments: any[];
+  call(tx?: NonPayableTx, block?: BlockType): Promise<T>;
+  send(tx?: NonPayableTx): PromiEvent<TransactionReceipt>;
+  estimateGas(tx?: NonPayableTx): Promise<number>;
+  encodeABI(): string;
+}
+
+export interface PayableTransactionObject<T> {
+  arguments: any[];
+  call(tx?: PayableTx, block?: BlockType): Promise<T>;
+  send(tx?: PayableTx): PromiEvent<TransactionReceipt>;
+  estimateGas(tx?: PayableTx): Promise<number>;
+  encodeABI(): string;
+}
+
+export type BlockType =
+  | "latest"
+  | "pending"
+  | "genesis"
+  | "earliest"
+  | number
+  | BN;
+export type BaseContract = Omit<Contract, "clone" | "once">;
addedtests/src/eth/evmToSubstrate/EvmToSubstrateHelper.soldiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/EvmToSubstrateHelper.sol
@@ -0,0 +1,179 @@
+// SPDX-License-Identifier:  Apache License
+pragma solidity >=0.8.0;
+import {CollectionHelpers} from "../api/CollectionHelpers.sol";
+import {ContractHelpers} from "../api/ContractHelpers.sol";
+import {UniqueRefungibleToken} from "../api/UniqueRefungibleToken.sol";
+import {UniqueRefungible, Collection, EthCrossAccount as RftCrossAccountId, Tuple20 as RftProperties} from "../api/UniqueRefungible.sol";
+import {UniqueNFT, EthCrossAccount as NftCrossAccountId, Tuple21 as NftProperty, TokenProperties} from "../api/UniqueNFT.sol";
+
+struct Property {
+	string key;
+	bytes value;
+}
+
+// interface Foo {
+// 	struct Tuple19 {
+// 		string field_0;
+// 		bytes field_1;
+// 	}
+
+// }
+
+contract EvmToSubstrate {
+	bytes32 constant REFUNGIBLE_COLLECTION_TYPE = keccak256(bytes("ReFungible"));
+	bytes32 constant NONFUNGIBLE_COLLECTION_TYPE = keccak256(bytes("NFT"));
+	// bytes32 collectionType;
+
+	// Collection commonContract;
+	// UniqueNFT nftCollection;
+	// UniqueRefungible rftCollection;
+
+	// function(address, uint256) external returns (bool) mintInvoke;
+	// function(address, address, uint256) external transferInvoke;
+
+	modifier checkRestrictions(address _collection) {
+		Collection commonContract = Collection(_collection);
+		require(commonContract.isOwnerOrAdmin(msg.sender), "Only collection admin/owner can call this method");
+
+		// bytes32 collectionType = keccak256(bytes(commonContract.uniqueCollectionType()));
+		// uint256 tokenId;
+
+		// if (collectionType == REFUNGIBLE_COLLECTION_TYPE) {
+		// 	UniqueRefungible rftCollection = UniqueRefungible(_collection);
+		// 	mintInvoke = rftCollection.mint;
+		// 	transferInvoke = rftCollection.transferFrom;
+		// 	tokenId = rftCollection.nextTokenId();
+		// } else if (collectionType == NONFUNGIBLE_COLLECTION_TYPE) {
+		// 	UniqueNFT nftCollection = UniqueNFT(_collection);
+		// 	mintInvoke = nftCollection.mint;
+		// 	transferInvoke = nftCollection.transferFrom;
+
+		// 	tokenId = nftCollection.nextTokenId();
+		// } else {
+		// 	revert("Wrong collection type. Works only with NFT or RFT");
+		// }
+
+		_;
+	}
+
+	/// @dev This emits when a mint to a substrate address has been made.
+	event MintToSub(address _toEth, uint256 _toSub, address _collection, uint256 _tokenId);
+
+	function mintToSubstrate(address _collection, uint256 _substrateReceiver) external checkRestrictions(_collection) {
+		// function(address, uint256) external returns (bool) mintInvoke;
+		// function(Tuple8 memory, Tuple8 memory, uint256) external transferInvoke;
+		Collection commonContract = Collection(_collection);
+		bytes32 collectionType = keccak256(bytes(commonContract.uniqueCollectionType()));
+		uint256 tokenId;
+
+		if (collectionType == REFUNGIBLE_COLLECTION_TYPE) {
+			UniqueRefungible rftCollection = UniqueRefungible(_collection);
+			
+			tokenId = rftCollection.mint(address(this));
+
+			rftCollection.transferFromCross(
+				RftCrossAccountId(address(this), 0),
+				RftCrossAccountId(address(0), _substrateReceiver),
+				tokenId
+			);
+		} else if (collectionType == NONFUNGIBLE_COLLECTION_TYPE) {
+			UniqueNFT nftCollection = UniqueNFT(_collection);
+			// tokenId = nftCollection.nextTokenId();
+			tokenId = nftCollection.mint(address(this));
+
+			nftCollection.transferFromCross(
+				NftCrossAccountId(address(this), 0),
+				NftCrossAccountId(address(0), _substrateReceiver),
+				tokenId
+			);
+		} else {
+			revert("Wrong collection type. Works only with NFT or RFT");
+		}
+
+		// mintInvoke(address(this), tokenId);
+		// Tuple8 memory sender = Tuple8(address(this), 0);
+		// Tuple8 memory receiver = Tuple8(address(0), _substrateReceiver);
+
+		// transferInvoke(sender, receiver, tokenId);
+
+		emit MintToSub(address(0), _substrateReceiver, _collection, tokenId);
+	}
+
+	function mintToSubstrateWithProperty(
+		address _collection,
+		uint256 _substrateReceiver,
+		Property[] calldata properties
+	) external checkRestrictions(_collection) {
+		// function(address, uint256, string memory) external returns (bool) mintInvoke;
+		// function(address, address, uint256) external transferInvoke;
+		uint256 propertiesLength = properties.length;
+		require(propertiesLength > 0, "Properies is empty");
+
+		Collection commonContract = Collection(_collection);
+		bytes32 collectionType = keccak256(bytes(commonContract.uniqueCollectionType()));
+		uint256 tokenId;
+
+		if (collectionType == REFUNGIBLE_COLLECTION_TYPE) {
+			UniqueRefungible rftCollection = UniqueRefungible(_collection);
+			tokenId = rftCollection.nextTokenId();
+			rftCollection.mint(address(this));
+			for (uint256 i = 0; i < propertiesLength; ++i) {
+				rftCollection.setProperty(tokenId, properties[i].key, properties[i].value);
+			}
+			rftCollection.transferFromCross(
+				RftCrossAccountId(address(this), 0),
+				RftCrossAccountId(address(0), _substrateReceiver),
+				tokenId
+			);
+		} else if (collectionType == NONFUNGIBLE_COLLECTION_TYPE) {
+			UniqueNFT nftCollection = UniqueNFT(_collection);
+			// tokenId = nftCollection.nextTokenId();
+			tokenId = nftCollection.mint(address(this));
+			for (uint256 i = 0; i < propertiesLength; ++i) {
+				nftCollection.setProperty(tokenId, properties[i].key, properties[i].value);
+			}
+			nftCollection.transferFromCross(
+				NftCrossAccountId(address(this), 0),
+				NftCrossAccountId(address(0), _substrateReceiver),
+				tokenId
+			);
+		} else {
+			revert("Wrong collection type. Works only with NFT or RFT");
+		}
+
+		// transferInvoke(address(this), _gap, tokenId);
+
+		emit MintToSub(address(0), _substrateReceiver, _collection, tokenId);
+	}
+
+	function mintToSubstrateBulkProperty(
+		address _collection,
+		uint256 _substrateReceiver,
+		NftProperty[] calldata _properties
+	) external checkRestrictions(_collection) {
+		uint256 propertiesLength = _properties.length;
+		require(propertiesLength > 0, "Properies is empty");
+
+		Collection commonContract = Collection(_collection);
+		bytes32 collectionType = keccak256(bytes(commonContract.uniqueCollectionType()));
+		uint256 tokenId;
+
+		if (collectionType == REFUNGIBLE_COLLECTION_TYPE) {} else if (collectionType == NONFUNGIBLE_COLLECTION_TYPE) {
+			UniqueNFT nftCollection = UniqueNFT(_collection);
+			// tokenId = nftCollection.nextTokenId();
+			tokenId = nftCollection.mint(address(this));
+
+			nftCollection.setProperties(tokenId, _properties);
+
+			nftCollection.transferFromCross(
+				NftCrossAccountId(address(this), 0),
+				NftCrossAccountId(address(0), _substrateReceiver),
+				tokenId
+			);
+		} else {
+			revert("Wrong collection type. Works only with NFT or RFT");
+		}
+
+		emit MintToSub(address(0), _substrateReceiver, _collection, tokenId);
+	}
+}
addedtests/src/eth/evmToSubstrate/abigen.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/abigen.ts
@@ -0,0 +1,19 @@
+import {runTypeChain, glob} from 'typechain';
+
+
+async function main() {
+  const cwd = process.cwd();
+
+  // find all files matching the glob
+  const allFiles = glob(cwd, ['./ABI/*.json']);
+
+  const result = await runTypeChain({
+    cwd,
+    filesToProcess: allFiles,
+    allFiles,
+    outDir: 'ABIGEN',
+    target: 'web3-v1',
+  });
+}
+
+main().catch(console.error);
\ No newline at end of file
addedtests/src/eth/evmToSubstrate/addressResearch.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/addressResearch.ts
@@ -0,0 +1,191 @@
+// import {createEthAccountWithBalance} from '../util/helpers';
+import {EthUniqueHelper, usingEthPlaygrounds} from '../util/playgrounds';
+import {readFile} from 'fs/promises';
+import {ContractImports} from '../util/playgrounds/types';
+import {Contract} from '@polkadot/api-contract/base';
+import Web3 from 'web3';
+import {IProperty, ITokenPropertyPermission} from '../../util/playgrounds/types';
+import {addressToEvm, decodeAddress} from '@polkadot/util-crypto';
+import nonFungibleAbi from '../nonFungibleAbi.json';
+import {CrossAccountId} from '../../util/helpers';
+import {IKeyringPair} from '@polkadot/types/types';
+
+enum SponsoringMode {
+	Disabled = 0,
+	Allowlisted = 1,
+	Generous = 2,
+}
+
+const WS_ENDPOINT = 'wss://ws-rc.unique.network';
+const CONTRACT_IMPORT: ContractImports[] = [
+  {
+    fsPath: `${__dirname}/../api/CollectionHelpers.sol`,
+    solPath: 'api/CollectionHelpers.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/ContractHelpers.sol`,
+    solPath: 'api/ContractHelpers.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueRefungibleToken.sol`,
+    solPath: 'api/UniqueRefungibleToken.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueRefungible.sol`,
+    solPath: 'api/UniqueRefungible.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueNFT.sol`,
+    solPath: 'api/UniqueNFT.sol',
+  },
+];
+const main = async () => {
+  await usingEthPlaygrounds(async (helper, privateKey) => {
+    const contract_source = (
+      await readFile(`${__dirname}/EvmToSubstrateHelper.sol`)
+    ).toString();
+      
+    
+    const donor = privateKey('//Alice'); // Seed from account with balance on this network
+    const myAccount = privateKey('//Bob'); // replace with account from polkadot extension
+    console.log('donor raw sub: ', donor.addressRaw);
+    console.log('donor sub->eth->sub: ', decodeAddress(await helper.address.ethToSubstrate(helper.address.substrateToEth(donor.address))));
+    console.log('donor sub: ', donor.address);
+
+    console.log('donor raw eth: ', Uint8Array.from(Buffer.from(helper.address.substrateToEth(donor.address).slice(2), 'hex')));
+    console.log('donor eth: ', helper.address.substrateToEth(donor.address));
+    
+    const signer = await helper.eth.createAccountWithBalance(donor, 100n);
+    
+    console.log('\nsigner eth: ', signer);
+    console.log('signer raw eth: ', Uint8Array.from(Buffer.from(signer.slice(2), 'hex')));
+    console.log('signer raw sub: ', decodeAddress(await helper.address.ethToSubstrate(signer)));
+
+    const collection = await helper.nft.mintCollection(donor, {
+      name: 'test mintToSubstrate',
+      description: 'EVMHelpers',
+      tokenPrefix: 'ap',
+      tokenPropertyPermissions: [
+        {
+          key: 'url',
+          permission: {
+            tokenOwner: true,
+            collectionAdmin: true,
+            mutable: true,
+          },
+        },
+      ],
+      limits: {sponsorTransferTimeout: 0, sponsorApproveTimeout: 0}, permissions: {mintMode: true},
+    });
+   
+    // await collection.addToAllowList(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+    // await collection.addToAllowList(donor, {Substrate: donor.address});
+    await collection.addToAllowList(donor, {Substrate: myAccount.address});
+    // await collection.addAdmin(donor, {Ethereum: signer});
+    // await collection.addAdmin(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+    
+    console.log('collection admin(s)): ', await collection.getAdmins());
+    console.log('collection owner(s)): ', await collection.getAllowList());
+  
+    
+    const collectionEthAddress = helper.ethAddress.fromCollectionId(collection.collectionId);
+    const collectionContract = helper.ethNativeContract.collection(
+      collectionEthAddress,
+      'nft',
+    );
+    const receiverEthAddress = helper.address.substrateToEth(myAccount.address);
+    
+    console.log('myAccount eth mirror: ', receiverEthAddress);
+    console.log('contract eth mirror: ', collectionEthAddress);
+
+    let subTokenId = await collectionContract.methods.nextTokenId().call();
+
+    const encodedCall = collectionContract.methods
+      .mint(receiverEthAddress, subTokenId)
+      .encodeABI();
+
+    const ethFee = await helper.arrange.calculcateFee(
+      {Substrate: donor.address},
+      async () => {
+        await helper.eth.sendEVM(
+          myAccount,
+          collectionContract.options.address,
+          encodedCall,
+          '0',
+        );
+      },
+    );
+
+    console.log(`\ncollection mint from eth : ${ethFee}\n`);
+
+    // subTokenId = await collectionContract.methods.nextTokenId().call();
+    
+    // const contract = await helper.ethContract.deployByCode(signer, 'EvmToSubstrate', contract_source, CONTRACT_IMPORT);
+    // console.log('contract Address', contract.options.address);
+    // await helper.eth.transferBalanceFromSubstrate(donor, contract.options.address, 100n);
+    
+    // await collection.addToAllowList(donor, {Ethereum: contract.options.address});
+    // await collection.addAdmin(donor, {Ethereum: contract.options.address});
+   
+    
+    // const feeForProxyContractMinting = await helper.arrange.calculcateFee(
+    //   {Ethereum: signer},
+    //   async () => {
+    //     await contract.methods.mintToSubstrate(helper.ethAddress.fromCollectionId(collection.collectionId), myAccount.addressRaw).send({from: signer});
+    //   },
+    // );
+      
+    // console.log(`\ncollection mint from contract to the Substrate Id: ${feeForProxyContractMinting}\n`);
+    subTokenId = await collectionContract.methods.nextTokenId().call();
+    console.log(subTokenId);  
+   
+    console.log('All done');
+  });
+};
+    
+main()
+  .then(() => process.exit(0))
+  .catch((e) => {
+    console.log(e);
+    process.exit(1);
+  });
+    
+    
+async function createCollectionForPropertiesBenchmarks(
+  helper: EthUniqueHelper,
+  privateKey: (seed: string) => IKeyringPair,
+  ethSigner: string,
+  proxyContract: string,
+  permissions: ITokenPropertyPermission[],
+) {
+    
+  const donor = privateKey('//Alice'); // Seed from account with balance on this network
+    
+    
+  const collection = await helper.nft.mintCollection(donor, {
+    name: 'test mintToSubstrate',
+    description: 'EVMHelpers',
+    tokenPrefix: 'ap',
+    tokenPropertyPermissions: [
+      {
+        key: 'url',
+        permission: {
+          tokenOwner: true,
+          collectionAdmin: true,
+          mutable: true,
+        },
+      },
+    ],
+    limits: {sponsorTransferTimeout: 0, sponsorApproveTimeout: 0}, permissions: {mintMode: true},
+  });
+   
+  await collection.addToAllowList(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+  await collection.addToAllowList(donor, {Substrate: donor.address});
+  await collection.addAdmin(donor, {Ethereum: ethSigner});
+  await collection.addAdmin(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+  await collection.addToAllowList(donor, {Ethereum: proxyContract});
+  await collection.addAdmin(donor, {Ethereum: proxyContract});
+  await collection.setTokenPropertyPermissions(donor, permissions);
+  
+  return collection;
+} 
\ No newline at end of file
addedtests/src/eth/evmToSubstrate/feeBench.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/feeBench.ts
@@ -0,0 +1,314 @@
+import {EthUniqueHelper, usingEthPlaygrounds} from '../util';
+import {readFile} from 'fs/promises';
+import {ContractImports} from '../util/playgrounds/types';
+import {Contract} from '@polkadot/api-contract/base';
+import Web3 from 'web3';
+import {IProperty, ITokenPropertyPermission} from '../../util/playgrounds/types';
+import {addressToEvm, decodeAddress} from '@polkadot/util-crypto';
+import nonFungibleAbi from '../nonFungibleAbi.json';
+import {IKeyringPair} from '@polkadot/types/types';
+
+enum SponsoringMode {
+	Disabled = 0,
+	Allowlisted = 1,
+	Generous = 2,
+}
+
+const WS_ENDPOINT = 'wss://ws-rc.unique.network';
+const CONTRACT_IMPORT: ContractImports[] = [
+  {
+    fsPath: `${__dirname}/../api/CollectionHelpers.sol`,
+    solPath: 'api/CollectionHelpers.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/ContractHelpers.sol`,
+    solPath: 'api/ContractHelpers.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueRefungibleToken.sol`,
+    solPath: 'api/UniqueRefungibleToken.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueRefungible.sol`,
+    solPath: 'api/UniqueRefungible.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueNFT.sol`,
+    solPath: 'api/UniqueNFT.sol',
+  },
+];
+const main = async () => {
+  await usingEthPlaygrounds(async (helper, privateKey) => {
+    const contract_source = (
+      await readFile(`${__dirname}/EvmToSubstrateHelper.sol`)
+    ).toString();
+      
+    
+    const donor = await privateKey('//Alice'); // Seed from account with balance on this network
+    const myAccount = await privateKey('//Bob'); // replace with account from polkadot extension
+   
+    const signer = await helper.eth.createAccountWithBalance(donor, 100n);
+
+    const collection = await helper.nft.mintCollection(donor, {
+      name: 'test mintToSubstrate',
+      description: 'EVMHelpers',
+      tokenPrefix: 'ap',
+      tokenPropertyPermissions: [
+        {
+          key: 'url',
+          permission: {
+            tokenOwner: true,
+            collectionAdmin: true,
+            mutable: true,
+          },
+        },
+      ],
+      limits: {sponsorTransferTimeout: 0, sponsorApproveTimeout: 0}, permissions: {mintMode: true},
+    });
+   
+    await collection.addToAllowList(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+    await collection.addToAllowList(donor, {Substrate: donor.address});
+    await collection.addAdmin(donor, {Ethereum: signer});
+    await collection.addAdmin(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+    
+    console.log('collection admin(s)): ', await collection.getAdmins());
+    console.log('collection owner(s)): ', await collection.getAllowList());
+    const fee = await helper.arrange.calculcateFee({Substrate: donor.address}, () => collection.mintToken(donor, {Substrate: myAccount.address}));
+    console.log(`\ntoken mint from susbtrate : ${fee}`);
+    
+    const collectionEthAddress = helper.ethAddress.fromCollectionId(collection.collectionId);
+    const collectionContract = helper.ethNativeContract.collection(
+      collectionEthAddress,
+      'nft',
+    );
+    
+    const receiverEthAddress = helper.address.substrateToEth(myAccount.address);
+    
+    // let subTokenId = await collectionContract.methods.nextTokenId().call();
+
+    let encodedCall = collectionContract.methods
+      .mint(receiverEthAddress)
+      .encodeABI();
+
+    const ethFee = await helper.arrange.calculcateFee(
+      {Substrate: donor.address},
+      async () => {
+        await helper.eth.sendEVM(
+          donor,
+          collectionContract.options.address,
+          encodedCall,
+          '0',
+        );
+      },
+    );
+
+    console.log(`token mint from eth : ${ethFee}`);
+    
+    const contract = await helper.ethContract.deployByCode(signer, 'EvmToSubstrate', contract_source, CONTRACT_IMPORT);
+    console.log(`contract has been deployed`);
+    
+    await helper.eth.transferBalanceFromSubstrate(donor, contract.options.address, 100n);
+    
+    console.log(`transfer has been completed`);
+    
+    await collection.addToAllowList(donor, { Ethereum: contract.options.address });
+    await collection.addAdmin(donor, {Ethereum: contract.options.address});
+   
+    console.log(`setup has been completed`);
+    
+    const feeForProxyContractMinting = await helper.arrange.calculcateFee(
+      {Ethereum: signer},
+      async () => {
+        await contract.methods.mintToSubstrate(helper.ethAddress.fromCollectionId(collection.collectionId), myAccount.addressRaw).send({from: signer});
+      },
+    );
+      
+    console.log(`token mint from contract to the Substrate Id: ${feeForProxyContractMinting}\n`);
+    // subTokenId = await collectionContract.methods.nextTokenId().call();
+      
+    /// *** properties part *** 
+      
+    console.log('\t\t\t *** Properties Fees ***\n');
+
+    const propertiesNumber = 20;
+    
+    const properties = Array(40).fill(0)
+      .map((_, i) => { return {key: `key_${i}`, value: Uint8Array.from(Buffer.from(`value_${i}`))}; });
+    
+    const permissions: ITokenPropertyPermission[] = properties
+      .map(p => {
+        return {
+          key: p.key, permission: {
+            tokenOwner: true,
+            collectionAdmin: true,
+            mutable: true}}; });
+    
+    
+    //    *** Susbtrate ***
+    
+    const collectionForSubstrateBench = await createCollectionForPropertiesBenchmarks(helper, privateKey, signer, contract.options.address, permissions);
+    
+    const mintWithPropSubstrate = await helper.arrange.calculcateFee({Substrate: donor.address}, async () => {
+      await collectionForSubstrateBench
+        .mintToken(donor, {Substrate: myAccount.address}, properties.slice(0, propertiesNumber).map(p => { return {key: p.key, value: Buffer.from(p.value).toString()}; }));
+    });
+    console.log(`token mint from susbtrate: ${mintWithPropSubstrate}`);
+    
+    //    *** EVM ***
+    
+    const collectionForEvmBench = await createCollectionForPropertiesBenchmarks(helper, privateKey, signer, contract.options.address, permissions);
+    const evmContract = helper.ethNativeContract.collection(helper.ethAddress.fromCollectionId(collectionForEvmBench.collectionId), 'nft');
+    
+    let subTokenId = await evmContract.methods.nextTokenId().call();
+    
+    encodedCall = evmContract.methods
+      .mint(receiverEthAddress)
+      .encodeABI();
+    
+    const evmCallWithPropFee = await helper.arrange.calculcateFee(
+      {Substrate: donor.address},
+      async () => {
+
+        await helper.eth.sendEVM(
+          donor,
+          evmContract.options.address,
+          encodedCall,
+          '0',
+        );
+        
+        for (const val of properties.slice(0, propertiesNumber)) {
+          
+          encodedCall = await evmContract.methods
+            .setProperty(subTokenId, val.key, Buffer.from(val.value))
+            .encodeABI();
+          
+          await helper.eth.sendEVM(
+            donor,
+            evmContract.options.address,
+            encodedCall,
+            '0',
+          );
+        }
+      },
+    );
+    
+    console.log(`token mint from eth : ${evmCallWithPropFee}`);
+    
+    
+    
+    //    *** EVM Bulk***
+    
+    const collectionForEvmBulkBench = await createCollectionForPropertiesBenchmarks(helper, privateKey, signer, contract.options.address, permissions);
+    const evmBulkContract = helper.ethNativeContract.collection(helper.ethAddress.fromCollectionId(collectionForEvmBulkBench.collectionId), 'nft');
+    
+    subTokenId = await evmBulkContract.methods.nextTokenId().call();
+
+    encodedCall = evmBulkContract.methods
+      .mint(receiverEthAddress)
+      .encodeABI();
+    
+    const evmCallWithBulkPropFee = await helper.arrange.calculcateFee(
+      {Substrate: donor.address},
+      async () => {
+
+        await helper.eth.sendEVM(
+          donor,
+          evmBulkContract.options.address,
+          encodedCall,
+          '0',
+        );
+        
+       
+          
+        encodedCall = await evmBulkContract.methods
+          .setProperties(
+            subTokenId,
+            properties.slice(0, propertiesNumber)
+              .map(p => { return {field_0: p.key, field_1: p.value}; }),
+          )
+          .encodeABI();
+          
+        await helper.eth.sendEVM(
+          donor,
+          evmBulkContract.options.address,
+          encodedCall,
+          '0',
+        );
+        
+      },
+    );
+    
+    console.log(`token mint from eth (Bulk) : ${evmCallWithBulkPropFee}`);
+    
+    
+    //    *** ProxyContract ***
+    
+    await collection.setTokenPropertyPermissions(donor, permissions);
+    const mintWithPropProxyContractFee = await helper.arrange.calculcateFee({Ethereum: signer}, async () => {
+      await contract.methods.mintToSubstrateWithProperty(helper.ethAddress
+        .fromCollectionId(collection.collectionId), myAccount.addressRaw, properties.slice(0, propertiesNumber)).send({from: signer});
+    });
+    console.log(`token mint from contract to the Substrate Id: ${mintWithPropProxyContractFee}`);
+    
+    
+    // //    *** ProxyContract Bulk ***
+    
+    const collectionForProxyContractBulrProperties = await createCollectionForPropertiesBenchmarks(helper, privateKey, signer, contract.options.address, permissions);
+    const evmContractProxyBulk = helper.ethNativeContract.collection(helper.ethAddress.fromCollectionId(collectionForProxyContractBulrProperties.collectionId), 'nft');
+    
+    const mintWithBulkPropProxyContractFee = await helper.arrange.calculcateFee({Ethereum: signer}, async () => {
+      await contract.methods.mintToSubstrateBulkProperty(evmContractProxyBulk.options.address, myAccount.addressRaw, properties.slice(0, propertiesNumber)
+        .map(p => { return {field_0: p.key, field_1: p.value}; })).send({from: signer});
+    });
+    console.log(`token mint from contract(with bulk prop.) to the Substrate Id: ${mintWithBulkPropProxyContractFee}`);
+        
+    console.log('All done');
+  });
+};
+    
+main()
+  .then(() => process.exit(0))
+  .catch((e) => {
+    console.log(e);
+    process.exit(1);
+  });
+    
+    
+async function createCollectionForPropertiesBenchmarks(
+  helper: EthUniqueHelper,
+  privateKey: (seed: string) => Promise<IKeyringPair>,
+  ethSigner: string,
+  proxyContract: string,
+  permissions: ITokenPropertyPermission[],
+) {
+    
+  const donor = await privateKey('//Alice'); // Seed from account with balance on this network
+    
+    
+  const collection = await helper.nft.mintCollection(donor, {
+    name: 'test mintToSubstrate',
+    description: 'EVMHelpers',
+    tokenPrefix: 'ap',
+    tokenPropertyPermissions: [
+      {
+        key: 'url',
+        permission: {
+          tokenOwner: true,
+          collectionAdmin: true,
+          mutable: true,
+        },
+      },
+    ],
+    limits: {sponsorTransferTimeout: 0, sponsorApproveTimeout: 0}, permissions: {mintMode: true},
+  });
+   
+  await collection.addToAllowList(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+  await collection.addToAllowList(donor, {Substrate: donor.address});
+  await collection.addAdmin(donor, {Ethereum: ethSigner});
+  await collection.addAdmin(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+  await collection.addToAllowList(donor, {Ethereum: proxyContract});
+  await collection.addAdmin(donor, {Ethereum: proxyContract});
+  await collection.setTokenPropertyPermissions(donor, permissions);
+  
+  return collection;
+} 
\ No newline at end of file
addedtests/src/eth/evmToSubstrate/prototype.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/evmToSubstrate/prototype.ts
@@ -0,0 +1,256 @@
+// import {createEthAccountWithBalance} from '../util/helpers';
+import {EthUniqueHelper, usingEthPlaygrounds} from '../util/playgrounds';
+import {readFile} from 'fs/promises';
+import {ContractImports} from '../util/playgrounds/types';
+import {Contract} from '@polkadot/api-contract/base';
+import Web3 from 'web3';
+import {IProperty, ITokenPropertyPermission} from '../../util/playgrounds/types';
+import {addressToEvm, decodeAddress} from '@polkadot/util-crypto';
+import nonFungibleAbi from '../nonFungibleAbi.json';
+
+import {IKeyringPair} from '@polkadot/types/types';
+
+enum SponsoringMode {
+	Disabled = 0,
+	Allowlisted = 1,
+	Generous = 2,
+}
+
+const WS_ENDPOINT = 'wss://ws-rc.unique.network';
+const CONTRACT_IMPORT: ContractImports[] = [
+  {
+    fsPath: `${__dirname}/../api/CollectionHelpers.sol`,
+    solPath: 'api/CollectionHelpers.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/ContractHelpers.sol`,
+    solPath: 'api/ContractHelpers.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueRefungibleToken.sol`,
+    solPath: 'api/UniqueRefungibleToken.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueRefungible.sol`,
+    solPath: 'api/UniqueRefungible.sol',
+  },
+  {
+    fsPath: `${__dirname}/../api/UniqueNFT.sol`,
+    solPath: 'api/UniqueNFT.sol',
+  },
+];
+const main = async () => {
+  await usingEthPlaygrounds(async (helper, privateKey) => {
+    const contractSource = (
+      await readFile(`${__dirname}/EvmToSubstrateHelper.sol`)
+    ).toString();
+      
+    
+    const donor = privateKey('//Alice'); // Seed from account with balance on this network
+    const myAccount = privateKey('//Bob'); // replace with account from polkadot extension
+    console.log('donor raw sub: ', donor.addressRaw);
+    console.log('donor sub->eth->sub: ', decodeAddress(await helper.address.ethToSubstrate(helper.address.substrateToEth(donor.address))));
+    console.log('donor sub: ', donor.address);
+
+    console.log('donor raw eth: ', Uint8Array.from(Buffer.from(helper.address.substrateToEth(donor.address).slice(2), 'hex')));
+    console.log('donor eth: ', helper.address.substrateToEth(donor.address));
+    
+    const signer = await helper.eth.createAccountWithBalance(donor, 100n);
+    
+    console.log('\nsigner eth: ', signer);
+    console.log('signer raw eth: ', Uint8Array.from(Buffer.from(signer.slice(2), 'hex')));
+    console.log('signer raw sub: ', decodeAddress(await helper.address.ethToSubstrate(signer)));
+
+    const collection = await helper.nft.mintCollection(donor, {
+      name: 'test mintToSubstrate',
+      description: 'EVMHelpers',
+      tokenPrefix: 'ap',
+      tokenPropertyPermissions: [
+        {
+          key: 'url',
+          permission: {
+            tokenOwner: true,
+            collectionAdmin: true,
+            mutable: true,
+          },
+        },
+      ],
+      limits: {sponsorTransferTimeout: 0, sponsorApproveTimeout: 0}, permissions: {mintMode: true},
+    });
+   
+    await collection.addToAllowList(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+    await collection.addToAllowList(donor, {Substrate: donor.address});
+    await collection.addAdmin(donor, {Ethereum: signer});
+    await collection.addAdmin(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+    
+    console.log('collection admin(s)): ', await collection.getAdmins());
+    console.log('collection owner(s)): ', await collection.getAllowList());
+    const fee = await helper.arrange.calculcateFee({Substrate: donor.address}, () => collection.mintToken(donor, {Substrate: myAccount.address}));
+    console.log(`\ncollection mint from susbtrate : ${fee}\n`);
+    
+    const collectionEthAddress = helper.ethAddress.fromCollectionId(collection.collectionId);
+    const collectionContract = helper.ethNativeContract.collection(
+      collectionEthAddress,
+      'nft',
+    );
+    const receiverEthAddress = helper.address.substrateToEth(myAccount.address);
+    console.log('myAccount eth mirror: ', receiverEthAddress);
+    console.log('contract eth mirror: ', collectionEthAddress);
+
+    let subTokenId = await collectionContract.methods.nextTokenId().call();
+
+    let encodedCall = collectionContract.methods
+      .mint(receiverEthAddress, subTokenId)
+      .encodeABI();
+
+    const ethFee = await helper.arrange.calculcateFee(
+      {Substrate: donor.address},
+      async () => {
+        await helper.eth.sendEVM(
+          donor,
+          collectionContract.options.address,
+          encodedCall,
+          '0',
+        );
+      },
+    );
+
+    console.log(`\ncollection mint from eth : ${ethFee}\n`);
+
+    subTokenId = await collectionContract.methods.nextTokenId().call();
+    
+    const contract = await helper.ethContract.deployByCode(signer, 'EvmToSubstrate', contractSource, CONTRACT_IMPORT);
+    console.log('contract Address', contract.options.address);
+    await helper.eth.transferBalanceFromSubstrate(donor, contract.options.address, 100n);
+    
+    await collection.addToAllowList(donor, {Ethereum: contract.options.address});
+    await collection.addAdmin(donor, {Ethereum: contract.options.address});
+   
+    
+    const feeForProxyContractMinting = await helper.arrange.calculcateFee(
+      {Ethereum: signer},
+      async () => {
+        await contract.methods.mintToSubstrate(helper.ethAddress.fromCollectionId(collection.collectionId), myAccount.addressRaw).send({from: signer});
+      },
+    );
+      
+    console.log(`\ncollection mint from contract to the Substrate Id: ${feeForProxyContractMinting}\n`);
+    subTokenId = await collectionContract.methods.nextTokenId().call();
+      
+    /// *** properties part *** 
+      
+    console.log('\t\t\t *** Properties Fees ***\n');
+
+    const propertiesNumber = 20;
+    
+    const properties = Array(40).fill(0).map((_, i) => { return {key: `key_${i}`, value: Uint8Array.from(Buffer.from(`value_${i}`))}; });
+    const permissions: ITokenPropertyPermission[] = properties.map(p => { return {key: p.key, permission: {tokenOwner: true,
+      collectionAdmin: true,
+      mutable: true}}; });
+        
+    await collection.setTokenPropertyPermissions(donor, permissions);
+        
+    
+    const mintWithPropProxyContractFee = await helper.arrange.calculcateFee({Ethereum: signer}, async () => {
+      await contract.methods.mintToSubstrateWithProperty(helper.ethAddress
+        .fromCollectionId(collection.collectionId), myAccount.addressRaw, properties.slice(0, propertiesNumber)).send({from: signer});
+    });
+    console.log(`collection mint from contract to the Substrate Id: ${mintWithPropProxyContractFee}`);
+    
+    const collectionForSubstrateBench = await createCollectionForPropertiesBenchmarks(helper, privateKey, signer, contract.options.address, permissions);
+    
+    const mintWithPropSubstrate = await helper.arrange.calculcateFee({Substrate: donor.address}, async () => {
+      await collectionForSubstrateBench
+        .mintToken(donor, {Substrate: myAccount.address}, properties.slice(0, propertiesNumber).map(p => { return {key: p.key, value: Buffer.from(p.value).toString()}; }));
+    });
+    
+    console.log(`collection mint from susbtrate: ${mintWithPropSubstrate}`);
+    
+    const collectionForEvmBench = await createCollectionForPropertiesBenchmarks(helper, privateKey, signer, contract.options.address, permissions);
+    const evmContract = helper.ethNativeContract.collection(helper.ethAddress.fromCollectionId(collectionForEvmBench.collectionId), 'nft');
+    
+    subTokenId = await evmContract.methods.nextTokenId().call();
+
+    encodedCall = evmContract.methods
+      .mint(receiverEthAddress, subTokenId)
+      .encodeABI();
+    
+    const evmCallWithPropFee = await helper.arrange.calculcateFee(
+      {Substrate: donor.address},
+      async () => {
+
+        await helper.eth.sendEVM(
+          donor,
+          evmContract.options.address,
+          encodedCall,
+          '0',
+        );
+        
+        for (const val of properties.slice(0, propertiesNumber)) {
+          
+          encodedCall = await evmContract.methods
+            .setProperty(subTokenId, val.key, Buffer.from(val.value))
+            .encodeABI();
+          
+          await helper.eth.sendEVM(
+            donor,
+            evmContract.options.address,
+            encodedCall,
+            '0',
+          );
+        }
+      },
+    );
+    
+    console.log(`collection mint from eth : ${evmCallWithPropFee}`);
+
+    console.log('All done');
+  });
+};
+    
+main()
+  .then(() => process.exit(0))
+  .catch((e) => {
+    console.log(e);
+    process.exit(1);
+  });
+    
+    
+async function createCollectionForPropertiesBenchmarks(
+  helper: EthUniqueHelper,
+  privateKey: (seed: string) => IKeyringPair,
+  ethSigner: string,
+  proxyContract: string,
+  permissions: ITokenPropertyPermission[],
+) {
+    
+  const donor = privateKey('//Alice'); // Seed from account with balance on this network
+    
+    
+  const collection = await helper.nft.mintCollection(donor, {
+    name: 'test mintToSubstrate',
+    description: 'EVMHelpers',
+    tokenPrefix: 'ap',
+    tokenPropertyPermissions: [
+      {
+        key: 'url',
+        permission: {
+          tokenOwner: true,
+          collectionAdmin: true,
+          mutable: true,
+        },
+      },
+    ],
+    limits: {sponsorTransferTimeout: 0, sponsorApproveTimeout: 0}, permissions: {mintMode: true},
+  });
+   
+  await collection.addToAllowList(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+  await collection.addToAllowList(donor, {Substrate: donor.address});
+  await collection.addAdmin(donor, {Ethereum: ethSigner});
+  await collection.addAdmin(donor, {Ethereum: helper.address.substrateToEth(donor.address)});
+  await collection.addToAllowList(donor, {Ethereum: proxyContract});
+  await collection.addAdmin(donor, {Ethereum: proxyContract});
+  await collection.setTokenPropertyPermissions(donor, permissions);
+  
+  return collection;
+} 
\ No newline at end of file
modifiedtests/yarn.lockdiffbeforeafterboth
--- a/tests/yarn.lock
+++ b/tests/yarn.lock
@@ -940,6 +940,14 @@
   resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e"
   integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==
 
+"@typechain/web3-v1@^6.0.1":
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/@typechain/web3-v1/-/web3-v1-6.0.1.tgz#459d1d6901134310fbc1cf9cd263bf529d979572"
+  integrity sha512-w3xehVgsKV74fGBx1d6xuySWZJ/DbLaYWJDqaDy93qojOicDPESESfOL0XIWZfEmhxk+1JEDC9Roqb/eBmldaA==
+  dependencies:
+    lodash "^4.17.15"
+    ts-essentials "^7.0.1"
+
 "@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1":
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682"
@@ -1023,6 +1031,11 @@
   dependencies:
     "@types/node" "*"
 
+"@types/prettier@^2.1.1":
+  version "2.7.0"
+  resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc"
+  integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==
+
 "@types/responselike@*", "@types/responselike@^1.0.0":
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29"
@@ -1211,6 +1224,16 @@
   resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
   integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
 
+array-back@^3.0.1, array-back@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0"
+  integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==
+
+array-back@^4.0.1, array-back@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e"
+  integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==
+
 array-flatten@1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
@@ -1573,7 +1596,7 @@
     pathval "^1.1.1"
     type-detect "^4.0.5"
 
-chalk@^2.0.0:
+chalk@^2.0.0, chalk@^2.4.2:
   version "2.4.2"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
   integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -1709,6 +1732,26 @@
   resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69"
   integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==
 
+command-line-args@^5.1.1:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e"
+  integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==
+  dependencies:
+    array-back "^3.1.0"
+    find-replace "^3.0.0"
+    lodash.camelcase "^4.3.0"
+    typical "^4.0.0"
+
+command-line-usage@^6.1.0:
+  version "6.1.3"
+  resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957"
+  integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==
+  dependencies:
+    array-back "^4.0.2"
+    chalk "^2.4.2"
+    table-layout "^1.0.2"
+    typical "^5.2.0"
+
 commander@^5.1.0:
   version "5.1.0"
   resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
@@ -1879,7 +1922,7 @@
   dependencies:
     ms "2.0.0"
 
-debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
+debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
   version "4.3.4"
   resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
   integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -1917,6 +1960,11 @@
   dependencies:
     type-detect "^4.0.0"
 
+deep-extend@~0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+  integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
 deep-is@^0.1.3:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
@@ -2508,6 +2556,13 @@
     commander "^5.1.0"
     debug "^4.1.1"
 
+find-replace@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38"
+  integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==
+  dependencies:
+    array-back "^3.0.1"
+
 find-up@5.0.0, find-up@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
@@ -2607,6 +2662,15 @@
     jsonfile "^4.0.0"
     universalify "^0.1.0"
 
+fs-extra@^7.0.0:
+  version "7.0.1"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+  integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+  dependencies:
+    graceful-fs "^4.1.2"
+    jsonfile "^4.0.0"
+    universalify "^0.1.0"
+
 fs-minipass@^1.2.7:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
@@ -2709,6 +2773,18 @@
   dependencies:
     is-glob "^4.0.3"
 
+glob@7.1.7:
+  version "7.1.7"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
+  integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.4"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
 glob@7.2.0:
   version "7.2.0"
   resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
@@ -3323,12 +3399,17 @@
   dependencies:
     p-locate "^5.0.0"
 
+lodash.camelcase@^4.3.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+  integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
 lodash.merge@^4.6.2:
   version "4.6.2"
   resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
   integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
 
-lodash@^4.17.21:
+lodash@^4.17.15, lodash@^4.17.21:
   version "4.17.21"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -3513,7 +3594,7 @@
   dependencies:
     mkdirp "*"
 
-mkdirp@*:
+mkdirp@*, mkdirp@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
   integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
@@ -3938,6 +4019,11 @@
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
   integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
 
+prettier@^2.3.1:
+  version "2.7.1"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
+  integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
+
 process@^0.11.10:
   version "0.11.10"
   resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
@@ -4073,6 +4159,11 @@
   dependencies:
     picomatch "^2.2.1"
 
+reduce-flatten@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27"
+  integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==
+
 regenerator-runtime@^0.13.4:
   version "0.13.10"
   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee"
@@ -4399,6 +4490,11 @@
   resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
   integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
 
+string-format@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b"
+  integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==
+
 string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
   version "4.2.3"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@@ -4490,6 +4586,16 @@
     tar "^4.0.2"
     xhr-request "^1.0.1"
 
+table-layout@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04"
+  integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==
+  dependencies:
+    array-back "^4.0.1"
+    deep-extend "~0.6.0"
+    typical "^5.2.0"
+    wordwrapjs "^4.0.0"
+
 tar@^4.0.2:
   version "4.4.19"
   resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3"
@@ -4638,6 +4744,22 @@
   resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
   integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
 
+typechain@^8.1.0:
+  version "8.1.0"
+  resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.1.0.tgz#fc4902ce596519cb2ccfd012e4ddf92a9945b569"
+  integrity sha512-5jToLgKTjHdI1VKqs/K8BLYy42Sr3o8bV5ojh4MnR9ExHO83cyyUdw+7+vMJCpKXUiVUvARM4qmHTFuyaCMAZQ==
+  dependencies:
+    "@types/prettier" "^2.1.1"
+    debug "^4.3.1"
+    fs-extra "^7.0.0"
+    glob "7.1.7"
+    js-sha3 "^0.8.0"
+    lodash "^4.17.15"
+    mkdirp "^1.0.4"
+    prettier "^2.3.1"
+    ts-command-line-args "^2.2.0"
+    ts-essentials "^7.0.1"
+
 typedarray-to-buffer@^3.1.5:
   version "3.1.5"
   resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
@@ -4650,6 +4772,16 @@
   resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6"
   integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==
 
+typical@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4"
+  integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==
+
+typical@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066"
+  integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==
+
 uglify-js@^3.1.4:
   version "3.17.3"
   resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.3.tgz#f0feedf019c4510f164099e8d7e72ff2d7304377"
@@ -5067,6 +5199,14 @@
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
   integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
 
+wordwrapjs@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f"
+  integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==
+  dependencies:
+    reduce-flatten "^2.0.0"
+    typical "^5.2.0"
+
 workerpool@6.2.1:
   version "6.2.1"
   resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"