diff --git a/build/contracts/BEBadge.json b/build/contracts/BEBadge.json index 787634b..fdbd7af 100644 --- a/build/contracts/BEBadge.json +++ b/build/contracts/BEBadge.json @@ -30590,7 +30590,7 @@ } }, "schemaVersion": "3.4.11", - "updatedAt": "2023-04-11T03:22:29.574Z", + "updatedAt": "2023-04-19T02:14:02.484Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/BEMultiSigWallet.json b/build/contracts/BEMultiSigWallet.json index b8da74d..bcc7467 100644 --- a/build/contracts/BEMultiSigWallet.json +++ b/build/contracts/BEMultiSigWallet.json @@ -33387,7 +33387,7 @@ } }, "schemaVersion": "3.4.11", - "updatedAt": "2023-04-11T03:22:29.589Z", + "updatedAt": "2023-04-19T02:14:02.512Z", "networkType": "ethereum", "devdoc": { "events": { diff --git a/build/contracts/BEUSDT.json b/build/contracts/BEUSDT.json index 3030e3a..608f516 100644 --- a/build/contracts/BEUSDT.json +++ b/build/contracts/BEUSDT.json @@ -16789,7 +16789,7 @@ } }, "schemaVersion": "3.4.11", - "updatedAt": "2023-04-11T03:22:29.581Z", + "updatedAt": "2023-04-19T02:14:02.502Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index 11de70a..205090d 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -3235,7 +3235,7 @@ } }, "schemaVersion": "3.4.11", - "updatedAt": "2023-04-11T03:22:29.594Z", + "updatedAt": "2023-04-19T02:14:02.528Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/NftDistributor.json b/build/contracts/NftDistributor.json index 0208132..b3110f2 100644 --- a/build/contracts/NftDistributor.json +++ b/build/contracts/NftDistributor.json @@ -9,14 +9,9 @@ "type": "address" }, { - "internalType": "address", - "name": "_nftSource", - "type": "address" - }, - { - "internalType": "address", + "internalType": "address[]", "name": "_manageAddress", - "type": "address" + "type": "address[]" } ], "stateMutability": "nonpayable", @@ -139,7 +134,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -152,7 +148,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -165,7 +162,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -184,7 +182,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -208,7 +207,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -227,7 +227,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -269,7 +270,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -282,7 +284,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -301,7 +304,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -325,7 +329,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -363,19 +368,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "source", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -393,7 +385,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -448,7 +441,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -467,18 +461,19 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true } ], - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_nftTarget\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_nftSource\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_manageAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftSIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftTIds\",\"type\":\"uint256[]\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"addNFTData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getMintableCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getMintableNftIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"mintToUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nft\",\"outputs\":[{\"internalType\":\"contract IBEERC721\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nftMinted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerToNFTs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"source\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addNFTData(address,uint256[])\":{\"details\":\"The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user. mintToUser method would check if target user had permission to mint NFTs. Only functions called by an address with the MANAGE_ROLE permission can access this function. The function takes in the address of the user and an array of NFT IDs. It then loops through the array of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.\",\"params\":{\"_nftIds\":\"- An array of NFT IDs being added to the user's NFT data\",\"_user\":\"- The address of the user being updated with new NFT data\"}},\"constructor\":{\"details\":\"Contract constructor. Initializes the contract with the specified addresses and sets the admin and management roles. Parameters: - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE - _nftSource: The address of the source NFT that will check if user has mint permission. - _manageAddress: The address that will have the MANAGE_ROLE assigned.\"},\"getMintableCount(address)\":{\"details\":\"The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted. This is a read-only function, meaning it doesn't modify the state of the blockchain. It takes in the address of the user whose mintable count is being determined, and returns the number of NFTs owned by the user that have not yet been minted.\",\"params\":{\"_user\":\"- The address of the user whose mintable count is being determined\"},\"returns\":{\"_0\":\"count - The number of NFTs owned by the user that have not yet been minted\"}},\"getMintableNftIds(address)\":{\"details\":\"The getMintableNftIds function gets an array of NFT IDs owned by a user that have not yet been minted. This is a read-only function, meaning it doesn't modify the state of the blockchain. It takes in the address of the user whose mintable NFT IDs are being determined, and returns an array of the NFT IDs owned by the user that have not yet been minted.\",\"params\":{\"_user\":\"- The address of the user whose mintable NFT IDs are being determined\"},\"returns\":{\"_0\":\"mintableNftIds - An array of the NFT IDs owned by the user that have not yet been minted\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"mintToUser(address,uint256[])\":{\"details\":\"The mintToUser function mints NFTs to a given user. Only functions called by an address with the MANAGE_ROLE permission can access this function. The function takes an array of nftIds and checks that there are enough mintable NFTs for the user. It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted. Then it emits the Minted event with details of the operation.\",\"params\":{\"_nftIds\":\"- An array of the IDs for the NFTs being minted\",\"_user\":\"- The address of the user receiving the NFTs\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/logic/NftDistributor.sol\":\"NftDistributor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/interfaces/IBEERC721.sol\":{\"keccak256\":\"0x41e372150274c8f64d1b7fcd047067ad2f8ad75742985b7b39bf3a58492a817d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15dd6b75bc85926688f51d606c9581f90a275bbc1ce8acdd01ff991ce47b0414\",\"dweb:/ipfs/Qmennh7yJUU6tpbNYAWVpr8qz3gfqSbji5UrU8ooLg1qw4\"]},\"project:/contracts/logic/NftDistributor.sol\":{\"keccak256\":\"0x552a7834711e25b871a4460d058c732b26e94a2f8e4ae56e06b98027b30952f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d952cd8d657e441889a46ea9a52ce49d8c173dae183e72b532f240f57d25af00\",\"dweb:/ipfs/QmYRS3mj8ijoS5JzN6eYDyzkXT3Vebkiz6GUBeezS51RGc\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b50604051620027d7380380620027d783398181016040528101906200003791906200056d565b620000697fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177580620001eb60201b60201c565b620000bb7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb5570917fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620001eb60201b60201c565b620000fc7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620000f06200024e60201b60201c565b6200025660201b60201c565b6200012e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775306200025660201b60201c565b620001607fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091826200025660201b60201c565b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620005c9565b6000620001fe836200026c60201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b600033905090565b6200026882826200028b60201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b620002a28282620002d360201b62000ddd1760201c565b620002ce8160016000858152602001908152602001600020620003c460201b62000ebd1790919060201c565b505050565b620002e58282620003fc60201b60201c565b620003c057600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003656200024e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620003f4836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200046660201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200047a8383620004e060201b60201c565b620004d5578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620004da565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005358262000508565b9050919050565b620005478162000528565b81146200055357600080fd5b50565b60008151905062000567816200053c565b92915050565b60008060006060848603121562000589576200058862000503565b5b6000620005998682870162000556565b9350506020620005ac8682870162000556565b9250506040620005bf8682870162000556565b9150509250925092565b6121fe80620005d96000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806367e828bf116100ad578063a217fddf11610071578063a217fddf1461032e578063ad0f93ad1461034c578063ca15c8731461037c578063d547741f146103ac578063ffd68f15146103c857610121565b806367e828bf1461027657806375b238fc1461029457806384be00e4146102b25780639010d07c146102ce57806391d14854146102fe57610121565b80632f2ff15d116100f45780632f2ff15d146101e6578063361364331461020257806336568abe1461021e57806347ccca021461023a57806360a4b76a1461025857610121565b806301ffc9a714610126578063032221ad146101565780630431f20514610186578063248a9ca3146101b6575b600080fd5b610140600480360381019061013b919061169f565b6103f8565b60405161014d91906116e7565b60405180910390f35b610170600480360381019061016b9190611760565b610472565b60405161017d9190611855565b60405180910390f35b6101a0600480360381019061019b9190611760565b6105f4565b6040516101ad9190611886565b60405180910390f35b6101d060048036038101906101cb91906118d7565b610706565b6040516101dd9190611913565b60405180910390f35b61020060048036038101906101fb919061192e565b610725565b005b61021c600480360381019061021791906119d3565b61074e565b005b6102386004803603810190610233919061192e565b610ab1565b005b610242610b34565b60405161024f9190611a92565b60405180910390f35b610260610b5a565b60405161026d9190611913565b60405180910390f35b61027e610b7e565b60405161028b9190611abc565b60405180910390f35b61029c610ba4565b6040516102a99190611913565b60405180910390f35b6102cc60048036038101906102c791906119d3565b610bc8565b005b6102e860048036038101906102e39190611b03565b610c9f565b6040516102f59190611abc565b60405180910390f35b6103186004803603810190610313919061192e565b610cce565b60405161032591906116e7565b60405180910390f35b610336610d38565b6040516103439190611913565b60405180910390f35b61036660048036038101906103619190611b43565b610d3f565b6040516103739190611886565b60405180910390f35b610396600480360381019061039191906118d7565b610d70565b6040516103a39190611886565b60405180910390f35b6103c660048036038101906103c1919061192e565b610d94565b005b6103e260048036038101906103dd9190611b83565b610dbd565b6040516103ef91906116e7565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061046b575061046a82610eed565b5b9050919050565b60606000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156104ff57602002820191906000526020600020905b8154815260200190600101908083116104eb575b505050505090506000815167ffffffffffffffff81111561052357610522611bb0565b5b6040519080825280602002602001820160405280156105515781602001602082028036833780820191505090505b5090506000805b83518110156105e857600084828151811061057657610575611bdf565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166105d457808484815181106105b9576105b8611bdf565b5b60200260200101818152505082806105d090611c3d565b9350505b5080806105e090611c3d565b915050610558565b50819350505050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561068057602002820191906000526020600020905b81548152602001906001019080831161066c575b505050505090506000805b82518110156106fb5760008382815181106106a9576106a8611bdf565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166106e75782806106e390611c3d565b9350505b5080806106f390611c3d565b91505061068b565b508092505050919050565b6000806000838152602001908152602001600020600101549050919050565b61072e82610706565b61073f8161073a610f67565b610f6f565b610749838361100c565b505050565b61077f7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709161077a610f67565b610f6f565b610788836105f4565b8282905011156107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c490611ce3565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561085857602002820191906000526020600020905b815481526020019060010190808311610844575b505050505090506000808484905067ffffffffffffffff81111561087f5761087e611bb0565b5b6040519080825280602002602001820160405280156108ad5781602001602082028036833780820191505090505b50905060005b8351811015610a1d5760008482815181106108d1576108d0611bdf565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff16610a0957600087878681811061091557610914611bdf565b5b9050602002013590508184868151811061093257610931611bdf565b5b60200260200101818152505060016003600084815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f198a836040518363ffffffff1660e01b81526004016109c7929190611d03565b600060405180830381600087803b1580156109e157600080fd5b505af11580156109f5573d6000803e3d6000fd5b505050508480610a0490611c3d565b955050505b508080610a1590611c3d565b9150506108b3565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f044ffb6dcd4ec715d7d57b6c88fa43e63f1e156efb2a93d1072314f910286e9d838888604051610aa193929190611d9c565b60405180910390a3505050505050565b610ab9610f67565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90611e47565b60405180910390fd5b610b308282611040565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709181565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610bf97fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091610bf4610f67565b610f6f565b60005b82829050811015610c9957600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838383818110610c5957610c58611bdf565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150558080610c9190611c3d565b915050610bfc565b50505050565b6000610cc6826001600086815260200190815260200160002061107490919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b60026020528160005260406000208181548110610d5b57600080fd5b90600052602060002001600091509150505481565b6000610d8d6001600084815260200190815260200160002061108e565b9050919050565b610d9d82610706565b610dae81610da9610f67565b610f6f565b610db88383611040565b505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610de78282610cce565b610eb957600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e5e610f67565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000610ee5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6110a3565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f605750610f5f82611113565b5b9050919050565b600033905090565b610f798282610cce565b61100857610f9e8173ffffffffffffffffffffffffffffffffffffffff16601461117d565b610fac8360001c602061117d565b604051602001610fbd929190611f79565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff9190611ffd565b60405180910390fd5b5050565b6110168282610ddd565b61103b8160016000858152602001908152602001600020610ebd90919063ffffffff16565b505050565b61104a82826113b9565b61106f816001600085815260200190815260200160002061149a90919063ffffffff16565b505050565b600061108383600001836114ca565b60001c905092915050565b600061109c826000016114f5565b9050919050565b60006110af8383611506565b61110857826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061110d565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060006002836002611190919061201f565b61119a9190612079565b67ffffffffffffffff8111156111b3576111b2611bb0565b5b6040519080825280601f01601f1916602001820160405280156111e55781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061121d5761121c611bdf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061128157611280611bdf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026112c1919061201f565b6112cb9190612079565b90505b600181111561136b577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061130d5761130c611bdf565b5b1a60f81b82828151811061132457611323611bdf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611364906120cf565b90506112ce565b50600084146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690612145565b60405180910390fd5b8091505092915050565b6113c38282610cce565b1561149657600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061143b610f67565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006114c2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611529565b905092915050565b60008260000182815481106114e2576114e1611bdf565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461163157600060018261155b9190612165565b90506000600186600001805490506115739190612165565b90508181146115e257600086600001828154811061159457611593611bdf565b5b90600052602060002001549050808760000184815481106115b8576115b7611bdf565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806115f6576115f5612199565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611637565b60009150505b92915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61167c81611647565b811461168757600080fd5b50565b60008135905061169981611673565b92915050565b6000602082840312156116b5576116b461163d565b5b60006116c38482850161168a565b91505092915050565b60008115159050919050565b6116e1816116cc565b82525050565b60006020820190506116fc60008301846116d8565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061172d82611702565b9050919050565b61173d81611722565b811461174857600080fd5b50565b60008135905061175a81611734565b92915050565b6000602082840312156117765761177561163d565b5b60006117848482850161174b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b6117cc816117b9565b82525050565b60006117de83836117c3565b60208301905092915050565b6000602082019050919050565b60006118028261178d565b61180c8185611798565b9350611817836117a9565b8060005b8381101561184857815161182f88826117d2565b975061183a836117ea565b92505060018101905061181b565b5085935050505092915050565b6000602082019050818103600083015261186f81846117f7565b905092915050565b611880816117b9565b82525050565b600060208201905061189b6000830184611877565b92915050565b6000819050919050565b6118b4816118a1565b81146118bf57600080fd5b50565b6000813590506118d1816118ab565b92915050565b6000602082840312156118ed576118ec61163d565b5b60006118fb848285016118c2565b91505092915050565b61190d816118a1565b82525050565b60006020820190506119286000830184611904565b92915050565b600080604083850312156119455761194461163d565b5b6000611953858286016118c2565b92505060206119648582860161174b565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119935761199261196e565b5b8235905067ffffffffffffffff8111156119b0576119af611973565b5b6020830191508360208202830111156119cc576119cb611978565b5b9250929050565b6000806000604084860312156119ec576119eb61163d565b5b60006119fa8682870161174b565b935050602084013567ffffffffffffffff811115611a1b57611a1a611642565b5b611a278682870161197d565b92509250509250925092565b6000819050919050565b6000611a58611a53611a4e84611702565b611a33565b611702565b9050919050565b6000611a6a82611a3d565b9050919050565b6000611a7c82611a5f565b9050919050565b611a8c81611a71565b82525050565b6000602082019050611aa76000830184611a83565b92915050565b611ab681611722565b82525050565b6000602082019050611ad16000830184611aad565b92915050565b611ae0816117b9565b8114611aeb57600080fd5b50565b600081359050611afd81611ad7565b92915050565b60008060408385031215611b1a57611b1961163d565b5b6000611b28858286016118c2565b9250506020611b3985828601611aee565b9150509250929050565b60008060408385031215611b5a57611b5961163d565b5b6000611b688582860161174b565b9250506020611b7985828601611aee565b9150509250929050565b600060208284031215611b9957611b9861163d565b5b6000611ba784828501611aee565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c48826117b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c7b57611c7a611c0e565b5b600182019050919050565b600082825260208201905092915050565b7f4d696e7461626c6520636f756e74206973206e6f7420656e6f75676800000000600082015250565b6000611ccd601c83611c86565b9150611cd882611c97565b602082019050919050565b60006020820190508181036000830152611cfc81611cc0565b9050919050565b6000604082019050611d186000830185611aad565b611d256020830184611877565b9392505050565b600080fd5b82818337600083830152505050565b6000611d4c8385611798565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611d7f57611d7e611d2c565b5b602083029250611d90838584611d31565b82840190509392505050565b60006040820190508181036000830152611db681866117f7565b90508181036020830152611dcb818486611d40565b9050949350505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611e31602f83611c86565b9150611e3c82611dd5565b604082019050919050565b60006020820190508181036000830152611e6081611e24565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000611ea8601783611e67565b9150611eb382611e72565b601782019050919050565b600081519050919050565b60005b83811015611ee7578082015181840152602081019050611ecc565b83811115611ef6576000848401525b50505050565b6000611f0782611ebe565b611f118185611e67565b9350611f21818560208601611ec9565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000611f63601183611e67565b9150611f6e82611f2d565b601182019050919050565b6000611f8482611e9b565b9150611f908285611efc565b9150611f9b82611f56565b9150611fa78284611efc565b91508190509392505050565b6000601f19601f8301169050919050565b6000611fcf82611ebe565b611fd98185611c86565b9350611fe9818560208601611ec9565b611ff281611fb3565b840191505092915050565b600060208201905081810360008301526120178184611fc4565b905092915050565b600061202a826117b9565b9150612035836117b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561206e5761206d611c0e565b5b828202905092915050565b6000612084826117b9565b915061208f836117b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156120c4576120c3611c0e565b5b828201905092915050565b60006120da826117b9565b915060008214156120ee576120ed611c0e565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061212f602083611c86565b915061213a826120f9565b602082019050919050565b6000602082019050818103600083015261215e81612122565b9050919050565b6000612170826117b9565b915061217b836117b9565b92508282101561218e5761218d611c0e565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212206b6818bc4c19638f3c745f167d270038cc262caa02e00c0ee465aca521d2ccf464736f6c634300080a0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c806367e828bf116100ad578063a217fddf11610071578063a217fddf1461032e578063ad0f93ad1461034c578063ca15c8731461037c578063d547741f146103ac578063ffd68f15146103c857610121565b806367e828bf1461027657806375b238fc1461029457806384be00e4146102b25780639010d07c146102ce57806391d14854146102fe57610121565b80632f2ff15d116100f45780632f2ff15d146101e6578063361364331461020257806336568abe1461021e57806347ccca021461023a57806360a4b76a1461025857610121565b806301ffc9a714610126578063032221ad146101565780630431f20514610186578063248a9ca3146101b6575b600080fd5b610140600480360381019061013b919061169f565b6103f8565b60405161014d91906116e7565b60405180910390f35b610170600480360381019061016b9190611760565b610472565b60405161017d9190611855565b60405180910390f35b6101a0600480360381019061019b9190611760565b6105f4565b6040516101ad9190611886565b60405180910390f35b6101d060048036038101906101cb91906118d7565b610706565b6040516101dd9190611913565b60405180910390f35b61020060048036038101906101fb919061192e565b610725565b005b61021c600480360381019061021791906119d3565b61074e565b005b6102386004803603810190610233919061192e565b610ab1565b005b610242610b34565b60405161024f9190611a92565b60405180910390f35b610260610b5a565b60405161026d9190611913565b60405180910390f35b61027e610b7e565b60405161028b9190611abc565b60405180910390f35b61029c610ba4565b6040516102a99190611913565b60405180910390f35b6102cc60048036038101906102c791906119d3565b610bc8565b005b6102e860048036038101906102e39190611b03565b610c9f565b6040516102f59190611abc565b60405180910390f35b6103186004803603810190610313919061192e565b610cce565b60405161032591906116e7565b60405180910390f35b610336610d38565b6040516103439190611913565b60405180910390f35b61036660048036038101906103619190611b43565b610d3f565b6040516103739190611886565b60405180910390f35b610396600480360381019061039191906118d7565b610d70565b6040516103a39190611886565b60405180910390f35b6103c660048036038101906103c1919061192e565b610d94565b005b6103e260048036038101906103dd9190611b83565b610dbd565b6040516103ef91906116e7565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061046b575061046a82610eed565b5b9050919050565b60606000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156104ff57602002820191906000526020600020905b8154815260200190600101908083116104eb575b505050505090506000815167ffffffffffffffff81111561052357610522611bb0565b5b6040519080825280602002602001820160405280156105515781602001602082028036833780820191505090505b5090506000805b83518110156105e857600084828151811061057657610575611bdf565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166105d457808484815181106105b9576105b8611bdf565b5b60200260200101818152505082806105d090611c3d565b9350505b5080806105e090611c3d565b915050610558565b50819350505050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561068057602002820191906000526020600020905b81548152602001906001019080831161066c575b505050505090506000805b82518110156106fb5760008382815181106106a9576106a8611bdf565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166106e75782806106e390611c3d565b9350505b5080806106f390611c3d565b91505061068b565b508092505050919050565b6000806000838152602001908152602001600020600101549050919050565b61072e82610706565b61073f8161073a610f67565b610f6f565b610749838361100c565b505050565b61077f7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709161077a610f67565b610f6f565b610788836105f4565b8282905011156107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c490611ce3565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561085857602002820191906000526020600020905b815481526020019060010190808311610844575b505050505090506000808484905067ffffffffffffffff81111561087f5761087e611bb0565b5b6040519080825280602002602001820160405280156108ad5781602001602082028036833780820191505090505b50905060005b8351811015610a1d5760008482815181106108d1576108d0611bdf565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff16610a0957600087878681811061091557610914611bdf565b5b9050602002013590508184868151811061093257610931611bdf565b5b60200260200101818152505060016003600084815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f198a836040518363ffffffff1660e01b81526004016109c7929190611d03565b600060405180830381600087803b1580156109e157600080fd5b505af11580156109f5573d6000803e3d6000fd5b505050508480610a0490611c3d565b955050505b508080610a1590611c3d565b9150506108b3565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f044ffb6dcd4ec715d7d57b6c88fa43e63f1e156efb2a93d1072314f910286e9d838888604051610aa193929190611d9c565b60405180910390a3505050505050565b610ab9610f67565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90611e47565b60405180910390fd5b610b308282611040565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709181565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610bf97fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091610bf4610f67565b610f6f565b60005b82829050811015610c9957600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838383818110610c5957610c58611bdf565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150558080610c9190611c3d565b915050610bfc565b50505050565b6000610cc6826001600086815260200190815260200160002061107490919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b60026020528160005260406000208181548110610d5b57600080fd5b90600052602060002001600091509150505481565b6000610d8d6001600084815260200190815260200160002061108e565b9050919050565b610d9d82610706565b610dae81610da9610f67565b610f6f565b610db88383611040565b505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610de78282610cce565b610eb957600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e5e610f67565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000610ee5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6110a3565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f605750610f5f82611113565b5b9050919050565b600033905090565b610f798282610cce565b61100857610f9e8173ffffffffffffffffffffffffffffffffffffffff16601461117d565b610fac8360001c602061117d565b604051602001610fbd929190611f79565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff9190611ffd565b60405180910390fd5b5050565b6110168282610ddd565b61103b8160016000858152602001908152602001600020610ebd90919063ffffffff16565b505050565b61104a82826113b9565b61106f816001600085815260200190815260200160002061149a90919063ffffffff16565b505050565b600061108383600001836114ca565b60001c905092915050565b600061109c826000016114f5565b9050919050565b60006110af8383611506565b61110857826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061110d565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060006002836002611190919061201f565b61119a9190612079565b67ffffffffffffffff8111156111b3576111b2611bb0565b5b6040519080825280601f01601f1916602001820160405280156111e55781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061121d5761121c611bdf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061128157611280611bdf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026112c1919061201f565b6112cb9190612079565b90505b600181111561136b577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061130d5761130c611bdf565b5b1a60f81b82828151811061132457611323611bdf565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611364906120cf565b90506112ce565b50600084146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690612145565b60405180910390fd5b8091505092915050565b6113c38282610cce565b1561149657600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061143b610f67565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006114c2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611529565b905092915050565b60008260000182815481106114e2576114e1611bdf565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461163157600060018261155b9190612165565b90506000600186600001805490506115739190612165565b90508181146115e257600086600001828154811061159457611593611bdf565b5b90600052602060002001549050808760000184815481106115b8576115b7611bdf565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806115f6576115f5612199565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611637565b60009150505b92915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61167c81611647565b811461168757600080fd5b50565b60008135905061169981611673565b92915050565b6000602082840312156116b5576116b461163d565b5b60006116c38482850161168a565b91505092915050565b60008115159050919050565b6116e1816116cc565b82525050565b60006020820190506116fc60008301846116d8565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061172d82611702565b9050919050565b61173d81611722565b811461174857600080fd5b50565b60008135905061175a81611734565b92915050565b6000602082840312156117765761177561163d565b5b60006117848482850161174b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b6117cc816117b9565b82525050565b60006117de83836117c3565b60208301905092915050565b6000602082019050919050565b60006118028261178d565b61180c8185611798565b9350611817836117a9565b8060005b8381101561184857815161182f88826117d2565b975061183a836117ea565b92505060018101905061181b565b5085935050505092915050565b6000602082019050818103600083015261186f81846117f7565b905092915050565b611880816117b9565b82525050565b600060208201905061189b6000830184611877565b92915050565b6000819050919050565b6118b4816118a1565b81146118bf57600080fd5b50565b6000813590506118d1816118ab565b92915050565b6000602082840312156118ed576118ec61163d565b5b60006118fb848285016118c2565b91505092915050565b61190d816118a1565b82525050565b60006020820190506119286000830184611904565b92915050565b600080604083850312156119455761194461163d565b5b6000611953858286016118c2565b92505060206119648582860161174b565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119935761199261196e565b5b8235905067ffffffffffffffff8111156119b0576119af611973565b5b6020830191508360208202830111156119cc576119cb611978565b5b9250929050565b6000806000604084860312156119ec576119eb61163d565b5b60006119fa8682870161174b565b935050602084013567ffffffffffffffff811115611a1b57611a1a611642565b5b611a278682870161197d565b92509250509250925092565b6000819050919050565b6000611a58611a53611a4e84611702565b611a33565b611702565b9050919050565b6000611a6a82611a3d565b9050919050565b6000611a7c82611a5f565b9050919050565b611a8c81611a71565b82525050565b6000602082019050611aa76000830184611a83565b92915050565b611ab681611722565b82525050565b6000602082019050611ad16000830184611aad565b92915050565b611ae0816117b9565b8114611aeb57600080fd5b50565b600081359050611afd81611ad7565b92915050565b60008060408385031215611b1a57611b1961163d565b5b6000611b28858286016118c2565b9250506020611b3985828601611aee565b9150509250929050565b60008060408385031215611b5a57611b5961163d565b5b6000611b688582860161174b565b9250506020611b7985828601611aee565b9150509250929050565b600060208284031215611b9957611b9861163d565b5b6000611ba784828501611aee565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c48826117b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c7b57611c7a611c0e565b5b600182019050919050565b600082825260208201905092915050565b7f4d696e7461626c6520636f756e74206973206e6f7420656e6f75676800000000600082015250565b6000611ccd601c83611c86565b9150611cd882611c97565b602082019050919050565b60006020820190508181036000830152611cfc81611cc0565b9050919050565b6000604082019050611d186000830185611aad565b611d256020830184611877565b9392505050565b600080fd5b82818337600083830152505050565b6000611d4c8385611798565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611d7f57611d7e611d2c565b5b602083029250611d90838584611d31565b82840190509392505050565b60006040820190508181036000830152611db681866117f7565b90508181036020830152611dcb818486611d40565b9050949350505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611e31602f83611c86565b9150611e3c82611dd5565b604082019050919050565b60006020820190508181036000830152611e6081611e24565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000611ea8601783611e67565b9150611eb382611e72565b601782019050919050565b600081519050919050565b60005b83811015611ee7578082015181840152602081019050611ecc565b83811115611ef6576000848401525b50505050565b6000611f0782611ebe565b611f118185611e67565b9350611f21818560208601611ec9565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000611f63601183611e67565b9150611f6e82611f2d565b601182019050919050565b6000611f8482611e9b565b9150611f908285611efc565b9150611f9b82611f56565b9150611fa78284611efc565b91508190509392505050565b6000601f19601f8301169050919050565b6000611fcf82611ebe565b611fd98185611c86565b9350611fe9818560208601611ec9565b611ff281611fb3565b840191505092915050565b600060208201905081810360008301526120178184611fc4565b905092915050565b600061202a826117b9565b9150612035836117b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561206e5761206d611c0e565b5b828202905092915050565b6000612084826117b9565b915061208f836117b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156120c4576120c3611c0e565b5b828201905092915050565b60006120da826117b9565b915060008214156120ee576120ed611c0e565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061212f602083611c86565b915061213a826120f9565b602082019050919050565b6000602082019050818103600083015261215e81612122565b9050919050565b6000612170826117b9565b915061217b836117b9565b92508282101561218e5761218d611c0e565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212206b6818bc4c19638f3c745f167d270038cc262caa02e00c0ee465aca521d2ccf464736f6c634300080a0033", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_nftTarget\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_manageAddress\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftSIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftTIds\",\"type\":\"uint256[]\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"addNFTData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getMintableCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getMintableNftIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"mintToUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nft\",\"outputs\":[{\"internalType\":\"contract IBEERC721\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nftMinted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerToNFTs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"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\":{\"kind\":\"dev\",\"methods\":{\"addNFTData(address,uint256[])\":{\"details\":\"The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user. mintToUser method would check if target user had permission to mint NFTs. Only functions called by an address with the MANAGE_ROLE permission can access this function. The function takes in the address of the user and an array of NFT IDs. It then loops through the array of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.\",\"params\":{\"_nftIds\":\"- An array of NFT IDs being added to the user's NFT data\",\"_user\":\"- The address of the user being updated with new NFT data\"}},\"constructor\":{\"details\":\"Contract constructor. Initializes the contract with the specified addresses and sets the admin and management roles. Parameters: - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE - _nftSource: The address of the source NFT that will check if user has mint permission. - _manageAddress: The address that will have the MANAGE_ROLE assigned.\"},\"getMintableCount(address)\":{\"details\":\"The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted. This is a read-only function, meaning it doesn't modify the state of the blockchain. It takes in the address of the user whose mintable count is being determined, and returns the number of NFTs owned by the user that have not yet been minted.\",\"params\":{\"_user\":\"- The address of the user whose mintable count is being determined\"},\"returns\":{\"_0\":\"count - The number of NFTs owned by the user that have not yet been minted\"}},\"getMintableNftIds(address)\":{\"details\":\"The getMintableNftIds function gets an array of NFT IDs owned by a user that have not yet been minted. This is a read-only function, meaning it doesn't modify the state of the blockchain. It takes in the address of the user whose mintable NFT IDs are being determined, and returns an array of the NFT IDs owned by the user that have not yet been minted.\",\"params\":{\"_user\":\"- The address of the user whose mintable NFT IDs are being determined\"},\"returns\":{\"_0\":\"mintableNftIds - An array of the NFT IDs owned by the user that have not yet been minted\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"mintToUser(address,uint256[])\":{\"details\":\"The mintToUser function mints NFTs to a given user. Only functions called by an address with the MANAGE_ROLE permission can access this function. The function takes an array of nftIds and checks that there are enough mintable NFTs for the user. It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted. Then it emits the Minted event with details of the operation.\",\"params\":{\"_nftIds\":\"- An array of the IDs for the NFTs being minted\",\"_user\":\"- The address of the user receiving the NFTs\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/logic/NftDistributor.sol\":\"NftDistributor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/interfaces/IBEERC721.sol\":{\"keccak256\":\"0x41e372150274c8f64d1b7fcd047067ad2f8ad75742985b7b39bf3a58492a817d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15dd6b75bc85926688f51d606c9581f90a275bbc1ce8acdd01ff991ce47b0414\",\"dweb:/ipfs/Qmennh7yJUU6tpbNYAWVpr8qz3gfqSbji5UrU8ooLg1qw4\"]},\"project:/contracts/logic/NftDistributor.sol\":{\"keccak256\":\"0x969da62719d859e1b47a34d2689c71c6a1c9106b1a2f72f92299aae2402c586c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c779abae6a2209025b3e61769ea898461717615b10611cc9e86b1b7d9a0a222e\",\"dweb:/ipfs/QmR1PUnxWKr6jjWYKPiVtmB8zrgFZCAagDP3ns6AzHfdUE\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620029c9380380620029c98339818101604052810190620000379190620006ee565b620000697fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177580620001e860201b60201c565b620000bb7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb5570917fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620001e860201b60201c565b620000fc7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620000f06200024b60201b60201c565b6200025360201b60201c565b6200012e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775306200025360201b60201c565b60005b81518110156200019e576200018a7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709183838151811062000176576200017562000754565b5b60200260200101516200025360201b60201c565b806200019690620007bc565b905062000131565b5081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200080a565b6000620001fb836200026960201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b600033905090565b6200026582826200028860201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b6200029f8282620002d060201b62000d8e1760201c565b620002cb8160016000858152602001908152602001600020620003c160201b62000e6e1790919060201c565b505050565b620002e28282620003f960201b60201c565b620003bd57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003626200024b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620003f1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200046360201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000620004778383620004dd60201b60201c565b620004d2578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620004d7565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005418262000514565b9050919050565b620005538162000534565b81146200055f57600080fd5b50565b600081519050620005738162000548565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620005c9826200057e565b810181811067ffffffffffffffff82111715620005eb57620005ea6200058f565b5b80604052505050565b60006200060062000500565b90506200060e8282620005be565b919050565b600067ffffffffffffffff8211156200063157620006306200058f565b5b602082029050602081019050919050565b600080fd5b60006200065e620006588462000613565b620005f4565b9050808382526020820190506020840283018581111562000684576200068362000642565b5b835b81811015620006b157806200069c888262000562565b84526020840193505060208101905062000686565b5050509392505050565b600082601f830112620006d357620006d262000579565b5b8151620006e584826020860162000647565b91505092915050565b600080604083850312156200070857620007076200050a565b5b6000620007188582860162000562565b925050602083015167ffffffffffffffff8111156200073c576200073b6200050f565b5b6200074a85828601620006bb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000620007c982620007b2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620007ff57620007fe62000783565b5b600182019050919050565b6121af806200081a6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806375b238fc116100a2578063a217fddf11610071578063a217fddf14610305578063ad0f93ad14610323578063ca15c87314610353578063d547741f14610383578063ffd68f151461039f57610116565b806375b238fc1461026b57806384be00e4146102895780639010d07c146102a557806391d14854146102d557610116565b80632f2ff15d116100e95780632f2ff15d146101db57806336136433146101f757806336568abe1461021357806347ccca021461022f57806360a4b76a1461024d57610116565b806301ffc9a71461011b578063032221ad1461014b5780630431f2051461017b578063248a9ca3146101ab575b600080fd5b61013560048036038101906101309190611650565b6103cf565b6040516101429190611698565b60405180910390f35b61016560048036038101906101609190611711565b610449565b6040516101729190611806565b60405180910390f35b61019560048036038101906101909190611711565b6105cb565b6040516101a29190611837565b60405180910390f35b6101c560048036038101906101c09190611888565b6106dd565b6040516101d291906118c4565b60405180910390f35b6101f560048036038101906101f091906118df565b6106fc565b005b610211600480360381019061020c9190611984565b610725565b005b61022d600480360381019061022891906118df565b610a88565b005b610237610b0b565b6040516102449190611a43565b60405180910390f35b610255610b31565b60405161026291906118c4565b60405180910390f35b610273610b55565b60405161028091906118c4565b60405180910390f35b6102a3600480360381019061029e9190611984565b610b79565b005b6102bf60048036038101906102ba9190611a8a565b610c50565b6040516102cc9190611ad9565b60405180910390f35b6102ef60048036038101906102ea91906118df565b610c7f565b6040516102fc9190611698565b60405180910390f35b61030d610ce9565b60405161031a91906118c4565b60405180910390f35b61033d60048036038101906103389190611af4565b610cf0565b60405161034a9190611837565b60405180910390f35b61036d60048036038101906103689190611888565b610d21565b60405161037a9190611837565b60405180910390f35b61039d600480360381019061039891906118df565b610d45565b005b6103b960048036038101906103b49190611b34565b610d6e565b6040516103c69190611698565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610442575061044182610e9e565b5b9050919050565b60606000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156104d657602002820191906000526020600020905b8154815260200190600101908083116104c2575b505050505090506000815167ffffffffffffffff8111156104fa576104f9611b61565b5b6040519080825280602002602001820160405280156105285781602001602082028036833780820191505090505b5090506000805b83518110156105bf57600084828151811061054d5761054c611b90565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166105ab57808484815181106105905761058f611b90565b5b60200260200101818152505082806105a790611bee565b9350505b5080806105b790611bee565b91505061052f565b50819350505050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561065757602002820191906000526020600020905b815481526020019060010190808311610643575b505050505090506000805b82518110156106d25760008382815181106106805761067f611b90565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166106be5782806106ba90611bee565b9350505b5080806106ca90611bee565b915050610662565b508092505050919050565b6000806000838152602001908152602001600020600101549050919050565b610705826106dd565b61071681610711610f18565b610f20565b6107208383610fbd565b505050565b6107567fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091610751610f18565b610f20565b61075f836105cb565b8282905011156107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90611c94565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561082f57602002820191906000526020600020905b81548152602001906001019080831161081b575b505050505090506000808484905067ffffffffffffffff81111561085657610855611b61565b5b6040519080825280602002602001820160405280156108845781602001602082028036833780820191505090505b50905060005b83518110156109f45760008482815181106108a8576108a7611b90565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166109e05760008787868181106108ec576108eb611b90565b5b9050602002013590508184868151811061090957610908611b90565b5b60200260200101818152505060016003600084815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f198a836040518363ffffffff1660e01b815260040161099e929190611cb4565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b5050505084806109db90611bee565b955050505b5080806109ec90611bee565b91505061088a565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f044ffb6dcd4ec715d7d57b6c88fa43e63f1e156efb2a93d1072314f910286e9d838888604051610a7893929190611d4d565b60405180910390a3505050505050565b610a90610f18565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490611df8565b60405180910390fd5b610b078282610ff1565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709181565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610baa7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091610ba5610f18565b610f20565b60005b82829050811015610c4a57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838383818110610c0a57610c09611b90565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150558080610c4290611bee565b915050610bad565b50505050565b6000610c77826001600086815260200190815260200160002061102590919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b60026020528160005260406000208181548110610d0c57600080fd5b90600052602060002001600091509150505481565b6000610d3e6001600084815260200190815260200160002061103f565b9050919050565b610d4e826106dd565b610d5f81610d5a610f18565b610f20565b610d698383610ff1565b505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610d988282610c7f565b610e6a57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e0f610f18565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000610e96836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611054565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f115750610f10826110c4565b5b9050919050565b600033905090565b610f2a8282610c7f565b610fb957610f4f8173ffffffffffffffffffffffffffffffffffffffff16601461112e565b610f5d8360001c602061112e565b604051602001610f6e929190611f2a565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb09190611fae565b60405180910390fd5b5050565b610fc78282610d8e565b610fec8160016000858152602001908152602001600020610e6e90919063ffffffff16565b505050565b610ffb828261136a565b611020816001600085815260200190815260200160002061144b90919063ffffffff16565b505050565b6000611034836000018361147b565b60001c905092915050565b600061104d826000016114a6565b9050919050565b600061106083836114b7565b6110b95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506110be565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600060028360026111419190611fd0565b61114b919061202a565b67ffffffffffffffff81111561116457611163611b61565b5b6040519080825280601f01601f1916602001820160405280156111965781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106111ce576111cd611b90565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061123257611231611b90565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026112729190611fd0565b61127c919061202a565b90505b600181111561131c577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106112be576112bd611b90565b5b1a60f81b8282815181106112d5576112d4611b90565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061131590612080565b905061127f565b5060008414611360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611357906120f6565b60405180910390fd5b8091505092915050565b6113748282610c7f565b1561144757600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113ec610f18565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611473836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6114da565b905092915050565b600082600001828154811061149357611492611b90565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b600080836001016000848152602001908152602001600020549050600081146115e257600060018261150c9190612116565b90506000600186600001805490506115249190612116565b905081811461159357600086600001828154811061154557611544611b90565b5b906000526020600020015490508087600001848154811061156957611568611b90565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806115a7576115a661214a565b5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506115e8565b60009150505b92915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61162d816115f8565b811461163857600080fd5b50565b60008135905061164a81611624565b92915050565b600060208284031215611666576116656115ee565b5b60006116748482850161163b565b91505092915050565b60008115159050919050565b6116928161167d565b82525050565b60006020820190506116ad6000830184611689565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116de826116b3565b9050919050565b6116ee816116d3565b81146116f957600080fd5b50565b60008135905061170b816116e5565b92915050565b600060208284031215611727576117266115ee565b5b6000611735848285016116fc565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61177d8161176a565b82525050565b600061178f8383611774565b60208301905092915050565b6000602082019050919050565b60006117b38261173e565b6117bd8185611749565b93506117c88361175a565b8060005b838110156117f95781516117e08882611783565b97506117eb8361179b565b9250506001810190506117cc565b5085935050505092915050565b6000602082019050818103600083015261182081846117a8565b905092915050565b6118318161176a565b82525050565b600060208201905061184c6000830184611828565b92915050565b6000819050919050565b61186581611852565b811461187057600080fd5b50565b6000813590506118828161185c565b92915050565b60006020828403121561189e5761189d6115ee565b5b60006118ac84828501611873565b91505092915050565b6118be81611852565b82525050565b60006020820190506118d960008301846118b5565b92915050565b600080604083850312156118f6576118f56115ee565b5b600061190485828601611873565b9250506020611915858286016116fc565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119445761194361191f565b5b8235905067ffffffffffffffff81111561196157611960611924565b5b60208301915083602082028301111561197d5761197c611929565b5b9250929050565b60008060006040848603121561199d5761199c6115ee565b5b60006119ab868287016116fc565b935050602084013567ffffffffffffffff8111156119cc576119cb6115f3565b5b6119d88682870161192e565b92509250509250925092565b6000819050919050565b6000611a09611a046119ff846116b3565b6119e4565b6116b3565b9050919050565b6000611a1b826119ee565b9050919050565b6000611a2d82611a10565b9050919050565b611a3d81611a22565b82525050565b6000602082019050611a586000830184611a34565b92915050565b611a678161176a565b8114611a7257600080fd5b50565b600081359050611a8481611a5e565b92915050565b60008060408385031215611aa157611aa06115ee565b5b6000611aaf85828601611873565b9250506020611ac085828601611a75565b9150509250929050565b611ad3816116d3565b82525050565b6000602082019050611aee6000830184611aca565b92915050565b60008060408385031215611b0b57611b0a6115ee565b5b6000611b19858286016116fc565b9250506020611b2a85828601611a75565b9150509250929050565b600060208284031215611b4a57611b496115ee565b5b6000611b5884828501611a75565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bf98261176a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c2c57611c2b611bbf565b5b600182019050919050565b600082825260208201905092915050565b7f4d696e7461626c6520636f756e74206973206e6f7420656e6f75676800000000600082015250565b6000611c7e601c83611c37565b9150611c8982611c48565b602082019050919050565b60006020820190508181036000830152611cad81611c71565b9050919050565b6000604082019050611cc96000830185611aca565b611cd66020830184611828565b9392505050565b600080fd5b82818337600083830152505050565b6000611cfd8385611749565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611d3057611d2f611cdd565b5b602083029250611d41838584611ce2565b82840190509392505050565b60006040820190508181036000830152611d6781866117a8565b90508181036020830152611d7c818486611cf1565b9050949350505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611de2602f83611c37565b9150611ded82611d86565b604082019050919050565b60006020820190508181036000830152611e1181611dd5565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000611e59601783611e18565b9150611e6482611e23565b601782019050919050565b600081519050919050565b60005b83811015611e98578082015181840152602081019050611e7d565b83811115611ea7576000848401525b50505050565b6000611eb882611e6f565b611ec28185611e18565b9350611ed2818560208601611e7a565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000611f14601183611e18565b9150611f1f82611ede565b601182019050919050565b6000611f3582611e4c565b9150611f418285611ead565b9150611f4c82611f07565b9150611f588284611ead565b91508190509392505050565b6000601f19601f8301169050919050565b6000611f8082611e6f565b611f8a8185611c37565b9350611f9a818560208601611e7a565b611fa381611f64565b840191505092915050565b60006020820190508181036000830152611fc88184611f75565b905092915050565b6000611fdb8261176a565b9150611fe68361176a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561201f5761201e611bbf565b5b828202905092915050565b60006120358261176a565b91506120408361176a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561207557612074611bbf565b5b828201905092915050565b600061208b8261176a565b9150600082141561209f5761209e611bbf565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006120e0602083611c37565b91506120eb826120aa565b602082019050919050565b6000602082019050818103600083015261210f816120d3565b9050919050565b60006121218261176a565b915061212c8361176a565b92508282101561213f5761213e611bbf565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122084e507c9b06902091b745af1a5c2b1f820d8094b3bbd15c708fea8db99ea64ce64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806375b238fc116100a2578063a217fddf11610071578063a217fddf14610305578063ad0f93ad14610323578063ca15c87314610353578063d547741f14610383578063ffd68f151461039f57610116565b806375b238fc1461026b57806384be00e4146102895780639010d07c146102a557806391d14854146102d557610116565b80632f2ff15d116100e95780632f2ff15d146101db57806336136433146101f757806336568abe1461021357806347ccca021461022f57806360a4b76a1461024d57610116565b806301ffc9a71461011b578063032221ad1461014b5780630431f2051461017b578063248a9ca3146101ab575b600080fd5b61013560048036038101906101309190611650565b6103cf565b6040516101429190611698565b60405180910390f35b61016560048036038101906101609190611711565b610449565b6040516101729190611806565b60405180910390f35b61019560048036038101906101909190611711565b6105cb565b6040516101a29190611837565b60405180910390f35b6101c560048036038101906101c09190611888565b6106dd565b6040516101d291906118c4565b60405180910390f35b6101f560048036038101906101f091906118df565b6106fc565b005b610211600480360381019061020c9190611984565b610725565b005b61022d600480360381019061022891906118df565b610a88565b005b610237610b0b565b6040516102449190611a43565b60405180910390f35b610255610b31565b60405161026291906118c4565b60405180910390f35b610273610b55565b60405161028091906118c4565b60405180910390f35b6102a3600480360381019061029e9190611984565b610b79565b005b6102bf60048036038101906102ba9190611a8a565b610c50565b6040516102cc9190611ad9565b60405180910390f35b6102ef60048036038101906102ea91906118df565b610c7f565b6040516102fc9190611698565b60405180910390f35b61030d610ce9565b60405161031a91906118c4565b60405180910390f35b61033d60048036038101906103389190611af4565b610cf0565b60405161034a9190611837565b60405180910390f35b61036d60048036038101906103689190611888565b610d21565b60405161037a9190611837565b60405180910390f35b61039d600480360381019061039891906118df565b610d45565b005b6103b960048036038101906103b49190611b34565b610d6e565b6040516103c69190611698565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610442575061044182610e9e565b5b9050919050565b60606000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156104d657602002820191906000526020600020905b8154815260200190600101908083116104c2575b505050505090506000815167ffffffffffffffff8111156104fa576104f9611b61565b5b6040519080825280602002602001820160405280156105285781602001602082028036833780820191505090505b5090506000805b83518110156105bf57600084828151811061054d5761054c611b90565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166105ab57808484815181106105905761058f611b90565b5b60200260200101818152505082806105a790611bee565b9350505b5080806105b790611bee565b91505061052f565b50819350505050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561065757602002820191906000526020600020905b815481526020019060010190808311610643575b505050505090506000805b82518110156106d25760008382815181106106805761067f611b90565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166106be5782806106ba90611bee565b9350505b5080806106ca90611bee565b915050610662565b508092505050919050565b6000806000838152602001908152602001600020600101549050919050565b610705826106dd565b61071681610711610f18565b610f20565b6107208383610fbd565b505050565b6107567fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091610751610f18565b610f20565b61075f836105cb565b8282905011156107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90611c94565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561082f57602002820191906000526020600020905b81548152602001906001019080831161081b575b505050505090506000808484905067ffffffffffffffff81111561085657610855611b61565b5b6040519080825280602002602001820160405280156108845781602001602082028036833780820191505090505b50905060005b83518110156109f45760008482815181106108a8576108a7611b90565b5b602002602001015190506003600082815260200190815260200160002060009054906101000a900460ff166109e05760008787868181106108ec576108eb611b90565b5b9050602002013590508184868151811061090957610908611b90565b5b60200260200101818152505060016003600084815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f198a836040518363ffffffff1660e01b815260040161099e929190611cb4565b600060405180830381600087803b1580156109b857600080fd5b505af11580156109cc573d6000803e3d6000fd5b5050505084806109db90611bee565b955050505b5080806109ec90611bee565b91505061088a565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f044ffb6dcd4ec715d7d57b6c88fa43e63f1e156efb2a93d1072314f910286e9d838888604051610a7893929190611d4d565b60405180910390a3505050505050565b610a90610f18565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490611df8565b60405180910390fd5b610b078282610ff1565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb55709181565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610baa7fa076a07f65bcd51bcb15a0f01a65bc18f2d922acb81bcfd8af4caf5adb557091610ba5610f18565b610f20565b60005b82829050811015610c4a57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838383818110610c0a57610c09611b90565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150558080610c4290611bee565b915050610bad565b50505050565b6000610c77826001600086815260200190815260200160002061102590919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b60026020528160005260406000208181548110610d0c57600080fd5b90600052602060002001600091509150505481565b6000610d3e6001600084815260200190815260200160002061103f565b9050919050565b610d4e826106dd565b610d5f81610d5a610f18565b610f20565b610d698383610ff1565b505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610d988282610c7f565b610e6a57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e0f610f18565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000610e96836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611054565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f115750610f10826110c4565b5b9050919050565b600033905090565b610f2a8282610c7f565b610fb957610f4f8173ffffffffffffffffffffffffffffffffffffffff16601461112e565b610f5d8360001c602061112e565b604051602001610f6e929190611f2a565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb09190611fae565b60405180910390fd5b5050565b610fc78282610d8e565b610fec8160016000858152602001908152602001600020610e6e90919063ffffffff16565b505050565b610ffb828261136a565b611020816001600085815260200190815260200160002061144b90919063ffffffff16565b505050565b6000611034836000018361147b565b60001c905092915050565b600061104d826000016114a6565b9050919050565b600061106083836114b7565b6110b95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506110be565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600060028360026111419190611fd0565b61114b919061202a565b67ffffffffffffffff81111561116457611163611b61565b5b6040519080825280601f01601f1916602001820160405280156111965781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106111ce576111cd611b90565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061123257611231611b90565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026112729190611fd0565b61127c919061202a565b90505b600181111561131c577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106112be576112bd611b90565b5b1a60f81b8282815181106112d5576112d4611b90565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061131590612080565b905061127f565b5060008414611360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611357906120f6565b60405180910390fd5b8091505092915050565b6113748282610c7f565b1561144757600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113ec610f18565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611473836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6114da565b905092915050565b600082600001828154811061149357611492611b90565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b600080836001016000848152602001908152602001600020549050600081146115e257600060018261150c9190612116565b90506000600186600001805490506115249190612116565b905081811461159357600086600001828154811061154557611544611b90565b5b906000526020600020015490508087600001848154811061156957611568611b90565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806115a7576115a661214a565b5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506115e8565b60009150505b92915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61162d816115f8565b811461163857600080fd5b50565b60008135905061164a81611624565b92915050565b600060208284031215611666576116656115ee565b5b60006116748482850161163b565b91505092915050565b60008115159050919050565b6116928161167d565b82525050565b60006020820190506116ad6000830184611689565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116de826116b3565b9050919050565b6116ee816116d3565b81146116f957600080fd5b50565b60008135905061170b816116e5565b92915050565b600060208284031215611727576117266115ee565b5b6000611735848285016116fc565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b61177d8161176a565b82525050565b600061178f8383611774565b60208301905092915050565b6000602082019050919050565b60006117b38261173e565b6117bd8185611749565b93506117c88361175a565b8060005b838110156117f95781516117e08882611783565b97506117eb8361179b565b9250506001810190506117cc565b5085935050505092915050565b6000602082019050818103600083015261182081846117a8565b905092915050565b6118318161176a565b82525050565b600060208201905061184c6000830184611828565b92915050565b6000819050919050565b61186581611852565b811461187057600080fd5b50565b6000813590506118828161185c565b92915050565b60006020828403121561189e5761189d6115ee565b5b60006118ac84828501611873565b91505092915050565b6118be81611852565b82525050565b60006020820190506118d960008301846118b5565b92915050565b600080604083850312156118f6576118f56115ee565b5b600061190485828601611873565b9250506020611915858286016116fc565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119445761194361191f565b5b8235905067ffffffffffffffff81111561196157611960611924565b5b60208301915083602082028301111561197d5761197c611929565b5b9250929050565b60008060006040848603121561199d5761199c6115ee565b5b60006119ab868287016116fc565b935050602084013567ffffffffffffffff8111156119cc576119cb6115f3565b5b6119d88682870161192e565b92509250509250925092565b6000819050919050565b6000611a09611a046119ff846116b3565b6119e4565b6116b3565b9050919050565b6000611a1b826119ee565b9050919050565b6000611a2d82611a10565b9050919050565b611a3d81611a22565b82525050565b6000602082019050611a586000830184611a34565b92915050565b611a678161176a565b8114611a7257600080fd5b50565b600081359050611a8481611a5e565b92915050565b60008060408385031215611aa157611aa06115ee565b5b6000611aaf85828601611873565b9250506020611ac085828601611a75565b9150509250929050565b611ad3816116d3565b82525050565b6000602082019050611aee6000830184611aca565b92915050565b60008060408385031215611b0b57611b0a6115ee565b5b6000611b19858286016116fc565b9250506020611b2a85828601611a75565b9150509250929050565b600060208284031215611b4a57611b496115ee565b5b6000611b5884828501611a75565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bf98261176a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c2c57611c2b611bbf565b5b600182019050919050565b600082825260208201905092915050565b7f4d696e7461626c6520636f756e74206973206e6f7420656e6f75676800000000600082015250565b6000611c7e601c83611c37565b9150611c8982611c48565b602082019050919050565b60006020820190508181036000830152611cad81611c71565b9050919050565b6000604082019050611cc96000830185611aca565b611cd66020830184611828565b9392505050565b600080fd5b82818337600083830152505050565b6000611cfd8385611749565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611d3057611d2f611cdd565b5b602083029250611d41838584611ce2565b82840190509392505050565b60006040820190508181036000830152611d6781866117a8565b90508181036020830152611d7c818486611cf1565b9050949350505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611de2602f83611c37565b9150611ded82611d86565b604082019050919050565b60006020820190508181036000830152611e1181611dd5565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000611e59601783611e18565b9150611e6482611e23565b601782019050919050565b600081519050919050565b60005b83811015611e98578082015181840152602081019050611e7d565b83811115611ea7576000848401525b50505050565b6000611eb882611e6f565b611ec28185611e18565b9350611ed2818560208601611e7a565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000611f14601183611e18565b9150611f1f82611ede565b601182019050919050565b6000611f3582611e4c565b9150611f418285611ead565b9150611f4c82611f07565b9150611f588284611ead565b91508190509392505050565b6000601f19601f8301169050919050565b6000611f8082611e6f565b611f8a8185611c37565b9350611f9a818560208601611e7a565b611fa381611f64565b840191505092915050565b60006020820190508181036000830152611fc88184611f75565b905092915050565b6000611fdb8261176a565b9150611fe68361176a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561201f5761201e611bbf565b5b828202905092915050565b60006120358261176a565b91506120408361176a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561207557612074611bbf565b5b828201905092915050565b600061208b8261176a565b9150600082141561209f5761209e611bbf565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006120e0602083611c37565b91506120eb826120aa565b602082019050919050565b6000602082019050818103600083015261210f816120d3565b9050919050565b60006121218261176a565b915061212c8361176a565b92508282101561213f5761213e611bbf565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122084e507c9b06902091b745af1a5c2b1f820d8094b3bbd15c708fea8db99ea64ce64736f6c634300080a0033", "immutableReferences": {}, "generatedSources": [ { "ast": { "nodeType": "YulBlock", - "src": "0:1511:12", + "src": "0:4694:12", "statements": [ { "body": { @@ -907,12 +902,1295 @@ { "body": { "nodeType": "YulBlock", - "src": "956:552:12", + "src": "934:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "951:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "954:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "944:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "944:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "944:12:12" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "845:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1016:54:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1026:38:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1044:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1051:2:12", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1040:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1040:14:12" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1060:2:12", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "1056:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1056:7:12" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1036:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1036:28:12" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "1026:6:12" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "999:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "1009:6:12", + "type": "" + } + ], + "src": "968:102:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1104:152:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1121:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1124:77:12", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1114:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1114:88:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1114:88:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1218:1:12", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1221:4:12", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1211:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1211:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1211:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1245:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1235:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1235:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1235:15:12" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "1076:180:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1305:238:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1315:58:12", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1337:6:12" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1367:4:12" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1345:21:12" + }, + "nodeType": "YulFunctionCall", + "src": "1345:27:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1333:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1333:40:12" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1319:10:12", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1484:22:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1486:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "1486:18:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1486:18:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1427:10:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1439:18:12", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1424:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "1424:34:12" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1463:10:12" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1475:6:12" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1460:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "1460:22:12" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1421:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "1421:62:12" + }, + "nodeType": "YulIf", + "src": "1418:88:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1522:2:12", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1526:10:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1515:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "1515:22:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1515:22:12" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1291:6:12", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1299:4:12", + "type": "" + } + ], + "src": "1262:281:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1590:88:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1600:30:12", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1610:18:12" + }, + "nodeType": "YulFunctionCall", + "src": "1610:20:12" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1600:6:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1659:6:12" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1667:4:12" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1639:19:12" + }, + "nodeType": "YulFunctionCall", + "src": "1639:33:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1639:33:12" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1574:4:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1583:6:12", + "type": "" + } + ], + "src": "1549:129:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1766:229:12", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "1002:83:12", + "src": "1871:22:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1873:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "1873:18:12" + }, + "nodeType": "YulExpressionStatement", + "src": "1873:18:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1843:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1851:18:12", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1840:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "1840:30:12" + }, + "nodeType": "YulIf", + "src": "1837:56:12" + }, + { + "nodeType": "YulAssignment", + "src": "1903:25:12", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1915:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1923:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "1911:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1911:17:12" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1903:4:12" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1965:23:12", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1977:4:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1983:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1973:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "1973:15:12" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1965:4:12" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1750:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1761:4:12", + "type": "" + } + ], + "src": "1684:311:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2090:28:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2107:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2110:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2100:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "2100:12:12" + }, + "nodeType": "YulExpressionStatement", + "src": "2100:12:12" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "2001:117:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2254:619:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2264:90:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2346:6:12" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2289:56:12" + }, + "nodeType": "YulFunctionCall", + "src": "2289:64:12" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2273:15:12" + }, + "nodeType": "YulFunctionCall", + "src": "2273:81:12" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2264:5:12" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2363:16:12", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2374:5:12" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2367:3:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2396:5:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2403:6:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2389:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "2389:21:12" + }, + "nodeType": "YulExpressionStatement", + "src": "2389:21:12" + }, + { + "nodeType": "YulAssignment", + "src": "2419:23:12", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2430:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2437:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2426:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2426:16:12" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2419:3:12" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2452:44:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2470:6:12" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2482:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2490:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2478:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2478:17:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2466:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2466:30:12" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "2456:6:12", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2524:103:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "2538:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "2538:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "2538:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2511:6:12" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2519:3:12" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2508:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "2508:15:12" + }, + "nodeType": "YulIf", + "src": "2505:122:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2712:155:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2727:21:12", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2745:3:12" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "2731:10:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2769:3:12" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "2806:10:12" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2818:3:12" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "2774:31:12" + }, + "nodeType": "YulFunctionCall", + "src": "2774:48:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2762:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "2762:61:12" + }, + "nodeType": "YulExpressionStatement", + "src": "2762:61:12" + }, + { + "nodeType": "YulAssignment", + "src": "2836:21:12", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2847:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2852:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2843:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2843:14:12" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2836:3:12" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2665:3:12" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2670:6:12" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2662:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "2662:15:12" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2678:25:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2680:21:12", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2691:3:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2696:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2687:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "2687:14:12" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2680:3:12" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2640:21:12", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2642:17:12", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2653:6:12" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2646:3:12", + "type": "" + } + ] + } + ] + }, + "src": "2636:231:12" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2224:6:12", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2232:6:12", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2240:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2248:5:12", + "type": "" + } + ], + "src": "2141:732:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2984:297:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3033:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3035:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "3035:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "3035:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3012:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3020:4:12", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3008:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3008:17:12" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3027:3:12" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3004:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3004:27:12" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2997:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "2997:35:12" + }, + "nodeType": "YulIf", + "src": "2994:122:12" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3125:27:12", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3145:6:12" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3139:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "3139:13:12" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3129:6:12", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3161:114:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3248:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3256:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3244:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3244:17:12" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3263:6:12" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3271:3:12" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3170:73:12" + }, + "nodeType": "YulFunctionCall", + "src": "3170:105:12" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3161:5:12" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2962:6:12", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2970:3:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2978:5:12", + "type": "" + } + ], + "src": "2896:385:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3406:591:12", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3452:83:12", "statements": [ { "expression": { @@ -920,13 +2198,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "1004:77:12" + "src": "3454:77:12" }, "nodeType": "YulFunctionCall", - "src": "1004:79:12" + "src": "3454:79:12" }, "nodeType": "YulExpressionStatement", - "src": "1004:79:12" + "src": "3454:79:12" } ] }, @@ -937,52 +2215,52 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "977:7:12" + "src": "3427:7:12" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "986:9:12" + "src": "3436:9:12" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "973:3:12" + "src": "3423:3:12" }, "nodeType": "YulFunctionCall", - "src": "973:23:12" + "src": "3423:23:12" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "998:2:12", + "src": "3448:2:12", "type": "", - "value": "96" + "value": "64" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "969:3:12" + "src": "3419:3:12" }, "nodeType": "YulFunctionCall", - "src": "969:32:12" + "src": "3419:32:12" }, "nodeType": "YulIf", - "src": "966:119:12" + "src": "3416:119:12" }, { "nodeType": "YulBlock", - "src": "1095:128:12", + "src": "3545:128:12", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "1110:15:12", + "src": "3560:15:12", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "1124:1:12", + "src": "3574:1:12", "type": "", "value": "0" }, @@ -990,14 +2268,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "1114:6:12", + "src": "3564:6:12", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "1139:74:12", + "src": "3589:74:12", "value": { "arguments": [ { @@ -1005,41 +2283,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1185:9:12" + "src": "3635:9:12" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "1196:6:12" + "src": "3646:6:12" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1181:3:12" + "src": "3631:3:12" }, "nodeType": "YulFunctionCall", - "src": "1181:22:12" + "src": "3631:22:12" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "1205:7:12" + "src": "3655:7:12" } ], "functionName": { "name": "abi_decode_t_address_fromMemory", "nodeType": "YulIdentifier", - "src": "1149:31:12" + "src": "3599:31:12" }, "nodeType": "YulFunctionCall", - "src": "1149:64:12" + "src": "3599:64:12" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "1139:6:12" + "src": "3589:6:12" } ] } @@ -1047,30 +2325,11 @@ }, { "nodeType": "YulBlock", - "src": "1233:129:12", + "src": "3683:307:12", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "1248:16:12", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1262:2:12", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1252:6:12", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1278:74:12", + "src": "3698:39:12", "value": { "arguments": [ { @@ -1078,114 +2337,134 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1324:9:12" + "src": "3722:9:12" }, { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1335:6:12" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3733:2:12", + "type": "", + "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1320:3:12" + "src": "3718:3:12" }, "nodeType": "YulFunctionCall", - "src": "1320:22:12" + "src": "3718:18:12" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3712:5:12" + }, + "nodeType": "YulFunctionCall", + "src": "3712:25:12" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3702:6:12", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3784:83:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "3786:77:12" + }, + "nodeType": "YulFunctionCall", + "src": "3786:79:12" + }, + "nodeType": "YulExpressionStatement", + "src": "3786:79:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3756:6:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3764:18:12", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3753:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "3753:30:12" + }, + "nodeType": "YulIf", + "src": "3750:117:12" + }, + { + "nodeType": "YulAssignment", + "src": "3881:99:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3952:9:12" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3963:6:12" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3948:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "3948:22:12" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "1344:7:12" + "src": "3972:7:12" } ], "functionName": { - "name": "abi_decode_t_address_fromMemory", + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", "nodeType": "YulIdentifier", - "src": "1288:31:12" + "src": "3891:56:12" }, "nodeType": "YulFunctionCall", - "src": "1288:64:12" + "src": "3891:89:12" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "1278:6:12" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "1372:129:12", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1387:16:12", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1401:2:12", - "type": "", - "value": "64" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1391:6:12", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1417:74:12", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1463:9:12" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1474:6:12" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1459:3:12" - }, - "nodeType": "YulFunctionCall", - "src": "1459:22:12" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1483:7:12" - } - ], - "functionName": { - "name": "abi_decode_t_address_fromMemory", - "nodeType": "YulIdentifier", - "src": "1427:31:12" - }, - "nodeType": "YulFunctionCall", - "src": "1427:64:12" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1417:6:12" + "src": "3881:6:12" } ] } @@ -1193,19 +2472,19 @@ } ] }, - "name": "abi_decode_tuple_t_addresst_addresst_address_fromMemory", + "name": "abi_decode_tuple_t_addresst_array$_t_address_$dyn_memory_ptr_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "910:9:12", + "src": "3368:9:12", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "921:7:12", + "src": "3379:7:12", "type": "" } ], @@ -1213,27 +2492,395 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "933:6:12", + "src": "3391:6:12", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "941:6:12", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "949:6:12", + "src": "3399:6:12", "type": "" } ], - "src": "845:663:12" + "src": "3287:710:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4031:152:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4048:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4051:77:12", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4041:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4041:88:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4041:88:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4145:1:12", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4148:4:12", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4138:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4138:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4138:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4169:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4172:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4162:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4162:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4162:15:12" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "4003:180:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4217:152:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4234:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4237:77:12", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4227:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4227:88:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4227:88:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4331:1:12", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4334:4:12", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4324:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4324:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4324:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4355:1:12", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4358:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4348:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "4348:15:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4348:15:12" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "4189:180:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4420:32:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4430:16:12", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4441:5:12" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "4430:7:12" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4402:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "4412:7:12", + "type": "" + } + ], + "src": "4375:77:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4501:190:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4511:33:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4538:5:12" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "4520:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "4520:24:12" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4511:5:12" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4634:22:12", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "4636:16:12" + }, + "nodeType": "YulFunctionCall", + "src": "4636:18:12" + }, + "nodeType": "YulExpressionStatement", + "src": "4636:18:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4559:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4566:66:12", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "4556:2:12" + }, + "nodeType": "YulFunctionCall", + "src": "4556:77:12" + }, + "nodeType": "YulIf", + "src": "4553:103:12" + }, + { + "nodeType": "YulAssignment", + "src": "4665:20:12", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4676:5:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4683:1:12", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4672:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "4672:13:12" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "4665:3:12" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4487:5:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "4497:3:12", + "type": "" + } + ], + "src": "4458:233:12" } ] }, - "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_array$_t_address_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n}\n", "id": 12, "language": "Yul", "name": "#utility.yul" @@ -5597,183 +7244,12 @@ { "body": { "nodeType": "YulBlock", - "src": "8999:53:12", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "9016:3:12" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "9039:5:12" - } - ], - "functionName": { - "name": "cleanup_t_address", - "nodeType": "YulIdentifier", - "src": "9021:17:12" - }, - "nodeType": "YulFunctionCall", - "src": "9021:24:12" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9009:6:12" - }, - "nodeType": "YulFunctionCall", - "src": "9009:37:12" - }, - "nodeType": "YulExpressionStatement", - "src": "9009:37:12" - } - ] - }, - "name": "abi_encode_t_address_to_t_address_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "8987:5:12", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "8994:3:12", - "type": "" - } - ], - "src": "8934:118:12" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9156:124:12", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "9166:26:12", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "9178:9:12" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9189:2:12", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9174:3:12" - }, - "nodeType": "YulFunctionCall", - "src": "9174:18:12" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9166:4:12" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "9246:6:12" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "9259:9:12" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9270:1:12", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9255:3:12" - }, - "nodeType": "YulFunctionCall", - "src": "9255:17:12" - } - ], - "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "9202:43:12" - }, - "nodeType": "YulFunctionCall", - "src": "9202:71:12" - }, - "nodeType": "YulExpressionStatement", - "src": "9202:71:12" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "9128:9:12", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "9140:6:12", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "9151:4:12", - "type": "" - } - ], - "src": "9058:222:12" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9329:79:12", + "src": "8977:79:12", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "9386:16:12", + "src": "9034:16:12", "statements": [ { "expression": { @@ -5781,14 +7257,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "9395:1:12", + "src": "9043:1:12", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "9398:1:12", + "src": "9046:1:12", "type": "", "value": "0" } @@ -5796,13 +7272,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "9388:6:12" + "src": "9036:6:12" }, "nodeType": "YulFunctionCall", - "src": "9388:12:12" + "src": "9036:12:12" }, "nodeType": "YulExpressionStatement", - "src": "9388:12:12" + "src": "9036:12:12" } ] }, @@ -5813,44 +7289,44 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "9352:5:12" + "src": "9000:5:12" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "9377:5:12" + "src": "9025:5:12" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "9359:17:12" + "src": "9007:17:12" }, "nodeType": "YulFunctionCall", - "src": "9359:24:12" + "src": "9007:24:12" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "9349:2:12" + "src": "8997:2:12" }, "nodeType": "YulFunctionCall", - "src": "9349:35:12" + "src": "8997:35:12" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "9342:6:12" + "src": "8990:6:12" }, "nodeType": "YulFunctionCall", - "src": "9342:43:12" + "src": "8990:43:12" }, "nodeType": "YulIf", - "src": "9339:63:12" + "src": "8987:63:12" } ] }, @@ -5860,41 +7336,41 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "9322:5:12", + "src": "8970:5:12", "type": "" } ], - "src": "9286:122:12" + "src": "8934:122:12" }, { "body": { "nodeType": "YulBlock", - "src": "9466:87:12", + "src": "9114:87:12", "statements": [ { "nodeType": "YulAssignment", - "src": "9476:29:12", + "src": "9124:29:12", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "9498:6:12" + "src": "9146:6:12" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "9485:12:12" + "src": "9133:12:12" }, "nodeType": "YulFunctionCall", - "src": "9485:20:12" + "src": "9133:20:12" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "9476:5:12" + "src": "9124:5:12" } ] }, @@ -5904,19 +7380,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "9541:5:12" + "src": "9189:5:12" } ], "functionName": { "name": "validator_revert_t_uint256", "nodeType": "YulIdentifier", - "src": "9514:26:12" + "src": "9162:26:12" }, "nodeType": "YulFunctionCall", - "src": "9514:33:12" + "src": "9162:33:12" }, "nodeType": "YulExpressionStatement", - "src": "9514:33:12" + "src": "9162:33:12" } ] }, @@ -5926,13 +7402,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "9444:6:12", + "src": "9092:6:12", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "9452:3:12", + "src": "9100:3:12", "type": "" } ], @@ -5940,21 +7416,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "9460:5:12", + "src": "9108:5:12", "type": "" } ], - "src": "9414:139:12" + "src": "9062:139:12" }, { "body": { "nodeType": "YulBlock", - "src": "9642:391:12", + "src": "9290:391:12", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "9688:83:12", + "src": "9336:83:12", "statements": [ { "expression": { @@ -5962,13 +7438,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "9690:77:12" + "src": "9338:77:12" }, "nodeType": "YulFunctionCall", - "src": "9690:79:12" + "src": "9338:79:12" }, "nodeType": "YulExpressionStatement", - "src": "9690:79:12" + "src": "9338:79:12" } ] }, @@ -5979,26 +7455,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "9663:7:12" + "src": "9311:7:12" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9672:9:12" + "src": "9320:9:12" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "9659:3:12" + "src": "9307:3:12" }, "nodeType": "YulFunctionCall", - "src": "9659:23:12" + "src": "9307:23:12" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "9684:2:12", + "src": "9332:2:12", "type": "", "value": "64" } @@ -6006,25 +7482,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "9655:3:12" + "src": "9303:3:12" }, "nodeType": "YulFunctionCall", - "src": "9655:32:12" + "src": "9303:32:12" }, "nodeType": "YulIf", - "src": "9652:119:12" + "src": "9300:119:12" }, { "nodeType": "YulBlock", - "src": "9781:117:12", + "src": "9429:117:12", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "9796:15:12", + "src": "9444:15:12", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "9810:1:12", + "src": "9458:1:12", "type": "", "value": "0" }, @@ -6032,14 +7508,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "9800:6:12", + "src": "9448:6:12", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "9825:63:12", + "src": "9473:63:12", "value": { "arguments": [ { @@ -6047,41 +7523,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9860:9:12" + "src": "9508:9:12" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "9871:6:12" + "src": "9519:6:12" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "9856:3:12" + "src": "9504:3:12" }, "nodeType": "YulFunctionCall", - "src": "9856:22:12" + "src": "9504:22:12" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "9880:7:12" + "src": "9528:7:12" } ], "functionName": { "name": "abi_decode_t_bytes32", "nodeType": "YulIdentifier", - "src": "9835:20:12" + "src": "9483:20:12" }, "nodeType": "YulFunctionCall", - "src": "9835:53:12" + "src": "9483:53:12" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "9825:6:12" + "src": "9473:6:12" } ] } @@ -6089,15 +7565,15 @@ }, { "nodeType": "YulBlock", - "src": "9908:118:12", + "src": "9556:118:12", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "9923:16:12", + "src": "9571:16:12", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "9937:2:12", + "src": "9585:2:12", "type": "", "value": "32" }, @@ -6105,14 +7581,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "9927:6:12", + "src": "9575:6:12", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "9953:63:12", + "src": "9601:63:12", "value": { "arguments": [ { @@ -6120,41 +7596,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9988:9:12" + "src": "9636:9:12" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "9999:6:12" + "src": "9647:6:12" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "9984:3:12" + "src": "9632:3:12" }, "nodeType": "YulFunctionCall", - "src": "9984:22:12" + "src": "9632:22:12" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "10008:7:12" + "src": "9656:7:12" } ], "functionName": { "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "9963:20:12" + "src": "9611:20:12" }, "nodeType": "YulFunctionCall", - "src": "9963:53:12" + "src": "9611:53:12" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "9953:6:12" + "src": "9601:6:12" } ] } @@ -6168,13 +7644,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "9604:9:12", + "src": "9252:9:12", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "9615:7:12", + "src": "9263:7:12", "type": "" } ], @@ -6182,17 +7658,188 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "9627:6:12", + "src": "9275:6:12", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "9635:6:12", + "src": "9283:6:12", "type": "" } ], - "src": "9559:474:12" + "src": "9207:474:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9752:53:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9769:3:12" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9792:5:12" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "9774:17:12" + }, + "nodeType": "YulFunctionCall", + "src": "9774:24:12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9762:6:12" + }, + "nodeType": "YulFunctionCall", + "src": "9762:37:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9762:37:12" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9740:5:12", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9747:3:12", + "type": "" + } + ], + "src": "9687:118:12" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9909:124:12", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9919:26:12", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9931:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9942:2:12", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9927:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "9927:18:12" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9919:4:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9999:6:12" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10012:9:12" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10023:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10008:3:12" + }, + "nodeType": "YulFunctionCall", + "src": "10008:17:12" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "9955:43:12" + }, + "nodeType": "YulFunctionCall", + "src": "9955:71:12" + }, + "nodeType": "YulExpressionStatement", + "src": "9955:71:12" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9881:9:12", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9893:6:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9904:4:12", + "type": "" + } + ], + "src": "9811:222:12" }, { "body": { @@ -11252,15 +12899,15 @@ } ] }, - "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1, value2 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_IBEERC721_$1549_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IBEERC721_$1549_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IBEERC721_$1549_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IBEERC721_$1549__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IBEERC721_$1549_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08(memPtr) {\n\n mstore(add(memPtr, 0), \"Mintable count is not enough\")\n\n }\n\n function abi_encode_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() {\n revert(0, 0)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n\n if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() }\n length := mul(length, 0x20)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 64)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value1, value2, tail)\n\n }\n\n function store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: can only renounce\")\n\n mstore(add(memPtr, 32), \" roles for self\")\n\n }\n\n function abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 47)\n store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1, value2 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_IBEERC721_$1549_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IBEERC721_$1549_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IBEERC721_$1549_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IBEERC721_$1549__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IBEERC721_$1549_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08(memPtr) {\n\n mstore(add(memPtr, 0), \"Mintable count is not enough\")\n\n }\n\n function abi_encode_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() {\n revert(0, 0)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n\n if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() }\n length := mul(length, 0x20)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 64)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value1, value2, tail)\n\n }\n\n function store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: can only renounce\")\n\n mstore(add(memPtr, 32), \" roles for self\")\n\n }\n\n function abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 47)\n store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", "id": 12, "language": "Yul", "name": "#utility.yul" } ], - "sourceMap": "165:7541:11:-:0;;;1102:629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1229:37;257:23;;1229:13;;;:37;;:::i;:::-;1272:38;322:24;257:23;1272:13;;;:38;;:::i;:::-;1388:36;257:23;1411:12;:10;;;:12;;:::i;:::-;1388:10;;;:36;;:::i;:::-;1430:37;257:23;1461:4;1430:10;;;:37;;:::i;:::-;1528:39;322:24;1552:14;1528:10;;;:39;;:::i;:::-;1650:10;1634:3;;:27;;;;;;;;;;;;;;;;;;1716:10;1707:6;;:19;;;;;;;;;;;;;;;;;;1102:629;;;165:7541;;6492:247:0;6575:25;6603:18;6616:4;6603:12;;;:18;;:::i;:::-;6575:46;;6656:9;6631:6;:12;6638:4;6631:12;;;;;;;;;;;:22;;:34;;;;6722:9;6703:17;6697:4;6680:52;;;;;;;;;;6565:174;6492:247;;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;6257:110:0:-;6335:25;6346:4;6352:7;6335:10;;;:25;;:::i;:::-;6257:110;;:::o;4008:129::-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;;;;;:31;;:::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;;;;;:31;;;;:::i;:::-;;1978:166;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;;;:22;;:::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;;;:12;;:::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:9:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;;;:50;;:::i;:::-;7698:57;;7612:150;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1697:404:9:-;1760:4;1781:21;1791:3;1796:5;1781:9;;;:21;;:::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;88:117:12:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:663::-;933:6;941;949;998:2;986:9;977:7;973:23;969:32;966:119;;;1004:79;;:::i;:::-;966:119;1124:1;1149:64;1205:7;1196:6;1185:9;1181:22;1149:64;:::i;:::-;1139:74;;1095:128;1262:2;1288:64;1344:7;1335:6;1324:9;1320:22;1288:64;:::i;:::-;1278:74;;1233:129;1401:2;1427:64;1483:7;1474:6;1463:9;1459:22;1427:64;:::i;:::-;1417:74;;1372:129;845:663;;;;;:::o;165:7541:11:-;;;;;;;", - "deployedSourceMap": "165:7541:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:212:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6763:941:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5519:649;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4008:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2831:1116:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5404:214:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;500:20:11;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;284:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;524:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;220:60;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4634:317;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1431:151:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;380:48:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1750:140:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;454:41:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;634:212:1;719:4;757:42;742:57;;;:11;:57;;;;:97;;;;803:36;827:11;803:23;:36::i;:::-;742:97;735:104;;634:212;;;:::o;6763:941:11:-;6836:16;6913:21;6937:11;:18;6949:5;6937:18;;;;;;;;;;;;;;;6913:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7058:31;7106:4;:11;7092:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7058:60;;7167:13;7236:9;7231:398;7255:4;:11;7251:1;:15;7231:398;;;7331:13;7347:4;7352:1;7347:7;;;;;;;;:::i;:::-;;;;;;;;7331:23;;7417:9;:16;7427:5;7417:16;;;;;;;;;;;;;;;;;;;;;7412:211;;7553:5;7529:14;7544:5;7529:21;;;;;;;;:::i;:::-;;;;;;;:29;;;;;7607:7;;;;;:::i;:::-;;;;7412:211;7273:356;7268:3;;;;;:::i;:::-;;;;7231:398;;;;7685:14;7678:21;;;;;6763:941;;;:::o;5519:649::-;5581:7;5649:21;5673:11;:18;5685:5;5673:18;;;;;;;;;;;;;;;5649:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5729:13;5798:9;5793:314;5817:4;:11;5813:1;:15;5793:314;;;5893:14;5910:4;5915:1;5910:7;;;;;;;;:::i;:::-;;;;;;;;5893:24;;5980:9;:17;5990:6;5980:17;;;;;;;;;;;;;;;;;;;;;5975:126;;6085:7;;;;;:::i;:::-;;;;5975:126;5835:272;5830:3;;;;;:::i;:::-;;;;5793:314;;;;6158:5;6151:12;;;;5519:649;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4387:145::-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;2831:1116:11:-;2078:37;322:24;2102:12;:10;:12::i;:::-;2078:10;:37::i;:::-;3015:23:::1;3032:5;3015:16;:23::i;:::-;2997:7;;:14;;:41;;2982:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;3134:21;3158:11;:18;3170:5;3158:18;;;;;;;;;;;;;;;3134:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3210:13;3233:26:::0;3276:7:::1;;:14;;3262:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:58;;3345:9;3340:489;3364:4;:11;3360:1;:15;3340:489;;;3390:14;3407:4;3412:1;3407:7;;;;;;;;:::i;:::-;;;;;;;;3390:24;;3466:9;:17;3476:6;3466:17;;;;;;;;;;;;;;;;;;;;;3461:362;;3562:13;3578:7;;3586:5;3578:14;;;;;;;:::i;:::-;;;;;;;;3562:30;;3679:6;3660:9;3670:5;3660:16;;;;;;;;:::i;:::-;;;;;;;:25;;;::::0;::::1;3715:4;3695:9;:17;3705:6;3695:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3775:3;;;;;;;;;;;:8;;;3784:5;3791;3775:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3807:7;;;;;:::i;:::-;;;;3485:338;3461:362;3382:447;3377:3;;;;;:::i;:::-;;;;3340:489;;;;3917:3;;;;;;;;;;;3895:47;;3902:5;3895:47;;;3923:9;3934:7;;3895:47;;;;;;;;:::i;:::-;;;;;;;;2927:1020;;;2831:1116:::0;;;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;500:20:11:-;;;;;;;;;;;;;:::o;284:62::-;322:24;284:62;:::o;524:21::-;;;;;;;;;;;;;:::o;220:60::-;257:23;220:60;:::o;4634:317::-;2078:37;322:24;2102:12;:10;:12::i;:::-;2078:10;:37::i;:::-;4782:9:::1;4777:170;4801:7;;:14;;4797:1;:18;4777:170;;;4905:11;:18;4917:5;4905:18;;;;;;;;;;;;;;;4929:7;;4937:1;4929:10;;;;;;;:::i;:::-;;;;;;;;4905:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4817:3;;;;;:::i;:::-;;;;4777:170;;;;4634:317:::0;;;:::o;1431:151:1:-;1521:7;1547:28;1569:5;1547:12;:18;1560:4;1547:18;;;;;;;;;;;:21;;:28;;;;:::i;:::-;1540:35;;1431:151;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;2027:49::-;2072:4;2027:49;;;:::o;380:48:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1750:140:1:-;1830:7;1856:27;:12;:18;1869:4;1856:18;;;;;;;;;;;:25;:27::i;:::-;1849:34;;1750:140;;;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;454:41:11:-;;;;;;;;;;;;;;;;;;;;;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:9:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;:50::i;:::-;7698:57;;7612:150;;;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;:31;;;;:::i;:::-;;1978:166;;:::o;2233:171::-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:34;2389:7;2363:12;:18;2376:4;2363:18;;;;;;;;;;;:25;;:34;;;;:::i;:::-;;2233:171;;:::o;8870:156:9:-;8944:7;8994:22;8998:3;:10;;9010:5;8994:3;:22::i;:::-;8986:31;;8963:56;;8870:156;;;;:::o;8413:115::-;8476:7;8502:19;8510:3;:10;;8502:7;:19::i;:::-;8495:26;;8413:115;;;:::o;1697:404::-;1760:4;1781:21;1791:3;1796:5;1781:9;:21::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;829:155:7:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;1588:441:6:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;7219:234:0:-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;7930:156:9:-;8003:4;8026:53;8034:3;:10;;8070:5;8054:23;;8046:32;;8026:7;:53::i;:::-;8019:60;;7930:156;;;;:::o;4395:118::-;4462:7;4488:3;:11;;4500:5;4488:18;;;;;;;;:::i;:::-;;;;;;;;;;4481:25;;4395:118;;;;:::o;3946:107::-;4002:7;4028:3;:11;;:18;;;;4021:25;;3946:107;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;2269:1388::-;2335:4;2451:18;2472:3;:12;;:19;2485:5;2472:19;;;;;;;;;;;;2451:40;;2520:1;2506:10;:15;2502:1149;;2875:21;2912:1;2899:10;:14;;;;:::i;:::-;2875:38;;2927:17;2968:1;2947:3;:11;;:18;;;;:22;;;;:::i;:::-;2927:42;;3001:13;2988:9;:26;2984:398;;3034:17;3054:3;:11;;3066:9;3054:22;;;;;;;;:::i;:::-;;;;;;;;;;3034:42;;3205:9;3176:3;:11;;3188:13;3176:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;3314:10;3288:3;:12;;:23;3301:9;3288:23;;;;;;;;;;;:36;;;;3016:366;2984:398;3460:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3552:3;:12;;:19;3565:5;3552:19;;;;;;;;;;;3545:26;;;3593:4;3586:11;;;;;;;2502:1149;3635:5;3628:12;;;2269:1388;;;;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:126::-;1555:7;1595:42;1588:5;1584:54;1573:65;;1518:126;;;:::o;1650:96::-;1687:7;1716:24;1734:5;1716:24;:::i;:::-;1705:35;;1650:96;;;:::o;1752:122::-;1825:24;1843:5;1825:24;:::i;:::-;1818:5;1815:35;1805:63;;1864:1;1861;1854:12;1805:63;1752:122;:::o;1880:139::-;1926:5;1964:6;1951:20;1942:29;;1980:33;2007:5;1980:33;:::i;:::-;1880:139;;;;:::o;2025:329::-;2084:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:119;;;2139:79;;:::i;:::-;2101:119;2259:1;2284:53;2329:7;2320:6;2309:9;2305:22;2284:53;:::i;:::-;2274:63;;2230:117;2025:329;;;;:::o;2360:114::-;2427:6;2461:5;2455:12;2445:22;;2360:114;;;:::o;2480:184::-;2579:11;2613:6;2608:3;2601:19;2653:4;2648:3;2644:14;2629:29;;2480:184;;;;:::o;2670:132::-;2737:4;2760:3;2752:11;;2790:4;2785:3;2781:14;2773:22;;2670:132;;;:::o;2808:77::-;2845:7;2874:5;2863:16;;2808:77;;;:::o;2891:108::-;2968:24;2986:5;2968:24;:::i;:::-;2963:3;2956:37;2891:108;;:::o;3005:179::-;3074:10;3095:46;3137:3;3129:6;3095:46;:::i;:::-;3173:4;3168:3;3164:14;3150:28;;3005:179;;;;:::o;3190:113::-;3260:4;3292;3287:3;3283:14;3275:22;;3190:113;;;:::o;3339:732::-;3458:3;3487:54;3535:5;3487:54;:::i;:::-;3557:86;3636:6;3631:3;3557:86;:::i;:::-;3550:93;;3667:56;3717:5;3667:56;:::i;:::-;3746:7;3777:1;3762:284;3787:6;3784:1;3781:13;3762:284;;;3863:6;3857:13;3890:63;3949:3;3934:13;3890:63;:::i;:::-;3883:70;;3976:60;4029:6;3976:60;:::i;:::-;3966:70;;3822:224;3809:1;3806;3802:9;3797:14;;3762:284;;;3766:14;4062:3;4055:10;;3463:608;;;3339:732;;;;:::o;4077:373::-;4220:4;4258:2;4247:9;4243:18;4235:26;;4307:9;4301:4;4297:20;4293:1;4282:9;4278:17;4271:47;4335:108;4438:4;4429:6;4335:108;:::i;:::-;4327:116;;4077:373;;;;:::o;4456:118::-;4543:24;4561:5;4543:24;:::i;:::-;4538:3;4531:37;4456:118;;:::o;4580:222::-;4673:4;4711:2;4700:9;4696:18;4688:26;;4724:71;4792:1;4781:9;4777:17;4768:6;4724:71;:::i;:::-;4580:222;;;;:::o;4808:77::-;4845:7;4874:5;4863:16;;4808:77;;;:::o;4891:122::-;4964:24;4982:5;4964:24;:::i;:::-;4957:5;4954:35;4944:63;;5003:1;5000;4993:12;4944:63;4891:122;:::o;5019:139::-;5065:5;5103:6;5090:20;5081:29;;5119:33;5146:5;5119:33;:::i;:::-;5019:139;;;;:::o;5164:329::-;5223:6;5272:2;5260:9;5251:7;5247:23;5243:32;5240:119;;;5278:79;;:::i;:::-;5240:119;5398:1;5423:53;5468:7;5459:6;5448:9;5444:22;5423:53;:::i;:::-;5413:63;;5369:117;5164:329;;;;:::o;5499:118::-;5586:24;5604:5;5586:24;:::i;:::-;5581:3;5574:37;5499:118;;:::o;5623:222::-;5716:4;5754:2;5743:9;5739:18;5731:26;;5767:71;5835:1;5824:9;5820:17;5811:6;5767:71;:::i;:::-;5623:222;;;;:::o;5851:474::-;5919:6;5927;5976:2;5964:9;5955:7;5951:23;5947:32;5944:119;;;5982:79;;:::i;:::-;5944:119;6102:1;6127:53;6172:7;6163:6;6152:9;6148:22;6127:53;:::i;:::-;6117:63;;6073:117;6229:2;6255:53;6300:7;6291:6;6280:9;6276:22;6255:53;:::i;:::-;6245:63;;6200:118;5851:474;;;;;:::o;6331:117::-;6440:1;6437;6430:12;6454:117;6563:1;6560;6553:12;6577:117;6686:1;6683;6676:12;6717:568;6790:8;6800:6;6850:3;6843:4;6835:6;6831:17;6827:27;6817:122;;6858:79;;:::i;:::-;6817:122;6971:6;6958:20;6948:30;;7001:18;6993:6;6990:30;6987:117;;;7023:79;;:::i;:::-;6987:117;7137:4;7129:6;7125:17;7113:29;;7191:3;7183:4;7175:6;7171:17;7161:8;7157:32;7154:41;7151:128;;;7198:79;;:::i;:::-;7151:128;6717:568;;;;;:::o;7291:704::-;7386:6;7394;7402;7451:2;7439:9;7430:7;7426:23;7422:32;7419:119;;;7457:79;;:::i;:::-;7419:119;7577:1;7602:53;7647:7;7638:6;7627:9;7623:22;7602:53;:::i;:::-;7592:63;;7548:117;7732:2;7721:9;7717:18;7704:32;7763:18;7755:6;7752:30;7749:117;;;7785:79;;:::i;:::-;7749:117;7898:80;7970:7;7961:6;7950:9;7946:22;7898:80;:::i;:::-;7880:98;;;;7675:313;7291:704;;;;;:::o;8001:60::-;8029:3;8050:5;8043:12;;8001:60;;;:::o;8067:142::-;8117:9;8150:53;8168:34;8177:24;8195:5;8177:24;:::i;:::-;8168:34;:::i;:::-;8150:53;:::i;:::-;8137:66;;8067:142;;;:::o;8215:126::-;8265:9;8298:37;8329:5;8298:37;:::i;:::-;8285:50;;8215:126;;;:::o;8347:144::-;8415:9;8448:37;8479:5;8448:37;:::i;:::-;8435:50;;8347:144;;;:::o;8497:167::-;8602:55;8651:5;8602:55;:::i;:::-;8597:3;8590:68;8497:167;;:::o;8670:258::-;8781:4;8819:2;8808:9;8804:18;8796:26;;8832:89;8918:1;8907:9;8903:17;8894:6;8832:89;:::i;:::-;8670:258;;;;:::o;8934:118::-;9021:24;9039:5;9021:24;:::i;:::-;9016:3;9009:37;8934:118;;:::o;9058:222::-;9151:4;9189:2;9178:9;9174:18;9166:26;;9202:71;9270:1;9259:9;9255:17;9246:6;9202:71;:::i;:::-;9058:222;;;;:::o;9286:122::-;9359:24;9377:5;9359:24;:::i;:::-;9352:5;9349:35;9339:63;;9398:1;9395;9388:12;9339:63;9286:122;:::o;9414:139::-;9460:5;9498:6;9485:20;9476:29;;9514:33;9541:5;9514:33;:::i;:::-;9414:139;;;;:::o;9559:474::-;9627:6;9635;9684:2;9672:9;9663:7;9659:23;9655:32;9652:119;;;9690:79;;:::i;:::-;9652:119;9810:1;9835:53;9880:7;9871:6;9860:9;9856:22;9835:53;:::i;:::-;9825:63;;9781:117;9937:2;9963:53;10008:7;9999:6;9988:9;9984:22;9963:53;:::i;:::-;9953:63;;9908:118;9559:474;;;;;:::o;10039:::-;10107:6;10115;10164:2;10152:9;10143:7;10139:23;10135:32;10132:119;;;10170:79;;:::i;:::-;10132:119;10290:1;10315:53;10360:7;10351:6;10340:9;10336:22;10315:53;:::i;:::-;10305:63;;10261:117;10417:2;10443:53;10488:7;10479:6;10468:9;10464:22;10443:53;:::i;:::-;10433:63;;10388:118;10039:474;;;;;:::o;10519:329::-;10578:6;10627:2;10615:9;10606:7;10602:23;10598:32;10595:119;;;10633:79;;:::i;:::-;10595:119;10753:1;10778:53;10823:7;10814:6;10803:9;10799:22;10778:53;:::i;:::-;10768:63;;10724:117;10519:329;;;;:::o;10854:180::-;10902:77;10899:1;10892:88;10999:4;10996:1;10989:15;11023:4;11020:1;11013:15;11040:180;11088:77;11085:1;11078:88;11185:4;11182:1;11175:15;11209:4;11206:1;11199:15;11226:180;11274:77;11271:1;11264:88;11371:4;11368:1;11361:15;11395:4;11392:1;11385:15;11412:233;11451:3;11474:24;11492:5;11474:24;:::i;:::-;11465:33;;11520:66;11513:5;11510:77;11507:103;;;11590:18;;:::i;:::-;11507:103;11637:1;11630:5;11626:13;11619:20;;11412:233;;;:::o;11651:169::-;11735:11;11769:6;11764:3;11757:19;11809:4;11804:3;11800:14;11785:29;;11651:169;;;;:::o;11826:178::-;11966:30;11962:1;11954:6;11950:14;11943:54;11826:178;:::o;12010:366::-;12152:3;12173:67;12237:2;12232:3;12173:67;:::i;:::-;12166:74;;12249:93;12338:3;12249:93;:::i;:::-;12367:2;12362:3;12358:12;12351:19;;12010:366;;;:::o;12382:419::-;12548:4;12586:2;12575:9;12571:18;12563:26;;12635:9;12629:4;12625:20;12621:1;12610:9;12606:17;12599:47;12663:131;12789:4;12663:131;:::i;:::-;12655:139;;12382:419;;;:::o;12807:332::-;12928:4;12966:2;12955:9;12951:18;12943:26;;12979:71;13047:1;13036:9;13032:17;13023:6;12979:71;:::i;:::-;13060:72;13128:2;13117:9;13113:18;13104:6;13060:72;:::i;:::-;12807:332;;;;;:::o;13145:117::-;13254:1;13251;13244:12;13268:154;13352:6;13347:3;13342;13329:30;13414:1;13405:6;13400:3;13396:16;13389:27;13268:154;;;:::o;13458:537::-;13586:3;13607:86;13686:6;13681:3;13607:86;:::i;:::-;13600:93;;13717:66;13709:6;13706:78;13703:165;;;13787:79;;:::i;:::-;13703:165;13899:4;13891:6;13887:17;13877:27;;13914:43;13950:6;13945:3;13938:5;13914:43;:::i;:::-;13982:6;13977:3;13973:16;13966:23;;13458:537;;;;;:::o;14001:654::-;14232:4;14270:2;14259:9;14255:18;14247:26;;14319:9;14313:4;14309:20;14305:1;14294:9;14290:17;14283:47;14347:108;14450:4;14441:6;14347:108;:::i;:::-;14339:116;;14502:9;14496:4;14492:20;14487:2;14476:9;14472:18;14465:48;14530:118;14643:4;14634:6;14626;14530:118;:::i;:::-;14522:126;;14001:654;;;;;;:::o;14661:234::-;14801:34;14797:1;14789:6;14785:14;14778:58;14870:17;14865:2;14857:6;14853:15;14846:42;14661:234;:::o;14901:366::-;15043:3;15064:67;15128:2;15123:3;15064:67;:::i;:::-;15057:74;;15140:93;15229:3;15140:93;:::i;:::-;15258:2;15253:3;15249:12;15242:19;;14901:366;;;:::o;15273:419::-;15439:4;15477:2;15466:9;15462:18;15454:26;;15526:9;15520:4;15516:20;15512:1;15501:9;15497:17;15490:47;15554:131;15680:4;15554:131;:::i;:::-;15546:139;;15273:419;;;:::o;15698:148::-;15800:11;15837:3;15822:18;;15698:148;;;;:::o;15852:173::-;15992:25;15988:1;15980:6;15976:14;15969:49;15852:173;:::o;16031:402::-;16191:3;16212:85;16294:2;16289:3;16212:85;:::i;:::-;16205:92;;16306:93;16395:3;16306:93;:::i;:::-;16424:2;16419:3;16415:12;16408:19;;16031:402;;;:::o;16439:99::-;16491:6;16525:5;16519:12;16509:22;;16439:99;;;:::o;16544:307::-;16612:1;16622:113;16636:6;16633:1;16630:13;16622:113;;;16721:1;16716:3;16712:11;16706:18;16702:1;16697:3;16693:11;16686:39;16658:2;16655:1;16651:10;16646:15;;16622:113;;;16753:6;16750:1;16747:13;16744:101;;;16833:1;16824:6;16819:3;16815:16;16808:27;16744:101;16593:258;16544:307;;;:::o;16857:377::-;16963:3;16991:39;17024:5;16991:39;:::i;:::-;17046:89;17128:6;17123:3;17046:89;:::i;:::-;17039:96;;17144:52;17189:6;17184:3;17177:4;17170:5;17166:16;17144:52;:::i;:::-;17221:6;17216:3;17212:16;17205:23;;16967:267;16857:377;;;;:::o;17240:167::-;17380:19;17376:1;17368:6;17364:14;17357:43;17240:167;:::o;17413:402::-;17573:3;17594:85;17676:2;17671:3;17594:85;:::i;:::-;17587:92;;17688:93;17777:3;17688:93;:::i;:::-;17806:2;17801:3;17797:12;17790:19;;17413:402;;;:::o;17821:967::-;18203:3;18225:148;18369:3;18225:148;:::i;:::-;18218:155;;18390:95;18481:3;18472:6;18390:95;:::i;:::-;18383:102;;18502:148;18646:3;18502:148;:::i;:::-;18495:155;;18667:95;18758:3;18749:6;18667:95;:::i;:::-;18660:102;;18779:3;18772:10;;17821:967;;;;;:::o;18794:102::-;18835:6;18886:2;18882:7;18877:2;18870:5;18866:14;18862:28;18852:38;;18794:102;;;:::o;18902:364::-;18990:3;19018:39;19051:5;19018:39;:::i;:::-;19073:71;19137:6;19132:3;19073:71;:::i;:::-;19066:78;;19153:52;19198:6;19193:3;19186:4;19179:5;19175:16;19153:52;:::i;:::-;19230:29;19252:6;19230:29;:::i;:::-;19225:3;19221:39;19214:46;;18994:272;18902:364;;;;:::o;19272:313::-;19385:4;19423:2;19412:9;19408:18;19400:26;;19472:9;19466:4;19462:20;19458:1;19447:9;19443:17;19436:47;19500:78;19573:4;19564:6;19500:78;:::i;:::-;19492:86;;19272:313;;;;:::o;19591:348::-;19631:7;19654:20;19672:1;19654:20;:::i;:::-;19649:25;;19688:20;19706:1;19688:20;:::i;:::-;19683:25;;19876:1;19808:66;19804:74;19801:1;19798:81;19793:1;19786:9;19779:17;19775:105;19772:131;;;19883:18;;:::i;:::-;19772:131;19931:1;19928;19924:9;19913:20;;19591:348;;;;:::o;19945:305::-;19985:3;20004:20;20022:1;20004:20;:::i;:::-;19999:25;;20038:20;20056:1;20038:20;:::i;:::-;20033:25;;20192:1;20124:66;20120:74;20117:1;20114:81;20111:107;;;20198:18;;:::i;:::-;20111:107;20242:1;20239;20235:9;20228:16;;19945:305;;;;:::o;20256:171::-;20295:3;20318:24;20336:5;20318:24;:::i;:::-;20309:33;;20364:4;20357:5;20354:15;20351:41;;;20372:18;;:::i;:::-;20351:41;20419:1;20412:5;20408:13;20401:20;;20256:171;;;:::o;20433:182::-;20573:34;20569:1;20561:6;20557:14;20550:58;20433:182;:::o;20621:366::-;20763:3;20784:67;20848:2;20843:3;20784:67;:::i;:::-;20777:74;;20860:93;20949:3;20860:93;:::i;:::-;20978:2;20973:3;20969:12;20962:19;;20621:366;;;:::o;20993:419::-;21159:4;21197:2;21186:9;21182:18;21174:26;;21246:9;21240:4;21236:20;21232:1;21221:9;21217:17;21210:47;21274:131;21400:4;21274:131;:::i;:::-;21266:139;;20993:419;;;:::o;21418:191::-;21458:4;21478:20;21496:1;21478:20;:::i;:::-;21473:25;;21512:20;21530:1;21512:20;:::i;:::-;21507:25;;21551:1;21548;21545:8;21542:34;;;21556:18;;:::i;:::-;21542:34;21601:1;21598;21594:9;21586:17;;21418:191;;;;:::o;21615:180::-;21663:77;21660:1;21653:88;21760:4;21757:1;21750:15;21784:4;21781:1;21774:15", - "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"../interfaces/IBEERC721.sol\";\n\ncontract NftDistributor is AccessControlEnumerable {\n bytes32 public constant ADMIN_ROLE = keccak256(\"ADMIN_ROLE\");\n bytes32 public constant MANAGE_ROLE = keccak256(\"MANAGE_ROLE\");\n\n // user address => nft ids\n mapping(address => uint256[]) public ownerToNFTs;\n // nft id => minted\n mapping(uint256 => bool) public nftMinted;\n\n IBEERC721 public nft;\n address public source;\n\n event Minted(\n address indexed user,\n address indexed nft,\n uint256[] nftSIds,\n uint256[] nftTIds\n );\n\n /**\n * @dev Contract constructor.\n *\n * Initializes the contract with the specified addresses and sets the admin and management roles.\n *\n * Parameters:\n * - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE\n * - _nftSource: The address of the source NFT that will check if user has mint permission.\n * - _manageAddress: The address that will have the MANAGE_ROLE assigned.\n */\n constructor(address _nftTarget, address _nftSource, address _manageAddress) {\n // Set up the ADMIN_ROLE and MANAGE_ROLE\n _setRoleAdmin(ADMIN_ROLE, ADMIN_ROLE);\n _setRoleAdmin(MANAGE_ROLE, ADMIN_ROLE);\n\n // Grant the ADMIN_ROLE to the deployer and to the contract itself\n _setupRole(ADMIN_ROLE, _msgSender());\n _setupRole(ADMIN_ROLE, address(this));\n\n // Grant the MANAGE_ROLE to the specified address\n _setupRole(MANAGE_ROLE, _manageAddress);\n\n // Initialize the nft contract with IBEERC721 interface\n nft = IBEERC721(_nftTarget);\n\n // Set the source contract address\n source = _nftSource;\n }\n\n /**\n * @dev Modifier that checks if the caller has the MANAGE_ROLE.\n *\n * The function uses the _checkRole() function from the AccessControl library.\n * If the check is successful, the code defined by the function that uses this modifier is executed.\n */\n modifier onlyManager() {\n // Check if the caller has the MANAGE_ROLE\n _checkRole(MANAGE_ROLE, _msgSender());\n // If the check is successful, execute the code in the function that uses this modifier\n _;\n }\n\n /**\n * @dev The mintToUser function mints NFTs to a given user.\n *\n * Only functions called by an address with the MANAGE_ROLE permission can access this function.\n * The function takes an array of nftIds and checks that there are enough mintable NFTs for the user.\n * It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted.\n * Then it emits the Minted event with details of the operation.\n *\n * @param _user - The address of the user receiving the NFTs\n * @param _nftIds - An array of the IDs for the NFTs being minted\n */\n function mintToUser(\n address _user,\n uint256[] calldata _nftIds\n ) external onlyManager {\n // Check that there are enough mintable NFTs\n require(\n _nftIds.length <= getMintableCount(_user),\n \"Mintable count is not enough\"\n );\n // Get the array of the user's owned NFTs\n uint256[] memory nfts = ownerToNFTs[_user];\n // Initialize variables\n uint256 index = 0;\n uint256[] memory nftSource = new uint256[](_nftIds.length);\n\n // Loop through the user's owned NFTs\n for (uint256 i = 0; i < nfts.length; i++) {\n uint256 nftSId = nfts[i];\n\n // Check if the NFT is mintable\n if (!nftMinted[nftSId]) {\n // If the NFT is mintable, add it to the list to be minted\n uint256 nftId = _nftIds[index];\n // Add the NFT's source ID to the list of sources\n nftSource[index] = nftSId;\n nftMinted[nftSId] = true;\n // Mint the NFT to the user's address\n nft.mint(_user, nftId);\n index++;\n }\n }\n // Emit event with details of the minting operation\n emit Minted(_user, address(nft), nftSource, _nftIds);\n }\n\n /**\n * @dev The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user.\n * mintToUser method would check if target user had permission to mint NFTs.\n *\n * Only functions called by an address with the MANAGE_ROLE permission can access this function.\n * The function takes in the address of the user and an array of NFT IDs. It then loops through the array\n * of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.\n *\n * @param _user - The address of the user being updated with new NFT data\n * @param _nftIds - An array of NFT IDs being added to the user's NFT data\n */\n function addNFTData(\n address _user,\n uint256[] calldata _nftIds\n ) external onlyManager {\n // Loop through the array of NFT IDs\n for (uint256 i = 0; i < _nftIds.length; i++) {\n // Add each NFT ID to the end of the array of NFTs owned by the user\n ownerToNFTs[_user].push(_nftIds[i]);\n }\n }\n\n /**\n * @dev The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted.\n *\n * This is a read-only function, meaning it doesn't modify the state of the blockchain.\n * It takes in the address of the user whose mintable count is being determined,\n * and returns the number of NFTs owned by the user that have not yet been minted.\n *\n * @param _user - The address of the user whose mintable count is being determined\n * @return count - The number of NFTs owned by the user that have not yet been minted\n */\n function getMintableCount(address _user) public view returns (uint256) {\n // Get an array of all NFT IDs owned by the user\n uint256[] memory nfts = ownerToNFTs[_user];\n // Initialize count to zero\n uint256 count = 0;\n // Loop through the array of NFT IDs\n for (uint256 i = 0; i < nfts.length; i++) {\n // Get the NFT ID at this index of the loop\n uint256 nftAId = nfts[i];\n // Check if the NFT has not yet been minted\n if (!nftMinted[nftAId]) {\n // If the NFT has not yet been minted, increment the mintable count\n count++;\n }\n }\n // Return the final mintable count\n return count;\n }\n\n /**\n * @dev The getMintableNftIds function gets an array of NFT IDs owned by a user that have not yet been minted.\n *\n * This is a read-only function, meaning it doesn't modify the state of the blockchain.\n * It takes in the address of the user whose mintable NFT IDs are being determined,\n * and returns an array of the NFT IDs owned by the user that have not yet been minted.\n *\n * @param _user - The address of the user whose mintable NFT IDs are being determined\n * @return mintableNftIds - An array of the NFT IDs owned by the user that have not yet been minted\n */\n function getMintableNftIds(\n address _user\n ) external view returns (uint256[] memory) {\n // Get an array of all NFT IDs owned by the user\n uint256[] memory nfts = ownerToNFTs[_user];\n // Initialize an array for mintable NFT IDs with the same length as the array of all NFT IDs\n uint256[] memory mintableNftIds = new uint256[](nfts.length);\n // Initialize an index counter to zero\n uint256 index = 0;\n // Loop through the array of NFT IDs\n for (uint256 i = 0; i < nfts.length; i++) {\n // Get the NFT ID at this index of the loop\n uint256 nftId = nfts[i];\n // Check if the NFT has not yet been minted\n if (!nftMinted[nftId]) {\n // If the NFT has not yet been minted, add it to the mintable NFT IDs array\n mintableNftIds[index] = nftId;\n // Increment the index counter\n index++;\n }\n }\n // Return the array of mintable NFT IDs\n return mintableNftIds;\n }\n}\n", + "sourceMap": "165:7509:11:-:0;;;1077:622;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1193:37;257:23;;1193:13;;;:37;;:::i;:::-;1236:38;322:24;257:23;1236:13;;;:38;;:::i;:::-;1352:36;257:23;1375:12;:10;;;:12;;:::i;:::-;1352:10;;;:36;;:::i;:::-;1394:37;257:23;1425:4;1394:10;;;:37;;:::i;:::-;1497:9;1492:109;1516:14;:21;1512:1;:25;1492:109;;;1552:42;322:24;1576:14;1591:1;1576:17;;;;;;;;:::i;:::-;;;;;;;;1552:10;;;:42;;:::i;:::-;1539:3;;;;:::i;:::-;;;1492:109;;;;1683:10;1667:3;;:27;;;;;;;;;;;;;;;;;;1077:622;;165:7509;;6492:247:0;6575:25;6603:18;6616:4;6603:12;;;:18;;:::i;:::-;6575:46;;6656:9;6631:6;:12;6638:4;6631:12;;;;;;;;;;;:22;;:34;;;;6722:9;6703:17;6697:4;6680:52;;;;;;;;;;6565:174;6492:247;;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;6257:110:0:-;6335:25;6346:4;6352:7;6335:10;;;:25;;:::i;:::-;6257:110;;:::o;4008:129::-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;;;;;:31;;:::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;;;;;:31;;;;:::i;:::-;;1978:166;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;;;:22;;:::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;;;:12;;:::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:9:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;;;:50;;:::i;:::-;7698:57;;7612:150;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1697:404:9:-;1760:4;1781:21;1791:3;1796:5;1781:9;;;:21;;:::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;7:75:12:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:117::-;954:1;951;944:12;968:102;1009:6;1060:2;1056:7;1051:2;1044:5;1040:14;1036:28;1026:38;;968:102;;;:::o;1076:180::-;1124:77;1121:1;1114:88;1221:4;1218:1;1211:15;1245:4;1242:1;1235:15;1262:281;1345:27;1367:4;1345:27;:::i;:::-;1337:6;1333:40;1475:6;1463:10;1460:22;1439:18;1427:10;1424:34;1421:62;1418:88;;;1486:18;;:::i;:::-;1418:88;1526:10;1522:2;1515:22;1305:238;1262:281;;:::o;1549:129::-;1583:6;1610:20;;:::i;:::-;1600:30;;1639:33;1667:4;1659:6;1639:33;:::i;:::-;1549:129;;;:::o;1684:311::-;1761:4;1851:18;1843:6;1840:30;1837:56;;;1873:18;;:::i;:::-;1837:56;1923:4;1915:6;1911:17;1903:25;;1983:4;1977;1973:15;1965:23;;1684:311;;;:::o;2001:117::-;2110:1;2107;2100:12;2141:732;2248:5;2273:81;2289:64;2346:6;2289:64;:::i;:::-;2273:81;:::i;:::-;2264:90;;2374:5;2403:6;2396:5;2389:21;2437:4;2430:5;2426:16;2419:23;;2490:4;2482:6;2478:17;2470:6;2466:30;2519:3;2511:6;2508:15;2505:122;;;2538:79;;:::i;:::-;2505:122;2653:6;2636:231;2670:6;2665:3;2662:15;2636:231;;;2745:3;2774:48;2818:3;2806:10;2774:48;:::i;:::-;2769:3;2762:61;2852:4;2847:3;2843:14;2836:21;;2712:155;2696:4;2691:3;2687:14;2680:21;;2636:231;;;2640:21;2254:619;;2141:732;;;;;:::o;2896:385::-;2978:5;3027:3;3020:4;3012:6;3008:17;3004:27;2994:122;;3035:79;;:::i;:::-;2994:122;3145:6;3139:13;3170:105;3271:3;3263:6;3256:4;3248:6;3244:17;3170:105;:::i;:::-;3161:114;;2984:297;2896:385;;;;:::o;3287:710::-;3391:6;3399;3448:2;3436:9;3427:7;3423:23;3419:32;3416:119;;;3454:79;;:::i;:::-;3416:119;3574:1;3599:64;3655:7;3646:6;3635:9;3631:22;3599:64;:::i;:::-;3589:74;;3545:128;3733:2;3722:9;3718:18;3712:25;3764:18;3756:6;3753:30;3750:117;;;3786:79;;:::i;:::-;3750:117;3891:89;3972:7;3963:6;3952:9;3948:22;3891:89;:::i;:::-;3881:99;;3683:307;3287:710;;;;;:::o;4003:180::-;4051:77;4048:1;4041:88;4148:4;4145:1;4138:15;4172:4;4169:1;4162:15;4189:180;4237:77;4234:1;4227:88;4334:4;4331:1;4324:15;4358:4;4355:1;4348:15;4375:77;4412:7;4441:5;4430:16;;4375:77;;;:::o;4458:233::-;4497:3;4520:24;4538:5;4520:24;:::i;:::-;4511:33;;4566:66;4559:5;4556:77;4553:103;;;4636:18;;:::i;:::-;4553:103;4683:1;4676:5;4672:13;4665:20;;4458:233;;;:::o;165:7509:11:-;;;;;;;", + "deployedSourceMap": "165:7509:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:212:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6731:941:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5487:649;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4008:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2799:1116:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5404:214:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;500:20:11;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;284:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;220:60;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4602:317;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1431:151:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;380:48:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1750:140:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;454:41:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;634:212:1;719:4;757:42;742:57;;;:11;:57;;;;:97;;;;803:36;827:11;803:23;:36::i;:::-;742:97;735:104;;634:212;;;:::o;6731:941:11:-;6804:16;6881:21;6905:11;:18;6917:5;6905:18;;;;;;;;;;;;;;;6881:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7026:31;7074:4;:11;7060:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7026:60;;7135:13;7204:9;7199:398;7223:4;:11;7219:1;:15;7199:398;;;7299:13;7315:4;7320:1;7315:7;;;;;;;;:::i;:::-;;;;;;;;7299:23;;7385:9;:16;7395:5;7385:16;;;;;;;;;;;;;;;;;;;;;7380:211;;7521:5;7497:14;7512:5;7497:21;;;;;;;;:::i;:::-;;;;;;;:29;;;;;7575:7;;;;;:::i;:::-;;;;7380:211;7241:356;7236:3;;;;;:::i;:::-;;;;7199:398;;;;7653:14;7646:21;;;;;6731:941;;;:::o;5487:649::-;5549:7;5617:21;5641:11;:18;5653:5;5641:18;;;;;;;;;;;;;;;5617:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5697:13;5766:9;5761:314;5785:4;:11;5781:1;:15;5761:314;;;5861:14;5878:4;5883:1;5878:7;;;;;;;;:::i;:::-;;;;;;;;5861:24;;5948:9;:17;5958:6;5948:17;;;;;;;;;;;;;;;;;;;;;5943:126;;6053:7;;;;;:::i;:::-;;;;5943:126;5803:272;5798:3;;;;;:::i;:::-;;;;5761:314;;;;6126:5;6119:12;;;;5487:649;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4387:145::-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;2799:1116:11:-;2046:37;322:24;2070:12;:10;:12::i;:::-;2046:10;:37::i;:::-;2983:23:::1;3000:5;2983:16;:23::i;:::-;2965:7;;:14;;:41;;2950:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;3102:21;3126:11;:18;3138:5;3126:18;;;;;;;;;;;;;;;3102:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3178:13;3201:26:::0;3244:7:::1;;:14;;3230:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:58;;3313:9;3308:489;3332:4;:11;3328:1;:15;3308:489;;;3358:14;3375:4;3380:1;3375:7;;;;;;;;:::i;:::-;;;;;;;;3358:24;;3434:9;:17;3444:6;3434:17;;;;;;;;;;;;;;;;;;;;;3429:362;;3530:13;3546:7;;3554:5;3546:14;;;;;;;:::i;:::-;;;;;;;;3530:30;;3647:6;3628:9;3638:5;3628:16;;;;;;;;:::i;:::-;;;;;;;:25;;;::::0;::::1;3683:4;3663:9;:17;3673:6;3663:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3743:3;;;;;;;;;;;:8;;;3752:5;3759;3743:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3775:7;;;;;:::i;:::-;;;;3453:338;3429:362;3350:447;3345:3;;;;;:::i;:::-;;;;3308:489;;;;3885:3;;;;;;;;;;;3863:47;;3870:5;3863:47;;;3891:9;3902:7;;3863:47;;;;;;;;:::i;:::-;;;;;;;;2895:1020;;;2799:1116:::0;;;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;500:20:11:-;;;;;;;;;;;;;:::o;284:62::-;322:24;284:62;:::o;220:60::-;257:23;220:60;:::o;4602:317::-;2046:37;322:24;2070:12;:10;:12::i;:::-;2046:10;:37::i;:::-;4750:9:::1;4745:170;4769:7;;:14;;4765:1;:18;4745:170;;;4873:11;:18;4885:5;4873:18;;;;;;;;;;;;;;;4897:7;;4905:1;4897:10;;;;;;;:::i;:::-;;;;;;;;4873:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4785:3;;;;;:::i;:::-;;;;4745:170;;;;4602:317:::0;;;:::o;1431:151:1:-;1521:7;1547:28;1569:5;1547:12;:18;1560:4;1547:18;;;;;;;;;;;:21;;:28;;;;:::i;:::-;1540:35;;1431:151;;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;2027:49::-;2072:4;2027:49;;;:::o;380:48:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1750:140:1:-;1830:7;1856:27;:12;:18;1869:4;1856:18;;;;;;;;;;;:25;:27::i;:::-;1849:34;;1750:140;;;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;454:41:11:-;;;;;;;;;;;;;;;;;;;;;;:::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7612:150:9:-;7682:4;7705:50;7710:3;:10;;7746:5;7730:23;;7722:32;;7705:4;:50::i;:::-;7698:57;;7612:150;;;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;:31;;;;:::i;:::-;;1978:166;;:::o;2233:171::-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:34;2389:7;2363:12;:18;2376:4;2363:18;;;;;;;;;;;:25;;:34;;;;:::i;:::-;;2233:171;;:::o;8870:156:9:-;8944:7;8994:22;8998:3;:10;;9010:5;8994:3;:22::i;:::-;8986:31;;8963:56;;8870:156;;;;:::o;8413:115::-;8476:7;8502:19;8510:3;:10;;8502:7;:19::i;:::-;8495:26;;8413:115;;;:::o;1697:404::-;1760:4;1781:21;1791:3;1796:5;1781:9;:21::i;:::-;1776:319;;1818:3;:11;;1835:5;1818:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1998:3;:11;;:18;;;;1976:3;:12;;:19;1989:5;1976:19;;;;;;;;;;;:40;;;;2037:4;2030:11;;;;1776:319;2079:5;2072:12;;1697:404;;;;;:::o;829:155:7:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;1588:441:6:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;7219:234:0:-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;7930:156:9:-;8003:4;8026:53;8034:3;:10;;8070:5;8054:23;;8046:32;;8026:7;:53::i;:::-;8019:60;;7930:156;;;;:::o;4395:118::-;4462:7;4488:3;:11;;4500:5;4488:18;;;;;;;;:::i;:::-;;;;;;;;;;4481:25;;4395:118;;;;:::o;3946:107::-;4002:7;4028:3;:11;;:18;;;;4021:25;;3946:107;;;:::o;3738:127::-;3811:4;3857:1;3834:3;:12;;:19;3847:5;3834:19;;;;;;;;;;;;:24;;3827:31;;3738:127;;;;:::o;2269:1388::-;2335:4;2451:18;2472:3;:12;;:19;2485:5;2472:19;;;;;;;;;;;;2451:40;;2520:1;2506:10;:15;2502:1149;;2875:21;2912:1;2899:10;:14;;;;:::i;:::-;2875:38;;2927:17;2968:1;2947:3;:11;;:18;;;;:22;;;;:::i;:::-;2927:42;;3001:13;2988:9;:26;2984:398;;3034:17;3054:3;:11;;3066:9;3054:22;;;;;;;;:::i;:::-;;;;;;;;;;3034:42;;3205:9;3176:3;:11;;3188:13;3176:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;3314:10;3288:3;:12;;:23;3301:9;3288:23;;;;;;;;;;;:36;;;;3016:366;2984:398;3460:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3552:3;:12;;:19;3565:5;3552:19;;;;;;;;;;;3545:26;;;3593:4;3586:11;;;;;;;2502:1149;3635:5;3628:12;;;2269:1388;;;;;:::o;88:117:12:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:126::-;1555:7;1595:42;1588:5;1584:54;1573:65;;1518:126;;;:::o;1650:96::-;1687:7;1716:24;1734:5;1716:24;:::i;:::-;1705:35;;1650:96;;;:::o;1752:122::-;1825:24;1843:5;1825:24;:::i;:::-;1818:5;1815:35;1805:63;;1864:1;1861;1854:12;1805:63;1752:122;:::o;1880:139::-;1926:5;1964:6;1951:20;1942:29;;1980:33;2007:5;1980:33;:::i;:::-;1880:139;;;;:::o;2025:329::-;2084:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:119;;;2139:79;;:::i;:::-;2101:119;2259:1;2284:53;2329:7;2320:6;2309:9;2305:22;2284:53;:::i;:::-;2274:63;;2230:117;2025:329;;;;:::o;2360:114::-;2427:6;2461:5;2455:12;2445:22;;2360:114;;;:::o;2480:184::-;2579:11;2613:6;2608:3;2601:19;2653:4;2648:3;2644:14;2629:29;;2480:184;;;;:::o;2670:132::-;2737:4;2760:3;2752:11;;2790:4;2785:3;2781:14;2773:22;;2670:132;;;:::o;2808:77::-;2845:7;2874:5;2863:16;;2808:77;;;:::o;2891:108::-;2968:24;2986:5;2968:24;:::i;:::-;2963:3;2956:37;2891:108;;:::o;3005:179::-;3074:10;3095:46;3137:3;3129:6;3095:46;:::i;:::-;3173:4;3168:3;3164:14;3150:28;;3005:179;;;;:::o;3190:113::-;3260:4;3292;3287:3;3283:14;3275:22;;3190:113;;;:::o;3339:732::-;3458:3;3487:54;3535:5;3487:54;:::i;:::-;3557:86;3636:6;3631:3;3557:86;:::i;:::-;3550:93;;3667:56;3717:5;3667:56;:::i;:::-;3746:7;3777:1;3762:284;3787:6;3784:1;3781:13;3762:284;;;3863:6;3857:13;3890:63;3949:3;3934:13;3890:63;:::i;:::-;3883:70;;3976:60;4029:6;3976:60;:::i;:::-;3966:70;;3822:224;3809:1;3806;3802:9;3797:14;;3762:284;;;3766:14;4062:3;4055:10;;3463:608;;;3339:732;;;;:::o;4077:373::-;4220:4;4258:2;4247:9;4243:18;4235:26;;4307:9;4301:4;4297:20;4293:1;4282:9;4278:17;4271:47;4335:108;4438:4;4429:6;4335:108;:::i;:::-;4327:116;;4077:373;;;;:::o;4456:118::-;4543:24;4561:5;4543:24;:::i;:::-;4538:3;4531:37;4456:118;;:::o;4580:222::-;4673:4;4711:2;4700:9;4696:18;4688:26;;4724:71;4792:1;4781:9;4777:17;4768:6;4724:71;:::i;:::-;4580:222;;;;:::o;4808:77::-;4845:7;4874:5;4863:16;;4808:77;;;:::o;4891:122::-;4964:24;4982:5;4964:24;:::i;:::-;4957:5;4954:35;4944:63;;5003:1;5000;4993:12;4944:63;4891:122;:::o;5019:139::-;5065:5;5103:6;5090:20;5081:29;;5119:33;5146:5;5119:33;:::i;:::-;5019:139;;;;:::o;5164:329::-;5223:6;5272:2;5260:9;5251:7;5247:23;5243:32;5240:119;;;5278:79;;:::i;:::-;5240:119;5398:1;5423:53;5468:7;5459:6;5448:9;5444:22;5423:53;:::i;:::-;5413:63;;5369:117;5164:329;;;;:::o;5499:118::-;5586:24;5604:5;5586:24;:::i;:::-;5581:3;5574:37;5499:118;;:::o;5623:222::-;5716:4;5754:2;5743:9;5739:18;5731:26;;5767:71;5835:1;5824:9;5820:17;5811:6;5767:71;:::i;:::-;5623:222;;;;:::o;5851:474::-;5919:6;5927;5976:2;5964:9;5955:7;5951:23;5947:32;5944:119;;;5982:79;;:::i;:::-;5944:119;6102:1;6127:53;6172:7;6163:6;6152:9;6148:22;6127:53;:::i;:::-;6117:63;;6073:117;6229:2;6255:53;6300:7;6291:6;6280:9;6276:22;6255:53;:::i;:::-;6245:63;;6200:118;5851:474;;;;;:::o;6331:117::-;6440:1;6437;6430:12;6454:117;6563:1;6560;6553:12;6577:117;6686:1;6683;6676:12;6717:568;6790:8;6800:6;6850:3;6843:4;6835:6;6831:17;6827:27;6817:122;;6858:79;;:::i;:::-;6817:122;6971:6;6958:20;6948:30;;7001:18;6993:6;6990:30;6987:117;;;7023:79;;:::i;:::-;6987:117;7137:4;7129:6;7125:17;7113:29;;7191:3;7183:4;7175:6;7171:17;7161:8;7157:32;7154:41;7151:128;;;7198:79;;:::i;:::-;7151:128;6717:568;;;;;:::o;7291:704::-;7386:6;7394;7402;7451:2;7439:9;7430:7;7426:23;7422:32;7419:119;;;7457:79;;:::i;:::-;7419:119;7577:1;7602:53;7647:7;7638:6;7627:9;7623:22;7602:53;:::i;:::-;7592:63;;7548:117;7732:2;7721:9;7717:18;7704:32;7763:18;7755:6;7752:30;7749:117;;;7785:79;;:::i;:::-;7749:117;7898:80;7970:7;7961:6;7950:9;7946:22;7898:80;:::i;:::-;7880:98;;;;7675:313;7291:704;;;;;:::o;8001:60::-;8029:3;8050:5;8043:12;;8001:60;;;:::o;8067:142::-;8117:9;8150:53;8168:34;8177:24;8195:5;8177:24;:::i;:::-;8168:34;:::i;:::-;8150:53;:::i;:::-;8137:66;;8067:142;;;:::o;8215:126::-;8265:9;8298:37;8329:5;8298:37;:::i;:::-;8285:50;;8215:126;;;:::o;8347:144::-;8415:9;8448:37;8479:5;8448:37;:::i;:::-;8435:50;;8347:144;;;:::o;8497:167::-;8602:55;8651:5;8602:55;:::i;:::-;8597:3;8590:68;8497:167;;:::o;8670:258::-;8781:4;8819:2;8808:9;8804:18;8796:26;;8832:89;8918:1;8907:9;8903:17;8894:6;8832:89;:::i;:::-;8670:258;;;;:::o;8934:122::-;9007:24;9025:5;9007:24;:::i;:::-;9000:5;8997:35;8987:63;;9046:1;9043;9036:12;8987:63;8934:122;:::o;9062:139::-;9108:5;9146:6;9133:20;9124:29;;9162:33;9189:5;9162:33;:::i;:::-;9062:139;;;;:::o;9207:474::-;9275:6;9283;9332:2;9320:9;9311:7;9307:23;9303:32;9300:119;;;9338:79;;:::i;:::-;9300:119;9458:1;9483:53;9528:7;9519:6;9508:9;9504:22;9483:53;:::i;:::-;9473:63;;9429:117;9585:2;9611:53;9656:7;9647:6;9636:9;9632:22;9611:53;:::i;:::-;9601:63;;9556:118;9207:474;;;;;:::o;9687:118::-;9774:24;9792:5;9774:24;:::i;:::-;9769:3;9762:37;9687:118;;:::o;9811:222::-;9904:4;9942:2;9931:9;9927:18;9919:26;;9955:71;10023:1;10012:9;10008:17;9999:6;9955:71;:::i;:::-;9811:222;;;;:::o;10039:474::-;10107:6;10115;10164:2;10152:9;10143:7;10139:23;10135:32;10132:119;;;10170:79;;:::i;:::-;10132:119;10290:1;10315:53;10360:7;10351:6;10340:9;10336:22;10315:53;:::i;:::-;10305:63;;10261:117;10417:2;10443:53;10488:7;10479:6;10468:9;10464:22;10443:53;:::i;:::-;10433:63;;10388:118;10039:474;;;;;:::o;10519:329::-;10578:6;10627:2;10615:9;10606:7;10602:23;10598:32;10595:119;;;10633:79;;:::i;:::-;10595:119;10753:1;10778:53;10823:7;10814:6;10803:9;10799:22;10778:53;:::i;:::-;10768:63;;10724:117;10519:329;;;;:::o;10854:180::-;10902:77;10899:1;10892:88;10999:4;10996:1;10989:15;11023:4;11020:1;11013:15;11040:180;11088:77;11085:1;11078:88;11185:4;11182:1;11175:15;11209:4;11206:1;11199:15;11226:180;11274:77;11271:1;11264:88;11371:4;11368:1;11361:15;11395:4;11392:1;11385:15;11412:233;11451:3;11474:24;11492:5;11474:24;:::i;:::-;11465:33;;11520:66;11513:5;11510:77;11507:103;;;11590:18;;:::i;:::-;11507:103;11637:1;11630:5;11626:13;11619:20;;11412:233;;;:::o;11651:169::-;11735:11;11769:6;11764:3;11757:19;11809:4;11804:3;11800:14;11785:29;;11651:169;;;;:::o;11826:178::-;11966:30;11962:1;11954:6;11950:14;11943:54;11826:178;:::o;12010:366::-;12152:3;12173:67;12237:2;12232:3;12173:67;:::i;:::-;12166:74;;12249:93;12338:3;12249:93;:::i;:::-;12367:2;12362:3;12358:12;12351:19;;12010:366;;;:::o;12382:419::-;12548:4;12586:2;12575:9;12571:18;12563:26;;12635:9;12629:4;12625:20;12621:1;12610:9;12606:17;12599:47;12663:131;12789:4;12663:131;:::i;:::-;12655:139;;12382:419;;;:::o;12807:332::-;12928:4;12966:2;12955:9;12951:18;12943:26;;12979:71;13047:1;13036:9;13032:17;13023:6;12979:71;:::i;:::-;13060:72;13128:2;13117:9;13113:18;13104:6;13060:72;:::i;:::-;12807:332;;;;;:::o;13145:117::-;13254:1;13251;13244:12;13268:154;13352:6;13347:3;13342;13329:30;13414:1;13405:6;13400:3;13396:16;13389:27;13268:154;;;:::o;13458:537::-;13586:3;13607:86;13686:6;13681:3;13607:86;:::i;:::-;13600:93;;13717:66;13709:6;13706:78;13703:165;;;13787:79;;:::i;:::-;13703:165;13899:4;13891:6;13887:17;13877:27;;13914:43;13950:6;13945:3;13938:5;13914:43;:::i;:::-;13982:6;13977:3;13973:16;13966:23;;13458:537;;;;;:::o;14001:654::-;14232:4;14270:2;14259:9;14255:18;14247:26;;14319:9;14313:4;14309:20;14305:1;14294:9;14290:17;14283:47;14347:108;14450:4;14441:6;14347:108;:::i;:::-;14339:116;;14502:9;14496:4;14492:20;14487:2;14476:9;14472:18;14465:48;14530:118;14643:4;14634:6;14626;14530:118;:::i;:::-;14522:126;;14001:654;;;;;;:::o;14661:234::-;14801:34;14797:1;14789:6;14785:14;14778:58;14870:17;14865:2;14857:6;14853:15;14846:42;14661:234;:::o;14901:366::-;15043:3;15064:67;15128:2;15123:3;15064:67;:::i;:::-;15057:74;;15140:93;15229:3;15140:93;:::i;:::-;15258:2;15253:3;15249:12;15242:19;;14901:366;;;:::o;15273:419::-;15439:4;15477:2;15466:9;15462:18;15454:26;;15526:9;15520:4;15516:20;15512:1;15501:9;15497:17;15490:47;15554:131;15680:4;15554:131;:::i;:::-;15546:139;;15273:419;;;:::o;15698:148::-;15800:11;15837:3;15822:18;;15698:148;;;;:::o;15852:173::-;15992:25;15988:1;15980:6;15976:14;15969:49;15852:173;:::o;16031:402::-;16191:3;16212:85;16294:2;16289:3;16212:85;:::i;:::-;16205:92;;16306:93;16395:3;16306:93;:::i;:::-;16424:2;16419:3;16415:12;16408:19;;16031:402;;;:::o;16439:99::-;16491:6;16525:5;16519:12;16509:22;;16439:99;;;:::o;16544:307::-;16612:1;16622:113;16636:6;16633:1;16630:13;16622:113;;;16721:1;16716:3;16712:11;16706:18;16702:1;16697:3;16693:11;16686:39;16658:2;16655:1;16651:10;16646:15;;16622:113;;;16753:6;16750:1;16747:13;16744:101;;;16833:1;16824:6;16819:3;16815:16;16808:27;16744:101;16593:258;16544:307;;;:::o;16857:377::-;16963:3;16991:39;17024:5;16991:39;:::i;:::-;17046:89;17128:6;17123:3;17046:89;:::i;:::-;17039:96;;17144:52;17189:6;17184:3;17177:4;17170:5;17166:16;17144:52;:::i;:::-;17221:6;17216:3;17212:16;17205:23;;16967:267;16857:377;;;;:::o;17240:167::-;17380:19;17376:1;17368:6;17364:14;17357:43;17240:167;:::o;17413:402::-;17573:3;17594:85;17676:2;17671:3;17594:85;:::i;:::-;17587:92;;17688:93;17777:3;17688:93;:::i;:::-;17806:2;17801:3;17797:12;17790:19;;17413:402;;;:::o;17821:967::-;18203:3;18225:148;18369:3;18225:148;:::i;:::-;18218:155;;18390:95;18481:3;18472:6;18390:95;:::i;:::-;18383:102;;18502:148;18646:3;18502:148;:::i;:::-;18495:155;;18667:95;18758:3;18749:6;18667:95;:::i;:::-;18660:102;;18779:3;18772:10;;17821:967;;;;;:::o;18794:102::-;18835:6;18886:2;18882:7;18877:2;18870:5;18866:14;18862:28;18852:38;;18794:102;;;:::o;18902:364::-;18990:3;19018:39;19051:5;19018:39;:::i;:::-;19073:71;19137:6;19132:3;19073:71;:::i;:::-;19066:78;;19153:52;19198:6;19193:3;19186:4;19179:5;19175:16;19153:52;:::i;:::-;19230:29;19252:6;19230:29;:::i;:::-;19225:3;19221:39;19214:46;;18994:272;18902:364;;;;:::o;19272:313::-;19385:4;19423:2;19412:9;19408:18;19400:26;;19472:9;19466:4;19462:20;19458:1;19447:9;19443:17;19436:47;19500:78;19573:4;19564:6;19500:78;:::i;:::-;19492:86;;19272:313;;;;:::o;19591:348::-;19631:7;19654:20;19672:1;19654:20;:::i;:::-;19649:25;;19688:20;19706:1;19688:20;:::i;:::-;19683:25;;19876:1;19808:66;19804:74;19801:1;19798:81;19793:1;19786:9;19779:17;19775:105;19772:131;;;19883:18;;:::i;:::-;19772:131;19931:1;19928;19924:9;19913:20;;19591:348;;;;:::o;19945:305::-;19985:3;20004:20;20022:1;20004:20;:::i;:::-;19999:25;;20038:20;20056:1;20038:20;:::i;:::-;20033:25;;20192:1;20124:66;20120:74;20117:1;20114:81;20111:107;;;20198:18;;:::i;:::-;20111:107;20242:1;20239;20235:9;20228:16;;19945:305;;;;:::o;20256:171::-;20295:3;20318:24;20336:5;20318:24;:::i;:::-;20309:33;;20364:4;20357:5;20354:15;20351:41;;;20372:18;;:::i;:::-;20351:41;20419:1;20412:5;20408:13;20401:20;;20256:171;;;:::o;20433:182::-;20573:34;20569:1;20561:6;20557:14;20550:58;20433:182;:::o;20621:366::-;20763:3;20784:67;20848:2;20843:3;20784:67;:::i;:::-;20777:74;;20860:93;20949:3;20860:93;:::i;:::-;20978:2;20973:3;20969:12;20962:19;;20621:366;;;:::o;20993:419::-;21159:4;21197:2;21186:9;21182:18;21174:26;;21246:9;21240:4;21236:20;21232:1;21221:9;21217:17;21210:47;21274:131;21400:4;21274:131;:::i;:::-;21266:139;;20993:419;;;:::o;21418:191::-;21458:4;21478:20;21496:1;21478:20;:::i;:::-;21473:25;;21512:20;21530:1;21512:20;:::i;:::-;21507:25;;21551:1;21548;21545:8;21542:34;;;21556:18;;:::i;:::-;21542:34;21601:1;21598;21594:9;21586:17;;21418:191;;;;:::o;21615:180::-;21663:77;21660:1;21653:88;21760:4;21757:1;21750:15;21784:4;21781:1;21774:15", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"../interfaces/IBEERC721.sol\";\n\ncontract NftDistributor is AccessControlEnumerable {\n bytes32 public constant ADMIN_ROLE = keccak256(\"ADMIN_ROLE\");\n bytes32 public constant MANAGE_ROLE = keccak256(\"MANAGE_ROLE\");\n\n // user address => nft ids\n mapping(address => uint256[]) public ownerToNFTs;\n // nft id => minted\n mapping(uint256 => bool) public nftMinted;\n\n IBEERC721 public nft;\n\n event Minted(\n address indexed user,\n address indexed nft,\n uint256[] nftSIds,\n uint256[] nftTIds\n );\n\n /**\n * @dev Contract constructor.\n *\n * Initializes the contract with the specified addresses and sets the admin and management roles.\n *\n * Parameters:\n * - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE\n * - _nftSource: The address of the source NFT that will check if user has mint permission.\n * - _manageAddress: The address that will have the MANAGE_ROLE assigned.\n */\n constructor(address _nftTarget, address[] memory _manageAddress) {\n // Set up the ADMIN_ROLE and MANAGE_ROLE\n _setRoleAdmin(ADMIN_ROLE, ADMIN_ROLE);\n _setRoleAdmin(MANAGE_ROLE, ADMIN_ROLE);\n\n // Grant the ADMIN_ROLE to the deployer and to the contract itself\n _setupRole(ADMIN_ROLE, _msgSender());\n _setupRole(ADMIN_ROLE, address(this));\n\n // Grant the MANAGE_ROLE to the specified address\n for (uint256 i = 0; i < _manageAddress.length; ++i) {\n _setupRole(MANAGE_ROLE, _manageAddress[i]);\n }\n\n // Initialize the nft contract with IBEERC721 interface\n nft = IBEERC721(_nftTarget);\n }\n\n /**\n * @dev Modifier that checks if the caller has the MANAGE_ROLE.\n *\n * The function uses the _checkRole() function from the AccessControl library.\n * If the check is successful, the code defined by the function that uses this modifier is executed.\n */\n modifier onlyManager() {\n // Check if the caller has the MANAGE_ROLE\n _checkRole(MANAGE_ROLE, _msgSender());\n // If the check is successful, execute the code in the function that uses this modifier\n _;\n }\n\n /**\n * @dev The mintToUser function mints NFTs to a given user.\n *\n * Only functions called by an address with the MANAGE_ROLE permission can access this function.\n * The function takes an array of nftIds and checks that there are enough mintable NFTs for the user.\n * It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted.\n * Then it emits the Minted event with details of the operation.\n *\n * @param _user - The address of the user receiving the NFTs\n * @param _nftIds - An array of the IDs for the NFTs being minted\n */\n function mintToUser(\n address _user,\n uint256[] calldata _nftIds\n ) external onlyManager {\n // Check that there are enough mintable NFTs\n require(\n _nftIds.length <= getMintableCount(_user),\n \"Mintable count is not enough\"\n );\n // Get the array of the user's owned NFTs\n uint256[] memory nfts = ownerToNFTs[_user];\n // Initialize variables\n uint256 index = 0;\n uint256[] memory nftSource = new uint256[](_nftIds.length);\n\n // Loop through the user's owned NFTs\n for (uint256 i = 0; i < nfts.length; i++) {\n uint256 nftSId = nfts[i];\n\n // Check if the NFT is mintable\n if (!nftMinted[nftSId]) {\n // If the NFT is mintable, add it to the list to be minted\n uint256 nftId = _nftIds[index];\n // Add the NFT's source ID to the list of sources\n nftSource[index] = nftSId;\n nftMinted[nftSId] = true;\n // Mint the NFT to the user's address\n nft.mint(_user, nftId);\n index++;\n }\n }\n // Emit event with details of the minting operation\n emit Minted(_user, address(nft), nftSource, _nftIds);\n }\n\n /**\n * @dev The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user.\n * mintToUser method would check if target user had permission to mint NFTs.\n *\n * Only functions called by an address with the MANAGE_ROLE permission can access this function.\n * The function takes in the address of the user and an array of NFT IDs. It then loops through the array\n * of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.\n *\n * @param _user - The address of the user being updated with new NFT data\n * @param _nftIds - An array of NFT IDs being added to the user's NFT data\n */\n function addNFTData(\n address _user,\n uint256[] calldata _nftIds\n ) external onlyManager {\n // Loop through the array of NFT IDs\n for (uint256 i = 0; i < _nftIds.length; i++) {\n // Add each NFT ID to the end of the array of NFTs owned by the user\n ownerToNFTs[_user].push(_nftIds[i]);\n }\n }\n\n /**\n * @dev The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted.\n *\n * This is a read-only function, meaning it doesn't modify the state of the blockchain.\n * It takes in the address of the user whose mintable count is being determined,\n * and returns the number of NFTs owned by the user that have not yet been minted.\n *\n * @param _user - The address of the user whose mintable count is being determined\n * @return count - The number of NFTs owned by the user that have not yet been minted\n */\n function getMintableCount(address _user) public view returns (uint256) {\n // Get an array of all NFT IDs owned by the user\n uint256[] memory nfts = ownerToNFTs[_user];\n // Initialize count to zero\n uint256 count = 0;\n // Loop through the array of NFT IDs\n for (uint256 i = 0; i < nfts.length; i++) {\n // Get the NFT ID at this index of the loop\n uint256 nftAId = nfts[i];\n // Check if the NFT has not yet been minted\n if (!nftMinted[nftAId]) {\n // If the NFT has not yet been minted, increment the mintable count\n count++;\n }\n }\n // Return the final mintable count\n return count;\n }\n\n /**\n * @dev The getMintableNftIds function gets an array of NFT IDs owned by a user that have not yet been minted.\n *\n * This is a read-only function, meaning it doesn't modify the state of the blockchain.\n * It takes in the address of the user whose mintable NFT IDs are being determined,\n * and returns an array of the NFT IDs owned by the user that have not yet been minted.\n *\n * @param _user - The address of the user whose mintable NFT IDs are being determined\n * @return mintableNftIds - An array of the NFT IDs owned by the user that have not yet been minted\n */\n function getMintableNftIds(\n address _user\n ) external view returns (uint256[] memory) {\n // Get an array of all NFT IDs owned by the user\n uint256[] memory nfts = ownerToNFTs[_user];\n // Initialize an array for mintable NFT IDs with the same length as the array of all NFT IDs\n uint256[] memory mintableNftIds = new uint256[](nfts.length);\n // Initialize an index counter to zero\n uint256 index = 0;\n // Loop through the array of NFT IDs\n for (uint256 i = 0; i < nfts.length; i++) {\n // Get the NFT ID at this index of the loop\n uint256 nftId = nfts[i];\n // Check if the NFT has not yet been minted\n if (!nftMinted[nftId]) {\n // If the NFT has not yet been minted, add it to the mintable NFT IDs array\n mintableNftIds[index] = nftId;\n // Increment the index counter\n index++;\n }\n }\n // Return the array of mintable NFT IDs\n return mintableNftIds;\n }\n}\n", "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/logic/NftDistributor.sol", "ast": { "absolutePath": "project:/contracts/logic/NftDistributor.sol", @@ -11296,13 +12943,13 @@ 647 ], "NftDistributor": [ - 1920 + 1928 ], "Strings": [ 872 ] }, - "id": 1921, + "id": 1929, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ @@ -11322,7 +12969,7 @@ "id": 1552, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", - "scope": 1921, + "scope": 1929, "sourceUnit": 434, "src": "57:68:11", "symbolAliases": [], @@ -11334,7 +12981,7 @@ "id": 1553, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", - "scope": 1921, + "scope": 1929, "sourceUnit": 1550, "src": "126:37:11", "symbolAliases": [], @@ -11360,9 +13007,9 @@ "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, - "id": 1920, + "id": 1928, "linearizedBaseContracts": [ - 1920, + 1928, 433, 308, 896, @@ -11383,7 +13030,7 @@ "name": "ADMIN_ROLE", "nameLocation": "244:10:11", "nodeType": "VariableDeclaration", - "scope": 1920, + "scope": 1928, "src": "220:60:11", "stateVariable": true, "storageLocation": "default", @@ -11463,7 +13110,7 @@ "name": "MANAGE_ROLE", "nameLocation": "308:11:11", "nodeType": "VariableDeclaration", - "scope": 1920, + "scope": 1928, "src": "284:62:11", "stateVariable": true, "storageLocation": "default", @@ -11543,7 +13190,7 @@ "name": "ownerToNFTs", "nameLocation": "417:11:11", "nodeType": "VariableDeclaration", - "scope": 1920, + "scope": 1928, "src": "380:48:11", "stateVariable": true, "storageLocation": "default", @@ -11599,7 +13246,7 @@ "name": "nftMinted", "nameLocation": "486:9:11", "nodeType": "VariableDeclaration", - "scope": 1920, + "scope": 1928, "src": "454:41:11", "stateVariable": true, "storageLocation": "default", @@ -11646,7 +13293,7 @@ "name": "nft", "nameLocation": "517:3:11", "nodeType": "VariableDeclaration", - "scope": 1920, + "scope": 1928, "src": "500:20:11", "stateVariable": true, "storageLocation": "default", @@ -11673,55 +13320,55 @@ }, "visibility": "public" }, - { - "constant": false, - "functionSelector": "67e828bf", - "id": 1579, - "mutability": "mutable", - "name": "source", - "nameLocation": "539:6:11", - "nodeType": "VariableDeclaration", - "scope": 1920, - "src": "524:21:11", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1578, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "524:7:11", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, { "anonymous": false, - "id": 1591, + "id": 1589, "name": "Minted", - "nameLocation": "556:6:11", + "nameLocation": "531:6:11", "nodeType": "EventDefinition", "parameters": { - "id": 1590, + "id": 1588, "nodeType": "ParameterList", "parameters": [ + { + "constant": false, + "id": 1579, + "indexed": true, + "mutability": "mutable", + "name": "user", + "nameLocation": "559:4:11", + "nodeType": "VariableDeclaration", + "scope": 1589, + "src": "543:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "543:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, { "constant": false, "id": 1581, "indexed": true, "mutability": "mutable", - "name": "user", - "nameLocation": "584:4:11", + "name": "nft", + "nameLocation": "585:3:11", "nodeType": "VariableDeclaration", - "scope": 1591, - "src": "568:20:11", + "scope": 1589, + "src": "569:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11732,7 +13379,7 @@ "id": 1580, "name": "address", "nodeType": "ElementaryTypeName", - "src": "568:7:11", + "src": "569:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11743,43 +13390,14 @@ }, { "constant": false, - "id": 1583, - "indexed": true, - "mutability": "mutable", - "name": "nft", - "nameLocation": "610:3:11", - "nodeType": "VariableDeclaration", - "scope": 1591, - "src": "594:19:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1582, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "594:7:11", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1586, + "id": 1584, "indexed": false, "mutability": "mutable", "name": "nftSIds", - "nameLocation": "629:7:11", + "nameLocation": "604:7:11", "nodeType": "VariableDeclaration", - "scope": 1591, - "src": "619:17:11", + "scope": 1589, + "src": "594:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11788,18 +13406,18 @@ }, "typeName": { "baseType": { - "id": 1584, + "id": 1582, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "619:7:11", + "src": "594:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1585, + "id": 1583, "nodeType": "ArrayTypeName", - "src": "619:9:11", + "src": "594:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -11809,14 +13427,14 @@ }, { "constant": false, - "id": 1589, + "id": 1587, "indexed": false, "mutability": "mutable", "name": "nftTIds", - "nameLocation": "652:7:11", + "nameLocation": "627:7:11", "nodeType": "VariableDeclaration", - "scope": 1591, - "src": "642:17:11", + "scope": 1589, + "src": "617:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11825,18 +13443,18 @@ }, "typeName": { "baseType": { - "id": 1587, + "id": 1585, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "642:7:11", + "src": "617:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1588, + "id": 1586, "nodeType": "ArrayTypeName", - "src": "642:9:11", + "src": "617:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -11845,38 +13463,38 @@ "visibility": "internal" } ], - "src": "562:101:11" + "src": "537:101:11" }, - "src": "550:114:11" + "src": "525:114:11" }, { "body": { - "id": 1640, + "id": 1648, "nodeType": "Block", - "src": "1178:553:11", + "src": "1142:557:11", "statements": [ { "expression": { "arguments": [ { - "id": 1602, + "id": 1599, "name": "ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1560, - "src": "1243:10:11", + "src": "1207:10:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 1603, + "id": 1600, "name": "ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1560, - "src": "1255:10:11", + "src": "1219:10:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -11894,18 +13512,18 @@ "typeString": "bytes32" } ], - "id": 1601, + "id": 1598, "name": "_setRoleAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1229:13:11", + "src": "1193:13:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32)" } }, - "id": 1604, + "id": 1601, "isConstant": false, "isLValue": false, "isPure": false, @@ -11913,39 +13531,39 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1229:37:11", + "src": "1193:37:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1605, + "id": 1602, "nodeType": "ExpressionStatement", - "src": "1229:37:11" + "src": "1193:37:11" }, { "expression": { "arguments": [ { - "id": 1607, + "id": 1604, "name": "MANAGE_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1565, - "src": "1286:11:11", + "src": "1250:11:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 1608, + "id": 1605, "name": "ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1560, - "src": "1299:10:11", + "src": "1263:10:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -11963,18 +13581,18 @@ "typeString": "bytes32" } ], - "id": 1606, + "id": 1603, "name": "_setRoleAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "1272:13:11", + "src": "1236:13:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32)" } }, - "id": 1609, + "id": 1606, "isConstant": false, "isLValue": false, "isPure": false, @@ -11982,27 +13600,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1272:38:11", + "src": "1236:38:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1610, + "id": 1607, "nodeType": "ExpressionStatement", - "src": "1272:38:11" + "src": "1236:38:11" }, { "expression": { "arguments": [ { - "id": 1612, + "id": 1609, "name": "ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1560, - "src": "1399:10:11", + "src": "1363:10:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -12012,18 +13630,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1613, + "id": 1610, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 659, - "src": "1411:10:11", + "src": "1375:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 1614, + "id": 1611, "isConstant": false, "isLValue": false, "isPure": false, @@ -12031,7 +13649,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1411:12:11", + "src": "1375:12:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -12050,18 +13668,18 @@ "typeString": "address" } ], - "id": 1611, + "id": 1608, "name": "_setupRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 216, - "src": "1388:10:11", + "src": "1352:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 1615, + "id": 1612, "isConstant": false, "isLValue": false, "isPure": false, @@ -12069,27 +13687,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1388:36:11", + "src": "1352:36:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1616, + "id": 1613, "nodeType": "ExpressionStatement", - "src": "1388:36:11" + "src": "1352:36:11" }, { "expression": { "arguments": [ { - "id": 1618, + "id": 1615, "name": "ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1560, - "src": "1441:10:11", + "src": "1405:10:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -12098,14 +13716,14 @@ { "arguments": [ { - "id": 1621, + "id": 1618, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967268, - "src": "1461:4:11", + "src": "1425:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_NftDistributor_$1920", + "typeIdentifier": "t_contract$_NftDistributor_$1928", "typeString": "contract NftDistributor" } } @@ -12113,30 +13731,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_NftDistributor_$1920", + "typeIdentifier": "t_contract$_NftDistributor_$1928", "typeString": "contract NftDistributor" } ], - "id": 1620, + "id": 1617, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1453:7:11", + "src": "1417:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1619, + "id": 1616, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1453:7:11", + "src": "1417:7:11", "typeDescriptions": {} } }, - "id": 1622, + "id": 1619, "isConstant": false, "isLValue": false, "isPure": false, @@ -12144,7 +13762,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1453:13:11", + "src": "1417:13:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -12163,18 +13781,18 @@ "typeString": "address" } ], - "id": 1617, + "id": 1614, "name": "_setupRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 216, - "src": "1430:10:11", + "src": "1394:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 1623, + "id": 1620, "isConstant": false, "isLValue": false, "isPure": false, @@ -12182,100 +13800,278 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1430:37:11", + "src": "1394:37:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1624, + "id": 1621, "nodeType": "ExpressionStatement", - "src": "1430:37:11" + "src": "1394:37:11" }, { - "expression": { - "arguments": [ - { - "id": 1626, - "name": "MANAGE_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1565, - "src": "1539:11:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, + "body": { + "id": 1640, + "nodeType": "Block", + "src": "1544:57:11", + "statements": [ { + "expression": { + "arguments": [ + { + "id": 1634, + "name": "MANAGE_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "1563:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "baseExpression": { + "id": 1635, + "name": "_manageAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "1576:14:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1637, + "indexExpression": { + "id": 1636, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "1591:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1576:17:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1633, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "1552:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1552:42:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1639, + "nodeType": "ExpressionStatement", + "src": "1552:42:11" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1626, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "1512:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { "id": 1627, "name": "_manageAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1598, - "src": "1552:14:11", + "referencedDeclaration": 1595, + "src": "1516:14:11", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1625, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "1528:10:11", + }, + "id": 1628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1516:21:11", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1528:39:11", - "tryCall": false, + "src": "1512:25:11", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1629, - "nodeType": "ExpressionStatement", - "src": "1528:39:11" + "id": 1641, + "initializationExpression": { + "assignments": [ + 1623 + ], + "declarations": [ + { + "constant": false, + "id": 1623, + "mutability": "mutable", + "name": "i", + "nameLocation": "1505:1:11", + "nodeType": "VariableDeclaration", + "scope": 1641, + "src": "1497:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1497:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1625, + "initialValue": { + "hexValue": "30", + "id": 1624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1509:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1497:13:11" + }, + "loopExpression": { + "expression": { + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "1539:3:11", + "subExpression": { + "id": 1630, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "1541:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1632, + "nodeType": "ExpressionStatement", + "src": "1539:3:11" + }, + "nodeType": "ForStatement", + "src": "1492:109:11" }, { "expression": { - "id": 1634, + "id": 1646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 1630, + "id": 1642, "name": "nft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1577, - "src": "1634:3:11", + "src": "1667:3:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IBEERC721_$1549", "typeString": "contract IBEERC721" @@ -12286,12 +14082,12 @@ "rightHandSide": { "arguments": [ { - "id": 1632, + "id": 1644, "name": "_nftTarget", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1594, - "src": "1650:10:11", + "referencedDeclaration": 1592, + "src": "1683:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12305,18 +14101,18 @@ "typeString": "address" } ], - "id": 1631, + "id": 1643, "name": "IBEERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1549, - "src": "1640:9:11", + "src": "1673:9:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IBEERC721_$1549_$", "typeString": "type(contract IBEERC721)" } }, - "id": 1633, + "id": 1645, "isConstant": false, "isLValue": false, "isPure": false, @@ -12324,75 +14120,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1640:21:11", + "src": "1673:21:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IBEERC721_$1549", "typeString": "contract IBEERC721" } }, - "src": "1634:27:11", + "src": "1667:27:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IBEERC721_$1549", "typeString": "contract IBEERC721" } }, - "id": 1635, + "id": 1647, "nodeType": "ExpressionStatement", - "src": "1634:27:11" - }, - { - "expression": { - "id": 1638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1636, - "name": "source", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "1707:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1637, - "name": "_nftSource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1596, - "src": "1716:10:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1707:19:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1639, - "nodeType": "ExpressionStatement", - "src": "1707:19:11" + "src": "1667:27:11" } ] }, "documentation": { - "id": 1592, + "id": 1590, "nodeType": "StructuredDocumentation", - "src": "668:431:11", + "src": "643:431:11", "text": " @dev Contract constructor.\n Initializes the contract with the specified addresses and sets the admin and management roles.\n Parameters:\n - _nftTarget: The address of NFT that will be minted by this contract. Need MINTER_ROLE\n - _nftSource: The address of the source NFT that will check if user has mint permission.\n - _manageAddress: The address that will have the MANAGE_ROLE assigned." }, - "id": 1641, + "id": 1649, "implemented": true, "kind": "constructor", "modifiers": [], @@ -12400,18 +14153,18 @@ "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { - "id": 1599, + "id": 1596, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1594, + "id": 1592, "mutability": "mutable", "name": "_nftTarget", - "nameLocation": "1122:10:11", + "nameLocation": "1097:10:11", "nodeType": "VariableDeclaration", - "scope": 1641, - "src": "1114:18:11", + "scope": 1649, + "src": "1089:18:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12419,10 +14172,10 @@ "typeString": "address" }, "typeName": { - "id": 1593, + "id": 1591, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1114:7:11", + "src": "1089:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12433,91 +14186,72 @@ }, { "constant": false, - "id": 1596, - "mutability": "mutable", - "name": "_nftSource", - "nameLocation": "1142:10:11", - "nodeType": "VariableDeclaration", - "scope": 1641, - "src": "1134:18:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1595, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1134:7:11", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1598, + "id": 1595, "mutability": "mutable", "name": "_manageAddress", - "nameLocation": "1162:14:11", + "nameLocation": "1126:14:11", "nodeType": "VariableDeclaration", - "scope": 1641, - "src": "1154:22:11", + "scope": 1649, + "src": "1109:31:11", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" }, "typeName": { - "id": 1597, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1154:7:11", - "stateMutability": "nonpayable", + "baseType": { + "id": 1593, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1109:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1594, + "nodeType": "ArrayTypeName", + "src": "1109:9:11", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } }, "visibility": "internal" } ], - "src": "1113:64:11" + "src": "1088:53:11" }, "returnParameters": { - "id": 1600, + "id": 1597, "nodeType": "ParameterList", "parameters": [], - "src": "1178:0:11" + "src": "1142:0:11" }, - "scope": 1920, - "src": "1102:629:11", + "scope": 1928, + "src": "1077:622:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { - "id": 1651, + "id": 1659, "nodeType": "Block", - "src": "2025:194:11", + "src": "1993:194:11", "statements": [ { "expression": { "arguments": [ { - "id": 1645, + "id": 1653, "name": "MANAGE_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1565, - "src": "2089:11:11", + "src": "2057:11:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -12527,18 +14261,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1646, + "id": 1654, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 659, - "src": "2102:10:11", + "src": "2070:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 1647, + "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, @@ -12546,7 +14280,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2102:12:11", + "src": "2070:12:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -12565,18 +14299,18 @@ "typeString": "address" } ], - "id": 1644, + "id": 1652, "name": "_checkRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 124, - "src": "2078:10:11", + "src": "2046:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address) view" } }, - "id": 1648, + "id": 1656, "isConstant": false, "isLValue": false, "isPure": false, @@ -12584,49 +14318,49 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2078:37:11", + "src": "2046:37:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1649, + "id": 1657, "nodeType": "ExpressionStatement", - "src": "2078:37:11" + "src": "2046:37:11" }, { - "id": 1650, + "id": 1658, "nodeType": "PlaceholderStatement", - "src": "2213:1:11" + "src": "2181:1:11" } ] }, "documentation": { - "id": 1642, + "id": 1650, "nodeType": "StructuredDocumentation", - "src": "1735:264:11", + "src": "1703:264:11", "text": " @dev Modifier that checks if the caller has the MANAGE_ROLE.\n The function uses the _checkRole() function from the AccessControl library.\n If the check is successful, the code defined by the function that uses this modifier is executed." }, - "id": 1652, + "id": 1660, "name": "onlyManager", - "nameLocation": "2011:11:11", + "nameLocation": "1979:11:11", "nodeType": "ModifierDefinition", "parameters": { - "id": 1643, + "id": 1651, "nodeType": "ParameterList", "parameters": [], - "src": "2022:2:11" + "src": "1990:2:11" }, - "src": "2002:217:11", + "src": "1970:217:11", "virtual": false, "visibility": "internal" }, { "body": { - "id": 1761, + "id": 1769, "nodeType": "Block", - "src": "2927:1020:11", + "src": "2895:1020:11", "statements": [ { "expression": { @@ -12636,32 +14370,32 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1669, + "id": 1677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 1664, + "id": 1672, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1658, - "src": "2997:7:11", + "referencedDeclaration": 1666, + "src": "2965:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 1665, + "id": 1673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "2997:14:11", + "src": "2965:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12672,12 +14406,12 @@ "rightExpression": { "arguments": [ { - "id": 1667, + "id": 1675, "name": "_user", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1655, - "src": "3032:5:11", + "referencedDeclaration": 1663, + "src": "3000:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12691,18 +14425,18 @@ "typeString": "address" } ], - "id": 1666, + "id": 1674, "name": "getMintableCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1848, - "src": "3015:16:11", + "referencedDeclaration": 1856, + "src": "2983:16:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view returns (uint256)" } }, - "id": 1668, + "id": 1676, "isConstant": false, "isLValue": false, "isPure": false, @@ -12710,14 +14444,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3015:23:11", + "src": "2983:23:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2997:41:11", + "src": "2965:41:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12725,14 +14459,14 @@ }, { "hexValue": "4d696e7461626c6520636f756e74206973206e6f7420656e6f756768", - "id": 1670, + "id": 1678, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3046:30:11", + "src": "3014:30:11", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c0532a597c4fcdca619b8bd483d77a931af948aaf6338ee552604b6087393e08", "typeString": "literal_string \"Mintable count is not enough\"" @@ -12751,7 +14485,7 @@ "typeString": "literal_string \"Mintable count is not enough\"" } ], - "id": 1663, + "id": 1671, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -12759,13 +14493,13 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "2982:7:11", + "src": "2950:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 1671, + "id": 1679, "isConstant": false, "isLValue": false, "isPure": false, @@ -12773,31 +14507,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2982:100:11", + "src": "2950:100:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1672, + "id": 1680, "nodeType": "ExpressionStatement", - "src": "2982:100:11" + "src": "2950:100:11" }, { "assignments": [ - 1677 + 1685 ], "declarations": [ { "constant": false, - "id": 1677, + "id": 1685, "mutability": "mutable", "name": "nfts", - "nameLocation": "3151:4:11", + "nameLocation": "3119:4:11", "nodeType": "VariableDeclaration", - "scope": 1761, - "src": "3134:21:11", + "scope": 1769, + "src": "3102:21:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -12806,18 +14540,18 @@ }, "typeName": { "baseType": { - "id": 1675, + "id": 1683, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3134:7:11", + "src": "3102:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1676, + "id": 1684, "nodeType": "ArrayTypeName", - "src": "3134:9:11", + "src": "3102:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -12826,28 +14560,28 @@ "visibility": "internal" } ], - "id": 1681, + "id": 1689, "initialValue": { "baseExpression": { - "id": 1678, + "id": 1686, "name": "ownerToNFTs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1570, - "src": "3158:11:11", + "src": "3126:11:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[] storage ref)" } }, - "id": 1680, + "id": 1688, "indexExpression": { - "id": 1679, + "id": 1687, "name": "_user", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1655, - "src": "3170:5:11", + "referencedDeclaration": 1663, + "src": "3138:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12858,29 +14592,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3158:18:11", + "src": "3126:18:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "3134:42:11" + "src": "3102:42:11" }, { "assignments": [ - 1683 + 1691 ], "declarations": [ { "constant": false, - "id": 1683, + "id": 1691, "mutability": "mutable", "name": "index", - "nameLocation": "3218:5:11", + "nameLocation": "3186:5:11", "nodeType": "VariableDeclaration", - "scope": 1761, - "src": "3210:13:11", + "scope": 1769, + "src": "3178:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12888,10 +14622,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1682, + "id": 1690, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3210:7:11", + "src": "3178:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12900,17 +14634,17 @@ "visibility": "internal" } ], - "id": 1685, + "id": 1693, "initialValue": { "hexValue": "30", - "id": 1684, + "id": 1692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3226:1:11", + "src": "3194:1:11", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -12918,22 +14652,22 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3210:17:11" + "src": "3178:17:11" }, { "assignments": [ - 1690 + 1698 ], "declarations": [ { "constant": false, - "id": 1690, + "id": 1698, "mutability": "mutable", "name": "nftSource", - "nameLocation": "3250:9:11", + "nameLocation": "3218:9:11", "nodeType": "VariableDeclaration", - "scope": 1761, - "src": "3233:26:11", + "scope": 1769, + "src": "3201:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -12942,18 +14676,18 @@ }, "typeName": { "baseType": { - "id": 1688, + "id": 1696, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3233:7:11", + "src": "3201:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1689, + "id": 1697, "nodeType": "ArrayTypeName", - "src": "3233:9:11", + "src": "3201:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -12962,30 +14696,30 @@ "visibility": "internal" } ], - "id": 1697, + "id": 1705, "initialValue": { "arguments": [ { "expression": { - "id": 1694, + "id": 1702, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1658, - "src": "3276:7:11", + "referencedDeclaration": 1666, + "src": "3244:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 1695, + "id": 1703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "3276:14:11", + "src": "3244:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12999,38 +14733,38 @@ "typeString": "uint256" } ], - "id": 1693, + "id": 1701, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "3262:13:11", + "src": "3230:13:11", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint256[] memory)" }, "typeName": { "baseType": { - "id": 1691, + "id": 1699, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3266:7:11", + "src": "3234:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1692, + "id": 1700, "nodeType": "ArrayTypeName", - "src": "3266:9:11", + "src": "3234:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } } }, - "id": 1696, + "id": 1704, "isConstant": false, "isLValue": false, "isPure": false, @@ -13038,7 +14772,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3262:29:11", + "src": "3230:29:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -13046,28 +14780,28 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3233:58:11" + "src": "3201:58:11" }, { "body": { - "id": 1749, + "id": 1757, "nodeType": "Block", - "src": "3382:447:11", + "src": "3350:447:11", "statements": [ { "assignments": [ - 1710 + 1718 ], "declarations": [ { "constant": false, - "id": 1710, + "id": 1718, "mutability": "mutable", "name": "nftSId", - "nameLocation": "3398:6:11", + "nameLocation": "3366:6:11", "nodeType": "VariableDeclaration", - "scope": 1749, - "src": "3390:14:11", + "scope": 1757, + "src": "3358:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13075,10 +14809,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1709, + "id": 1717, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3390:7:11", + "src": "3358:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13087,28 +14821,28 @@ "visibility": "internal" } ], - "id": 1714, + "id": 1722, "initialValue": { "baseExpression": { - "id": 1711, + "id": 1719, "name": "nfts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "3407:4:11", + "referencedDeclaration": 1685, + "src": "3375:4:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1713, + "id": 1721, "indexExpression": { - "id": 1712, + "id": 1720, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1699, - "src": "3412:1:11", + "referencedDeclaration": 1707, + "src": "3380:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13119,18 +14853,18 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3407:7:11", + "src": "3375:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3390:24:11" + "src": "3358:24:11" }, { "condition": { - "id": 1718, + "id": 1726, "isConstant": false, "isLValue": false, "isPure": false, @@ -13138,28 +14872,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3465:18:11", + "src": "3433:18:11", "subExpression": { "baseExpression": { - "id": 1715, + "id": 1723, "name": "nftMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1574, - "src": "3466:9:11", + "src": "3434:9:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 1717, + "id": 1725, "indexExpression": { - "id": 1716, + "id": 1724, "name": "nftSId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1710, - "src": "3476:6:11", + "referencedDeclaration": 1718, + "src": "3444:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13170,7 +14904,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3466:17:11", + "src": "3434:17:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13181,28 +14915,28 @@ "typeString": "bool" } }, - "id": 1748, + "id": 1756, "nodeType": "IfStatement", - "src": "3461:362:11", + "src": "3429:362:11", "trueBody": { - "id": 1747, + "id": 1755, "nodeType": "Block", - "src": "3485:338:11", + "src": "3453:338:11", "statements": [ { "assignments": [ - 1720 + 1728 ], "declarations": [ { "constant": false, - "id": 1720, + "id": 1728, "mutability": "mutable", "name": "nftId", - "nameLocation": "3570:5:11", + "nameLocation": "3538:5:11", "nodeType": "VariableDeclaration", - "scope": 1747, - "src": "3562:13:11", + "scope": 1755, + "src": "3530:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13210,10 +14944,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1719, + "id": 1727, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3562:7:11", + "src": "3530:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13222,28 +14956,28 @@ "visibility": "internal" } ], - "id": 1724, + "id": 1732, "initialValue": { "baseExpression": { - "id": 1721, + "id": 1729, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1658, - "src": "3578:7:11", + "referencedDeclaration": 1666, + "src": "3546:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 1723, + "id": 1731, "indexExpression": { - "id": 1722, + "id": 1730, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1683, - "src": "3586:5:11", + "referencedDeclaration": 1691, + "src": "3554:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13254,43 +14988,43 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3578:14:11", + "src": "3546:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3562:30:11" + "src": "3530:30:11" }, { "expression": { - "id": 1729, + "id": 1737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 1725, + "id": 1733, "name": "nftSource", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1690, - "src": "3660:9:11", + "referencedDeclaration": 1698, + "src": "3628:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1727, + "id": 1735, "indexExpression": { - "id": 1726, + "id": 1734, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1683, - "src": "3670:5:11", + "referencedDeclaration": 1691, + "src": "3638:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13301,7 +15035,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3660:16:11", + "src": "3628:16:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13310,55 +15044,55 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 1728, + "id": 1736, "name": "nftSId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1710, - "src": "3679:6:11", + "referencedDeclaration": 1718, + "src": "3647:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3660:25:11", + "src": "3628:25:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1730, + "id": 1738, "nodeType": "ExpressionStatement", - "src": "3660:25:11" + "src": "3628:25:11" }, { "expression": { - "id": 1735, + "id": 1743, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 1731, + "id": 1739, "name": "nftMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1574, - "src": "3695:9:11", + "src": "3663:9:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 1733, + "id": 1741, "indexExpression": { - "id": 1732, + "id": 1740, "name": "nftSId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1710, - "src": "3705:6:11", + "referencedDeclaration": 1718, + "src": "3673:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13369,7 +15103,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3695:17:11", + "src": "3663:17:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13379,52 +15113,52 @@ "operator": "=", "rightHandSide": { "hexValue": "74727565", - "id": 1734, + "id": 1742, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3715:4:11", + "src": "3683:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "src": "3695:24:11", + "src": "3663:24:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1736, + "id": 1744, "nodeType": "ExpressionStatement", - "src": "3695:24:11" + "src": "3663:24:11" }, { "expression": { "arguments": [ { - "id": 1740, + "id": 1748, "name": "_user", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1655, - "src": "3784:5:11", + "referencedDeclaration": 1663, + "src": "3752:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 1741, + "id": 1749, "name": "nftId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1720, - "src": "3791:5:11", + "referencedDeclaration": 1728, + "src": "3759:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13443,18 +15177,18 @@ } ], "expression": { - "id": 1737, + "id": 1745, "name": "nft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1577, - "src": "3775:3:11", + "src": "3743:3:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IBEERC721_$1549", "typeString": "contract IBEERC721" } }, - "id": 1739, + "id": 1747, "isConstant": false, "isLValue": false, "isPure": false, @@ -13462,13 +15196,13 @@ "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1519, - "src": "3775:8:11", + "src": "3743:8:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, - "id": 1742, + "id": 1750, "isConstant": false, "isLValue": false, "isPure": false, @@ -13476,20 +15210,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3775:22:11", + "src": "3743:22:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1743, + "id": 1751, "nodeType": "ExpressionStatement", - "src": "3775:22:11" + "src": "3743:22:11" }, { "expression": { - "id": 1745, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": false, @@ -13497,14 +15231,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3807:7:11", + "src": "3775:7:11", "subExpression": { - "id": 1744, + "id": 1752, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1683, - "src": "3807:5:11", + "referencedDeclaration": 1691, + "src": "3775:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13515,9 +15249,9 @@ "typeString": "uint256" } }, - "id": 1746, + "id": 1754, "nodeType": "ExpressionStatement", - "src": "3807:7:11" + "src": "3775:7:11" } ] } @@ -13529,18 +15263,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1705, + "id": 1713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 1702, + "id": 1710, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1699, - "src": "3360:1:11", + "referencedDeclaration": 1707, + "src": "3328:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13550,51 +15284,51 @@ "operator": "<", "rightExpression": { "expression": { - "id": 1703, + "id": 1711, "name": "nfts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "3364:4:11", + "referencedDeclaration": 1685, + "src": "3332:4:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1704, + "id": 1712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "3364:11:11", + "src": "3332:11:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3360:15:11", + "src": "3328:15:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1750, + "id": 1758, "initializationExpression": { "assignments": [ - 1699 + 1707 ], "declarations": [ { "constant": false, - "id": 1699, + "id": 1707, "mutability": "mutable", "name": "i", - "nameLocation": "3353:1:11", + "nameLocation": "3321:1:11", "nodeType": "VariableDeclaration", - "scope": 1750, - "src": "3345:9:11", + "scope": 1758, + "src": "3313:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13602,10 +15336,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1698, + "id": 1706, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3345:7:11", + "src": "3313:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13614,17 +15348,17 @@ "visibility": "internal" } ], - "id": 1701, + "id": 1709, "initialValue": { "hexValue": "30", - "id": 1700, + "id": 1708, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3357:1:11", + "src": "3325:1:11", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -13632,11 +15366,11 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3345:13:11" + "src": "3313:13:11" }, "loopExpression": { "expression": { - "id": 1707, + "id": 1715, "isConstant": false, "isLValue": false, "isPure": false, @@ -13644,14 +15378,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3377:3:11", + "src": "3345:3:11", "subExpression": { - "id": 1706, + "id": 1714, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1699, - "src": "3377:1:11", + "referencedDeclaration": 1707, + "src": "3345:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13662,23 +15396,23 @@ "typeString": "uint256" } }, - "id": 1708, + "id": 1716, "nodeType": "ExpressionStatement", - "src": "3377:3:11" + "src": "3345:3:11" }, "nodeType": "ForStatement", - "src": "3340:489:11" + "src": "3308:489:11" }, { "eventCall": { "arguments": [ { - "id": 1752, + "id": 1760, "name": "_user", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1655, - "src": "3902:5:11", + "referencedDeclaration": 1663, + "src": "3870:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13687,12 +15421,12 @@ { "arguments": [ { - "id": 1755, + "id": 1763, "name": "nft", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1577, - "src": "3917:3:11", + "src": "3885:3:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IBEERC721_$1549", "typeString": "contract IBEERC721" @@ -13706,26 +15440,26 @@ "typeString": "contract IBEERC721" } ], - "id": 1754, + "id": 1762, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3909:7:11", + "src": "3877:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 1753, + "id": 1761, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3909:7:11", + "src": "3877:7:11", "typeDescriptions": {} } }, - "id": 1756, + "id": 1764, "isConstant": false, "isLValue": false, "isPure": false, @@ -13733,7 +15467,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3909:12:11", + "src": "3877:12:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -13741,24 +15475,24 @@ } }, { - "id": 1757, + "id": 1765, "name": "nftSource", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1690, - "src": "3923:9:11", + "referencedDeclaration": 1698, + "src": "3891:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, { - "id": 1758, + "id": 1766, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1658, - "src": "3934:7:11", + "referencedDeclaration": 1666, + "src": "3902:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -13784,18 +15518,18 @@ "typeString": "uint256[] calldata" } ], - "id": 1751, + "id": 1759, "name": "Minted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1591, - "src": "3895:6:11", + "referencedDeclaration": 1589, + "src": "3863:6:11", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256[] memory,uint256[] memory)" } }, - "id": 1759, + "id": 1767, "isConstant": false, "isLValue": false, "isPure": false, @@ -13803,60 +15537,60 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3895:47:11", + "src": "3863:47:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1760, + "id": 1768, "nodeType": "EmitStatement", - "src": "3890:52:11" + "src": "3858:52:11" } ] }, "documentation": { - "id": 1653, + "id": 1661, "nodeType": "StructuredDocumentation", - "src": "2223:605:11", + "src": "2191:605:11", "text": " @dev The mintToUser function mints NFTs to a given user.\n Only functions called by an address with the MANAGE_ROLE permission can access this function.\n The function takes an array of nftIds and checks that there are enough mintable NFTs for the user.\n It then loops through the user's owned NFTs, checking if each is mintable, and if so, adds it to a list to be minted.\n Then it emits the Minted event with details of the operation.\n @param _user - The address of the user receiving the NFTs\n @param _nftIds - An array of the IDs for the NFTs being minted" }, "functionSelector": "36136433", - "id": 1762, + "id": 1770, "implemented": true, "kind": "function", "modifiers": [ { - "id": 1661, + "id": 1669, "kind": "modifierInvocation", "modifierName": { - "id": 1660, + "id": 1668, "name": "onlyManager", "nodeType": "IdentifierPath", - "referencedDeclaration": 1652, - "src": "2915:11:11" + "referencedDeclaration": 1660, + "src": "2883:11:11" }, "nodeType": "ModifierInvocation", - "src": "2915:11:11" + "src": "2883:11:11" } ], "name": "mintToUser", - "nameLocation": "2840:10:11", + "nameLocation": "2808:10:11", "nodeType": "FunctionDefinition", "parameters": { - "id": 1659, + "id": 1667, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1655, + "id": 1663, "mutability": "mutable", "name": "_user", - "nameLocation": "2864:5:11", + "nameLocation": "2832:5:11", "nodeType": "VariableDeclaration", - "scope": 1762, - "src": "2856:13:11", + "scope": 1770, + "src": "2824:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13864,10 +15598,10 @@ "typeString": "address" }, "typeName": { - "id": 1654, + "id": 1662, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2856:7:11", + "src": "2824:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13878,13 +15612,13 @@ }, { "constant": false, - "id": 1658, + "id": 1666, "mutability": "mutable", "name": "_nftIds", - "nameLocation": "2894:7:11", + "nameLocation": "2862:7:11", "nodeType": "VariableDeclaration", - "scope": 1762, - "src": "2875:26:11", + "scope": 1770, + "src": "2843:26:11", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -13893,18 +15627,18 @@ }, "typeName": { "baseType": { - "id": 1656, + "id": 1664, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2875:7:11", + "src": "2843:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1657, + "id": 1665, "nodeType": "ArrayTypeName", - "src": "2875:9:11", + "src": "2843:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -13913,56 +15647,56 @@ "visibility": "internal" } ], - "src": "2850:55:11" + "src": "2818:55:11" }, "returnParameters": { - "id": 1662, + "id": 1670, "nodeType": "ParameterList", "parameters": [], - "src": "2927:0:11" + "src": "2895:0:11" }, - "scope": 1920, - "src": "2831:1116:11", + "scope": 1928, + "src": "2799:1116:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 1795, + "id": 1803, "nodeType": "Block", - "src": "4730:221:11", + "src": "4698:221:11", "statements": [ { "body": { - "id": 1793, + "id": 1801, "nodeType": "Block", - "src": "4822:125:11", + "src": "4790:125:11", "statements": [ { "expression": { "arguments": [ { "baseExpression": { - "id": 1788, + "id": 1796, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, - "src": "4929:7:11", + "referencedDeclaration": 1776, + "src": "4897:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 1790, + "id": 1798, "indexExpression": { - "id": 1789, + "id": 1797, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1774, - "src": "4937:1:11", + "referencedDeclaration": 1782, + "src": "4905:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13973,7 +15707,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4929:10:11", + "src": "4897:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13989,25 +15723,25 @@ ], "expression": { "baseExpression": { - "id": 1784, + "id": 1792, "name": "ownerToNFTs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1570, - "src": "4905:11:11", + "src": "4873:11:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[] storage ref)" } }, - "id": 1786, + "id": 1794, "indexExpression": { - "id": 1785, + "id": 1793, "name": "_user", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1765, - "src": "4917:5:11", + "referencedDeclaration": 1773, + "src": "4885:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14018,26 +15752,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4905:18:11", + "src": "4873:18:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, - "id": 1787, + "id": 1795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", - "src": "4905:23:11", + "src": "4873:23:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$", "typeString": "function (uint256[] storage pointer,uint256)" } }, - "id": 1791, + "id": 1799, "isConstant": false, "isLValue": false, "isPure": false, @@ -14045,16 +15779,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4905:35:11", + "src": "4873:35:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1792, + "id": 1800, "nodeType": "ExpressionStatement", - "src": "4905:35:11" + "src": "4873:35:11" } ] }, @@ -14063,18 +15797,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1780, + "id": 1788, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 1777, + "id": 1785, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1774, - "src": "4797:1:11", + "referencedDeclaration": 1782, + "src": "4765:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14084,51 +15818,51 @@ "operator": "<", "rightExpression": { "expression": { - "id": 1778, + "id": 1786, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, - "src": "4801:7:11", + "referencedDeclaration": 1776, + "src": "4769:7:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 1779, + "id": 1787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "4801:14:11", + "src": "4769:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4797:18:11", + "src": "4765:18:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1794, + "id": 1802, "initializationExpression": { "assignments": [ - 1774 + 1782 ], "declarations": [ { "constant": false, - "id": 1774, + "id": 1782, "mutability": "mutable", "name": "i", - "nameLocation": "4790:1:11", + "nameLocation": "4758:1:11", "nodeType": "VariableDeclaration", - "scope": 1794, - "src": "4782:9:11", + "scope": 1802, + "src": "4750:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14136,10 +15870,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1773, + "id": 1781, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4782:7:11", + "src": "4750:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14148,17 +15882,17 @@ "visibility": "internal" } ], - "id": 1776, + "id": 1784, "initialValue": { "hexValue": "30", - "id": 1775, + "id": 1783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4794:1:11", + "src": "4762:1:11", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -14166,11 +15900,11 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4782:13:11" + "src": "4750:13:11" }, "loopExpression": { "expression": { - "id": 1782, + "id": 1790, "isConstant": false, "isLValue": false, "isPure": false, @@ -14178,14 +15912,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4817:3:11", + "src": "4785:3:11", "subExpression": { - "id": 1781, + "id": 1789, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1774, - "src": "4817:1:11", + "referencedDeclaration": 1782, + "src": "4785:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14196,56 +15930,56 @@ "typeString": "uint256" } }, - "id": 1783, + "id": 1791, "nodeType": "ExpressionStatement", - "src": "4817:3:11" + "src": "4785:3:11" }, "nodeType": "ForStatement", - "src": "4777:170:11" + "src": "4745:170:11" } ] }, "documentation": { - "id": 1763, + "id": 1771, "nodeType": "StructuredDocumentation", - "src": "3951:680:11", + "src": "3919:680:11", "text": " @dev The addNFTData function adds an array of NFT IDs to the list of NFT IDs owned by a user.\n mintToUser method would check if target user had permission to mint NFTs.\n Only functions called by an address with the MANAGE_ROLE permission can access this function.\n The function takes in the address of the user and an array of NFT IDs. It then loops through the array\n of NFT IDs, and adds each one to the end of the array of NFTs owned by that user to update their ownership data.\n @param _user - The address of the user being updated with new NFT data\n @param _nftIds - An array of NFT IDs being added to the user's NFT data" }, "functionSelector": "84be00e4", - "id": 1796, + "id": 1804, "implemented": true, "kind": "function", "modifiers": [ { - "id": 1771, + "id": 1779, "kind": "modifierInvocation", "modifierName": { - "id": 1770, + "id": 1778, "name": "onlyManager", "nodeType": "IdentifierPath", - "referencedDeclaration": 1652, - "src": "4718:11:11" + "referencedDeclaration": 1660, + "src": "4686:11:11" }, "nodeType": "ModifierInvocation", - "src": "4718:11:11" + "src": "4686:11:11" } ], "name": "addNFTData", - "nameLocation": "4643:10:11", + "nameLocation": "4611:10:11", "nodeType": "FunctionDefinition", "parameters": { - "id": 1769, + "id": 1777, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1765, + "id": 1773, "mutability": "mutable", "name": "_user", - "nameLocation": "4667:5:11", + "nameLocation": "4635:5:11", "nodeType": "VariableDeclaration", - "scope": 1796, - "src": "4659:13:11", + "scope": 1804, + "src": "4627:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14253,10 +15987,10 @@ "typeString": "address" }, "typeName": { - "id": 1764, + "id": 1772, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4659:7:11", + "src": "4627:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14267,13 +16001,13 @@ }, { "constant": false, - "id": 1768, + "id": 1776, "mutability": "mutable", "name": "_nftIds", - "nameLocation": "4697:7:11", + "nameLocation": "4665:7:11", "nodeType": "VariableDeclaration", - "scope": 1796, - "src": "4678:26:11", + "scope": 1804, + "src": "4646:26:11", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -14282,18 +16016,18 @@ }, "typeName": { "baseType": { - "id": 1766, + "id": 1774, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4678:7:11", + "src": "4646:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1767, + "id": 1775, "nodeType": "ArrayTypeName", - "src": "4678:9:11", + "src": "4646:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -14302,40 +16036,40 @@ "visibility": "internal" } ], - "src": "4653:55:11" + "src": "4621:55:11" }, "returnParameters": { - "id": 1772, + "id": 1780, "nodeType": "ParameterList", "parameters": [], - "src": "4730:0:11" + "src": "4698:0:11" }, - "scope": 1920, - "src": "4634:317:11", + "scope": 1928, + "src": "4602:317:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { - "id": 1847, + "id": 1855, "nodeType": "Block", - "src": "5590:578:11", + "src": "5558:578:11", "statements": [ { "assignments": [ - 1808 + 1816 ], "declarations": [ { "constant": false, - "id": 1808, + "id": 1816, "mutability": "mutable", "name": "nfts", - "nameLocation": "5666:4:11", + "nameLocation": "5634:4:11", "nodeType": "VariableDeclaration", - "scope": 1847, - "src": "5649:21:11", + "scope": 1855, + "src": "5617:21:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -14344,18 +16078,18 @@ }, "typeName": { "baseType": { - "id": 1806, + "id": 1814, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5649:7:11", + "src": "5617:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1807, + "id": 1815, "nodeType": "ArrayTypeName", - "src": "5649:9:11", + "src": "5617:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -14364,28 +16098,28 @@ "visibility": "internal" } ], - "id": 1812, + "id": 1820, "initialValue": { "baseExpression": { - "id": 1809, + "id": 1817, "name": "ownerToNFTs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1570, - "src": "5673:11:11", + "src": "5641:11:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[] storage ref)" } }, - "id": 1811, + "id": 1819, "indexExpression": { - "id": 1810, + "id": 1818, "name": "_user", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1799, - "src": "5685:5:11", + "referencedDeclaration": 1807, + "src": "5653:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14396,29 +16130,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5673:18:11", + "src": "5641:18:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "5649:42:11" + "src": "5617:42:11" }, { "assignments": [ - 1814 + 1822 ], "declarations": [ { "constant": false, - "id": 1814, + "id": 1822, "mutability": "mutable", "name": "count", - "nameLocation": "5737:5:11", + "nameLocation": "5705:5:11", "nodeType": "VariableDeclaration", - "scope": 1847, - "src": "5729:13:11", + "scope": 1855, + "src": "5697:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14426,10 +16160,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1813, + "id": 1821, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5729:7:11", + "src": "5697:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14438,17 +16172,17 @@ "visibility": "internal" } ], - "id": 1816, + "id": 1824, "initialValue": { "hexValue": "30", - "id": 1815, + "id": 1823, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5745:1:11", + "src": "5713:1:11", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -14456,28 +16190,28 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5729:17:11" + "src": "5697:17:11" }, { "body": { - "id": 1843, + "id": 1851, "nodeType": "Block", - "src": "5835:272:11", + "src": "5803:272:11", "statements": [ { "assignments": [ - 1829 + 1837 ], "declarations": [ { "constant": false, - "id": 1829, + "id": 1837, "mutability": "mutable", "name": "nftAId", - "nameLocation": "5901:6:11", + "nameLocation": "5869:6:11", "nodeType": "VariableDeclaration", - "scope": 1843, - "src": "5893:14:11", + "scope": 1851, + "src": "5861:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14485,10 +16219,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1828, + "id": 1836, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5893:7:11", + "src": "5861:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14497,28 +16231,28 @@ "visibility": "internal" } ], - "id": 1833, + "id": 1841, "initialValue": { "baseExpression": { - "id": 1830, + "id": 1838, "name": "nfts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1808, - "src": "5910:4:11", + "referencedDeclaration": 1816, + "src": "5878:4:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1832, + "id": 1840, "indexExpression": { - "id": 1831, + "id": 1839, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1818, - "src": "5915:1:11", + "referencedDeclaration": 1826, + "src": "5883:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14529,18 +16263,18 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5910:7:11", + "src": "5878:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "5893:24:11" + "src": "5861:24:11" }, { "condition": { - "id": 1837, + "id": 1845, "isConstant": false, "isLValue": false, "isPure": false, @@ -14548,28 +16282,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "5979:18:11", + "src": "5947:18:11", "subExpression": { "baseExpression": { - "id": 1834, + "id": 1842, "name": "nftMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1574, - "src": "5980:9:11", + "src": "5948:9:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 1836, + "id": 1844, "indexExpression": { - "id": 1835, + "id": 1843, "name": "nftAId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1829, - "src": "5990:6:11", + "referencedDeclaration": 1837, + "src": "5958:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14580,7 +16314,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5980:17:11", + "src": "5948:17:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14591,17 +16325,17 @@ "typeString": "bool" } }, - "id": 1842, + "id": 1850, "nodeType": "IfStatement", - "src": "5975:126:11", + "src": "5943:126:11", "trueBody": { - "id": 1841, + "id": 1849, "nodeType": "Block", - "src": "5999:102:11", + "src": "5967:102:11", "statements": [ { "expression": { - "id": 1839, + "id": 1847, "isConstant": false, "isLValue": false, "isPure": false, @@ -14609,14 +16343,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "6085:7:11", + "src": "6053:7:11", "subExpression": { - "id": 1838, + "id": 1846, "name": "count", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1814, - "src": "6085:5:11", + "referencedDeclaration": 1822, + "src": "6053:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14627,9 +16361,9 @@ "typeString": "uint256" } }, - "id": 1840, + "id": 1848, "nodeType": "ExpressionStatement", - "src": "6085:7:11" + "src": "6053:7:11" } ] } @@ -14641,18 +16375,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1824, + "id": 1832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 1821, + "id": 1829, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1818, - "src": "5813:1:11", + "referencedDeclaration": 1826, + "src": "5781:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14662,51 +16396,51 @@ "operator": "<", "rightExpression": { "expression": { - "id": 1822, + "id": 1830, "name": "nfts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1808, - "src": "5817:4:11", + "referencedDeclaration": 1816, + "src": "5785:4:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1823, + "id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "5817:11:11", + "src": "5785:11:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5813:15:11", + "src": "5781:15:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1844, + "id": 1852, "initializationExpression": { "assignments": [ - 1818 + 1826 ], "declarations": [ { "constant": false, - "id": 1818, + "id": 1826, "mutability": "mutable", "name": "i", - "nameLocation": "5806:1:11", + "nameLocation": "5774:1:11", "nodeType": "VariableDeclaration", - "scope": 1844, - "src": "5798:9:11", + "scope": 1852, + "src": "5766:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14714,10 +16448,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1817, + "id": 1825, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5798:7:11", + "src": "5766:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14726,17 +16460,17 @@ "visibility": "internal" } ], - "id": 1820, + "id": 1828, "initialValue": { "hexValue": "30", - "id": 1819, + "id": 1827, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5810:1:11", + "src": "5778:1:11", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -14744,11 +16478,11 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5798:13:11" + "src": "5766:13:11" }, "loopExpression": { "expression": { - "id": 1826, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, @@ -14756,14 +16490,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5830:3:11", + "src": "5798:3:11", "subExpression": { - "id": 1825, + "id": 1833, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1818, - "src": "5830:1:11", + "referencedDeclaration": 1826, + "src": "5798:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14774,60 +16508,60 @@ "typeString": "uint256" } }, - "id": 1827, + "id": 1835, "nodeType": "ExpressionStatement", - "src": "5830:3:11" + "src": "5798:3:11" }, "nodeType": "ForStatement", - "src": "5793:314:11" + "src": "5761:314:11" }, { "expression": { - "id": 1845, + "id": 1853, "name": "count", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1814, - "src": "6158:5:11", + "referencedDeclaration": 1822, + "src": "6126:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1803, - "id": 1846, + "functionReturnParameters": 1811, + "id": 1854, "nodeType": "Return", - "src": "6151:12:11" + "src": "6119:12:11" } ] }, "documentation": { - "id": 1797, + "id": 1805, "nodeType": "StructuredDocumentation", - "src": "4955:561:11", + "src": "4923:561:11", "text": " @dev The getMintableCount function gets the number of NFTs owned by a user that have not yet been minted.\n This is a read-only function, meaning it doesn't modify the state of the blockchain.\n It takes in the address of the user whose mintable count is being determined,\n and returns the number of NFTs owned by the user that have not yet been minted.\n @param _user - The address of the user whose mintable count is being determined\n @return count - The number of NFTs owned by the user that have not yet been minted" }, "functionSelector": "0431f205", - "id": 1848, + "id": 1856, "implemented": true, "kind": "function", "modifiers": [], "name": "getMintableCount", - "nameLocation": "5528:16:11", + "nameLocation": "5496:16:11", "nodeType": "FunctionDefinition", "parameters": { - "id": 1800, + "id": 1808, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1799, + "id": 1807, "mutability": "mutable", "name": "_user", - "nameLocation": "5553:5:11", + "nameLocation": "5521:5:11", "nodeType": "VariableDeclaration", - "scope": 1848, - "src": "5545:13:11", + "scope": 1856, + "src": "5513:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14835,10 +16569,10 @@ "typeString": "address" }, "typeName": { - "id": 1798, + "id": 1806, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5545:7:11", + "src": "5513:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14848,21 +16582,21 @@ "visibility": "internal" } ], - "src": "5544:15:11" + "src": "5512:15:11" }, "returnParameters": { - "id": 1803, + "id": 1811, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1802, + "id": 1810, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 1848, - "src": "5581:7:11", + "scope": 1856, + "src": "5549:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14870,10 +16604,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1801, + "id": 1809, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5581:7:11", + "src": "5549:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14882,34 +16616,34 @@ "visibility": "internal" } ], - "src": "5580:9:11" + "src": "5548:9:11" }, - "scope": 1920, - "src": "5519:649:11", + "scope": 1928, + "src": "5487:649:11", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 1918, + "id": 1926, "nodeType": "Block", - "src": "6854:850:11", + "src": "6822:850:11", "statements": [ { "assignments": [ - 1861 + 1869 ], "declarations": [ { "constant": false, - "id": 1861, + "id": 1869, "mutability": "mutable", "name": "nfts", - "nameLocation": "6930:4:11", + "nameLocation": "6898:4:11", "nodeType": "VariableDeclaration", - "scope": 1918, - "src": "6913:21:11", + "scope": 1926, + "src": "6881:21:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -14918,18 +16652,18 @@ }, "typeName": { "baseType": { - "id": 1859, + "id": 1867, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6913:7:11", + "src": "6881:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1860, + "id": 1868, "nodeType": "ArrayTypeName", - "src": "6913:9:11", + "src": "6881:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -14938,28 +16672,28 @@ "visibility": "internal" } ], - "id": 1865, + "id": 1873, "initialValue": { "baseExpression": { - "id": 1862, + "id": 1870, "name": "ownerToNFTs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1570, - "src": "6937:11:11", + "src": "6905:11:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[] storage ref)" } }, - "id": 1864, + "id": 1872, "indexExpression": { - "id": 1863, + "id": 1871, "name": "_user", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1851, - "src": "6949:5:11", + "referencedDeclaration": 1859, + "src": "6917:5:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14970,29 +16704,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6937:18:11", + "src": "6905:18:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "6913:42:11" + "src": "6881:42:11" }, { "assignments": [ - 1870 + 1878 ], "declarations": [ { "constant": false, - "id": 1870, + "id": 1878, "mutability": "mutable", "name": "mintableNftIds", - "nameLocation": "7075:14:11", + "nameLocation": "7043:14:11", "nodeType": "VariableDeclaration", - "scope": 1918, - "src": "7058:31:11", + "scope": 1926, + "src": "7026:31:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -15001,18 +16735,18 @@ }, "typeName": { "baseType": { - "id": 1868, + "id": 1876, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7058:7:11", + "src": "7026:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1869, + "id": 1877, "nodeType": "ArrayTypeName", - "src": "7058:9:11", + "src": "7026:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -15021,30 +16755,30 @@ "visibility": "internal" } ], - "id": 1877, + "id": 1885, "initialValue": { "arguments": [ { "expression": { - "id": 1874, + "id": 1882, "name": "nfts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1861, - "src": "7106:4:11", + "referencedDeclaration": 1869, + "src": "7074:4:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1875, + "id": 1883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "7106:11:11", + "src": "7074:11:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15058,38 +16792,38 @@ "typeString": "uint256" } ], - "id": 1873, + "id": 1881, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "7092:13:11", + "src": "7060:13:11", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint256[] memory)" }, "typeName": { "baseType": { - "id": 1871, + "id": 1879, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7096:7:11", + "src": "7064:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1872, + "id": 1880, "nodeType": "ArrayTypeName", - "src": "7096:9:11", + "src": "7064:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } } }, - "id": 1876, + "id": 1884, "isConstant": false, "isLValue": false, "isPure": false, @@ -15097,7 +16831,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7092:26:11", + "src": "7060:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -15105,22 +16839,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7058:60:11" + "src": "7026:60:11" }, { "assignments": [ - 1879 + 1887 ], "declarations": [ { "constant": false, - "id": 1879, + "id": 1887, "mutability": "mutable", "name": "index", - "nameLocation": "7175:5:11", + "nameLocation": "7143:5:11", "nodeType": "VariableDeclaration", - "scope": 1918, - "src": "7167:13:11", + "scope": 1926, + "src": "7135:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15128,10 +16862,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1878, + "id": 1886, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7167:7:11", + "src": "7135:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15140,17 +16874,17 @@ "visibility": "internal" } ], - "id": 1881, + "id": 1889, "initialValue": { "hexValue": "30", - "id": 1880, + "id": 1888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7183:1:11", + "src": "7151:1:11", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -15158,28 +16892,28 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "7167:17:11" + "src": "7135:17:11" }, { "body": { - "id": 1914, + "id": 1922, "nodeType": "Block", - "src": "7273:356:11", + "src": "7241:356:11", "statements": [ { "assignments": [ - 1894 + 1902 ], "declarations": [ { "constant": false, - "id": 1894, + "id": 1902, "mutability": "mutable", "name": "nftId", - "nameLocation": "7339:5:11", + "nameLocation": "7307:5:11", "nodeType": "VariableDeclaration", - "scope": 1914, - "src": "7331:13:11", + "scope": 1922, + "src": "7299:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15187,10 +16921,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1893, + "id": 1901, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7331:7:11", + "src": "7299:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15199,28 +16933,28 @@ "visibility": "internal" } ], - "id": 1898, + "id": 1906, "initialValue": { "baseExpression": { - "id": 1895, + "id": 1903, "name": "nfts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1861, - "src": "7347:4:11", + "referencedDeclaration": 1869, + "src": "7315:4:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1897, + "id": 1905, "indexExpression": { - "id": 1896, + "id": 1904, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1883, - "src": "7352:1:11", + "referencedDeclaration": 1891, + "src": "7320:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15231,18 +16965,18 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7347:7:11", + "src": "7315:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "7331:23:11" + "src": "7299:23:11" }, { "condition": { - "id": 1902, + "id": 1910, "isConstant": false, "isLValue": false, "isPure": false, @@ -15250,28 +16984,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "7416:17:11", + "src": "7384:17:11", "subExpression": { "baseExpression": { - "id": 1899, + "id": 1907, "name": "nftMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1574, - "src": "7417:9:11", + "src": "7385:9:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$", "typeString": "mapping(uint256 => bool)" } }, - "id": 1901, + "id": 1909, "indexExpression": { - "id": 1900, + "id": 1908, "name": "nftId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1894, - "src": "7427:5:11", + "referencedDeclaration": 1902, + "src": "7395:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15282,7 +17016,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7417:16:11", + "src": "7385:16:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15293,42 +17027,42 @@ "typeString": "bool" } }, - "id": 1913, + "id": 1921, "nodeType": "IfStatement", - "src": "7412:211:11", + "src": "7380:211:11", "trueBody": { - "id": 1912, + "id": 1920, "nodeType": "Block", - "src": "7435:188:11", + "src": "7403:188:11", "statements": [ { "expression": { - "id": 1907, + "id": 1915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 1903, + "id": 1911, "name": "mintableNftIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1870, - "src": "7529:14:11", + "referencedDeclaration": 1878, + "src": "7497:14:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1905, + "id": 1913, "indexExpression": { - "id": 1904, + "id": 1912, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1879, - "src": "7544:5:11", + "referencedDeclaration": 1887, + "src": "7512:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15339,7 +17073,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7529:21:11", + "src": "7497:21:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15348,30 +17082,30 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 1906, + "id": 1914, "name": "nftId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1894, - "src": "7553:5:11", + "referencedDeclaration": 1902, + "src": "7521:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7529:29:11", + "src": "7497:29:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1908, + "id": 1916, "nodeType": "ExpressionStatement", - "src": "7529:29:11" + "src": "7497:29:11" }, { "expression": { - "id": 1910, + "id": 1918, "isConstant": false, "isLValue": false, "isPure": false, @@ -15379,14 +17113,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "7607:7:11", + "src": "7575:7:11", "subExpression": { - "id": 1909, + "id": 1917, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1879, - "src": "7607:5:11", + "referencedDeclaration": 1887, + "src": "7575:5:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15397,9 +17131,9 @@ "typeString": "uint256" } }, - "id": 1911, + "id": 1919, "nodeType": "ExpressionStatement", - "src": "7607:7:11" + "src": "7575:7:11" } ] } @@ -15411,18 +17145,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1889, + "id": 1897, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 1886, + "id": 1894, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1883, - "src": "7251:1:11", + "referencedDeclaration": 1891, + "src": "7219:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15432,51 +17166,51 @@ "operator": "<", "rightExpression": { "expression": { - "id": 1887, + "id": 1895, "name": "nfts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1861, - "src": "7255:4:11", + "referencedDeclaration": 1869, + "src": "7223:4:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1888, + "id": 1896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", - "src": "7255:11:11", + "src": "7223:11:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7251:15:11", + "src": "7219:15:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1915, + "id": 1923, "initializationExpression": { "assignments": [ - 1883 + 1891 ], "declarations": [ { "constant": false, - "id": 1883, + "id": 1891, "mutability": "mutable", "name": "i", - "nameLocation": "7244:1:11", + "nameLocation": "7212:1:11", "nodeType": "VariableDeclaration", - "scope": 1915, - "src": "7236:9:11", + "scope": 1923, + "src": "7204:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15484,10 +17218,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1882, + "id": 1890, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7236:7:11", + "src": "7204:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15496,17 +17230,17 @@ "visibility": "internal" } ], - "id": 1885, + "id": 1893, "initialValue": { "hexValue": "30", - "id": 1884, + "id": 1892, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7248:1:11", + "src": "7216:1:11", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -15514,11 +17248,11 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "7236:13:11" + "src": "7204:13:11" }, "loopExpression": { "expression": { - "id": 1891, + "id": 1899, "isConstant": false, "isLValue": false, "isPure": false, @@ -15526,14 +17260,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "7268:3:11", + "src": "7236:3:11", "subExpression": { - "id": 1890, + "id": 1898, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1883, - "src": "7268:1:11", + "referencedDeclaration": 1891, + "src": "7236:1:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15544,60 +17278,60 @@ "typeString": "uint256" } }, - "id": 1892, + "id": 1900, "nodeType": "ExpressionStatement", - "src": "7268:3:11" + "src": "7236:3:11" }, "nodeType": "ForStatement", - "src": "7231:398:11" + "src": "7199:398:11" }, { "expression": { - "id": 1916, + "id": 1924, "name": "mintableNftIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1870, - "src": "7685:14:11", + "referencedDeclaration": 1878, + "src": "7653:14:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "functionReturnParameters": 1856, - "id": 1917, + "functionReturnParameters": 1864, + "id": 1925, "nodeType": "Return", - "src": "7678:21:11" + "src": "7646:21:11" } ] }, "documentation": { - "id": 1849, + "id": 1857, "nodeType": "StructuredDocumentation", - "src": "6172:588:11", + "src": "6140:588:11", "text": " @dev The getMintableNftIds function gets an array of NFT IDs owned by a user that have not yet been minted.\n This is a read-only function, meaning it doesn't modify the state of the blockchain.\n It takes in the address of the user whose mintable NFT IDs are being determined,\n and returns an array of the NFT IDs owned by the user that have not yet been minted.\n @param _user - The address of the user whose mintable NFT IDs are being determined\n @return mintableNftIds - An array of the NFT IDs owned by the user that have not yet been minted" }, "functionSelector": "032221ad", - "id": 1919, + "id": 1927, "implemented": true, "kind": "function", "modifiers": [], "name": "getMintableNftIds", - "nameLocation": "6772:17:11", + "nameLocation": "6740:17:11", "nodeType": "FunctionDefinition", "parameters": { - "id": 1852, + "id": 1860, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1851, + "id": 1859, "mutability": "mutable", "name": "_user", - "nameLocation": "6803:5:11", + "nameLocation": "6771:5:11", "nodeType": "VariableDeclaration", - "scope": 1919, - "src": "6795:13:11", + "scope": 1927, + "src": "6763:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15605,10 +17339,10 @@ "typeString": "address" }, "typeName": { - "id": 1850, + "id": 1858, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6795:7:11", + "src": "6763:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15618,21 +17352,21 @@ "visibility": "internal" } ], - "src": "6789:23:11" + "src": "6757:23:11" }, "returnParameters": { - "id": 1856, + "id": 1864, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1855, + "id": 1863, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 1919, - "src": "6836:16:11", + "scope": 1927, + "src": "6804:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -15641,18 +17375,18 @@ }, "typeName": { "baseType": { - "id": 1853, + "id": 1861, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6836:7:11", + "src": "6804:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1854, + "id": 1862, "nodeType": "ArrayTypeName", - "src": "6836:9:11", + "src": "6804:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -15661,29 +17395,37 @@ "visibility": "internal" } ], - "src": "6835:18:11" + "src": "6803:18:11" }, - "scope": 1920, - "src": "6763:941:11", + "scope": 1928, + "src": "6731:941:11", "stateMutability": "view", "virtual": false, "visibility": "external" } ], - "scope": 1921, - "src": "165:7541:11", + "scope": 1929, + "src": "165:7509:11", "usedErrors": [] } ], - "src": "32:7675:11" + "src": "32:7643:11" }, "compiler": { "name": "solc", "version": "0.8.10+commit.fc410830.Emscripten.clang" }, - "networks": {}, + "networks": { + "80001": { + "events": {}, + "links": {}, + "address": "0x1d33b4E045ce595B6346C3D0e334814dd4Af5418", + "transactionHash": "0xba14fddb8126aa447add316b529fd61206ee795909c9bb671332dc4d824e937d" + } + }, "schemaVersion": "3.4.11", - "updatedAt": "2023-04-19T01:52:16.552Z", + "updatedAt": "2023-04-19T02:14:02.522Z", + "networkType": "ethereum", "devdoc": { "kind": "dev", "methods": { diff --git a/contracts/logic/NftDistributor.sol b/contracts/logic/NftDistributor.sol index 3bc838d..8f8a7ca 100644 --- a/contracts/logic/NftDistributor.sol +++ b/contracts/logic/NftDistributor.sol @@ -14,7 +14,6 @@ contract NftDistributor is AccessControlEnumerable { mapping(uint256 => bool) public nftMinted; IBEERC721 public nft; - address public source; event Minted( address indexed user, @@ -33,7 +32,7 @@ contract NftDistributor is AccessControlEnumerable { * - _nftSource: The address of the source NFT that will check if user has mint permission. * - _manageAddress: The address that will have the MANAGE_ROLE assigned. */ - constructor(address _nftTarget, address _nftSource, address _manageAddress) { + constructor(address _nftTarget, address[] memory _manageAddress) { // Set up the ADMIN_ROLE and MANAGE_ROLE _setRoleAdmin(ADMIN_ROLE, ADMIN_ROLE); _setRoleAdmin(MANAGE_ROLE, ADMIN_ROLE); @@ -43,13 +42,12 @@ contract NftDistributor is AccessControlEnumerable { _setupRole(ADMIN_ROLE, address(this)); // Grant the MANAGE_ROLE to the specified address - _setupRole(MANAGE_ROLE, _manageAddress); + for (uint256 i = 0; i < _manageAddress.length; ++i) { + _setupRole(MANAGE_ROLE, _manageAddress[i]); + } // Initialize the nft contract with IBEERC721 interface nft = IBEERC721(_nftTarget); - - // Set the source contract address - source = _nftSource; } /** diff --git a/migrations/2_depoly_etc.js b/migrations/2_depoly_etc.js index 8250b8c..72c2681 100644 --- a/migrations/2_depoly_etc.js +++ b/migrations/2_depoly_etc.js @@ -1,11 +1,12 @@ const Badge = artifacts.require("tokens/erc721/BEBadge"); const Coin = artifacts.require("tokens/erc20/BEUSDT"); -const Wallet = artifacts.require("tokens/erc721/BEMultiSigWallet"); +const Wallet = artifacts.require("core/BEMultiSigWallet"); +const Distributor = artifacts.require("logic/NftDistributor"); const config = require("../config/config"); module.exports = async function (deployer, network, accounts) { // await deployer.deploy(Badge, "BE Badge", "Badge", "0"); - // const badgeInstance = await Badge.deployed(); + const badgeInstance = await Badge.deployed(); // if (badgeInstance) { // console.log("BEBadge successfully deployed. "); // console.log("address: " + badgeInstance.address); @@ -17,21 +18,34 @@ module.exports = async function (deployer, network, accounts) { // console.log("BEUSDT successfully deployed. "); // console.log("address: " + coinInstance.address); // } - await deployer.deploy( - Wallet, - 60, - 1, - config.admins.proposers, - config.admins.confirmers, - config.admins.executors - ); - const walletInstance = await Wallet.deployed(); - if (walletInstance) { - console.log("BEMultiSigWallet successfully deployed."); - console.log("address: " + walletInstance.address); - } + // await deployer.deploy( + // Wallet, + // 60, + // 1, + // config.admins.proposers, + // config.admins.confirmers, + // config.admins.executors + // ); + // const walletInstance = await Wallet.deployed(); + // if (walletInstance) { + // console.log("BEMultiSigWallet successfully deployed."); + // console.log("address: " + walletInstance.address); + // } // await badgeInstance.setMintRole(walletInstance.address); // console.log("success add wallet to badge's mint role"); // await coinInstance.setMintRole(walletInstance.address); // console.log("success add wallet to usdt's mint role"); + + await deployer.deploy( + Distributor, + badgeInstance.address, + config.admins.executors + ); + const distributorInstance = await Distributor.deployed(); + if (distributorInstance) { + console.log("NftDistributor successfully deployed."); + console.log("address: " + distributorInstance.address); + } + await badgeInstance.setMintRole(distributorInstance.address); + console.log("success add distributor to badge's mint role"); };