diff --git a/README.md b/README.md index 2c0e57c..5508265 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ This will give you the overview of your NFT. You'll see `BN` since the call retu You can get an [Etherscan API key](https://etherscan.io/apis) for free and interact with the NFTs on chain. Then set `ETHERSCAN_API_KEY ` as an environment variable. ```bash +npm install truffle-plugin-verify truffle run verify DungeonsAndDragonsCharacter --network rinkeby --license MIT ``` @@ -114,6 +115,6 @@ Then we just run it like: truffle exec scripts/set-token-uri.js --network mainnet ``` -Now, we can get the address of our NFT and head on over to the opensea testnet marketplace to see if we did it correctly. If done correctly, it'll look [something like this](https://testnets.opensea.io/storefront/dungeonsanddragonscharacter-v6). +Now, we can get the address of our NFT and head on over to the opensea testnet marketplace to see if we did it correctly. If done correctly, it'll look [something like this](https://testnets.opensea.io/storefront/dungeonsanddragonscharacter-v9). [Here is the link for adding your testnet NFT contract to be viewed on opensea.](https://testnets.opensea.io/get-listed/step-two) \ No newline at end of file diff --git a/build/contracts/DungeonsAndDragonsCharacter.json b/build/contracts/DungeonsAndDragonsCharacter.json index a263ba2..e00ae04 100644 --- a/build/contracts/DungeonsAndDragonsCharacter.json +++ b/build/contracts/DungeonsAndDragonsCharacter.json @@ -732,6 +732,20 @@ "type": "function", "constant": true }, + { + "inputs": [], + "name": "getNumberOfCharacters", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "constant": true + }, { "inputs": [ { @@ -818,22 +832,22 @@ "constant": true } ], - "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_VRFCoordinator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_LinkToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_keyhash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LinkToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VRFCoordinator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"characters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"strength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dexterity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"constitution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"intelligence\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wisdom\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"charisma\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"experience\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCharacterOverView\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCharacterStats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomResult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"randomness\",\"type\":\"uint256\"}],\"name\":\"rawFulfillRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userProvidedSeed\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"requestNewRandomCharacter\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_seed\",\"type\":\"uint256\"}],\"name\":\"requestRandomness\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"requestRandomness(bytes32,uint256,uint256)\":{\"details\":\"The source of the seed data must be something which the oraclecannot anticipate. See \\\"SECURITY CONSIDERATIONS\\\" above.The fulfillRandomness method receives the output, once it's providedby the Oracle, and verified by the vrfCoordinator.The _keyHash must already be registered with the VRFCoordinator, andthe _fee must exceed the fee specified during registration of the_keyHash.The returned requestId can be used to distinguish responses to *concurrent requests. It is passed as the first argument tofulfillRandomness.\",\"params\":{\"_fee\":\"The amount of LINK to send with the request\",\"_keyHash\":\"ID of public key against which randomness is generated\",\"_seed\":\"Random seed from which output randomness is determined\"},\"returns\":{\"requestId\":\"which will be returned with the response to this request\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"constructor\":\"Constructor inherits VRFConsumerBase * Network: Rinkeby Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B LINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709 Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311\",\"requestRandomness(bytes32,uint256,uint256)\":{\"notice\":\"requestRandomness initiates a request for VRF output given _seed\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol\":\"DungeonsAndDragonsCharacter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol\":{\"keccak256\":\"0x9b588562f48266c3d4c0b60eae75190f751a31fca097484cebc9c273183cdffd\",\"urls\":[\"bzz-raw://9aa5676f0c5eb6a8dc41fa9f9a6e6d767e6a36a5e42ed23f4e9f9e5bddb4a8ad\",\"dweb:/ipfs/QmaDbCnRdkAZUHckfhyVMYDxMzQrpUpzDgaiGo41YxD4vM\"]},\"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol\":{\"keccak256\":\"0x183dc62c0b4490931e4c847e9e6a0a1e84d4f2ddfe2ab5cff44c7f1b2c848582\",\"urls\":[\"bzz-raw://d1c3ba3193145f2df8c10395887ee7f2e2ad33418fe8f0e86110e8321e6a70e0\",\"dweb:/ipfs/QmeiwQm3tioeLPUmCpJSWeKUi7LcB8gQgaFX34xwF7fqFW\"]},\"@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol\":{\"keccak256\":\"0x49fd3481ccbfedaedc2072f3338a873009e497a15279c857239c59cbf417ab9a\",\"urls\":[\"bzz-raw://78114391bf17e3fcbaa66b5fe75458d1b0621f5ede7394ce5baaa6042ab922a5\",\"dweb:/ipfs/QmUkrvFsVuXPWjjUtT8SbDkicWcmEn6GsbXkoEsopj3g7y\"]},\"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol\":{\"keccak256\":\"0xdbf46b45a4c9f38ba71a0391aed0e7b108854b619f292d907ae537228868bda6\",\"urls\":[\"bzz-raw://3ae40466809630c4731e2e3a697d6885727c577aaf260766c8a2f534ad3f6ee8\",\"dweb:/ipfs/QmTzpN5yP4Y5jvQ1ohfXFrce3sjzUiSChYJgZj9VvhVohG\"]},\"@chainlink/contracts/src/v0.6/vendor/SafeMath.sol\":{\"keccak256\":\"0x95dbe2dd5ab8682b99bc3d7d297b621d4237442da160f78d3323ee5c4a06ded3\",\"urls\":[\"bzz-raw://d753308ff4eb43fba6f9ede371a33f707c5818350770dcb078a7d78ac8251361\",\"dweb:/ipfs/Qme64eYKWoTQiP3WhqGHoMqrENNZ9L8SdBLQ2hx5SmzUda\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xb046d18f9d09683ca1c0ed6d80c61da8a8a7d9b30bad70a17b898538683eff74\",\"urls\":[\"bzz-raw://4728713afa6ae36cc9e92c7107c796a313add3ec20f813be2cde76c814486b2a\",\"dweb:/ipfs/QmUJBTXvYaGDF5PVnd5pUvYerc9DRXvqANDzgCzAp3FkkA\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xfa152b6e88a1dc50780e8f1580426dc23ad2e1e2c2f086a088adf206a202f453\",\"urls\":[\"bzz-raw://5127b264994adab88fae419b1c493efc5acd07134c19ee5c0397e50018291ebf\",\"dweb:/ipfs/QmWwJZVhvdmvUCdimbb6R2Jiu59zjPqm6XTMchM6LaEHAp\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xfc398838759c3248bdca40f7bc060e789c8d715df22f9eee7494bcafe14fa1b8\",\"urls\":[\"bzz-raw://ca2e28a5681be0558b2de6a24c107299925f8bd9e3244e9a70b033d6eab782c8\",\"dweb:/ipfs/QmX5kRT4Gwq4GQYfEdxVsE7PALpGfQEuQJhsfpCap9inKm\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xaf936da92f3a9a4f98b237323b5eb1d813fb86c4d07a184beba7027cf0509ba3\",\"urls\":[\"bzz-raw://aaa210e132e06975eb9f20060db6ba7dee78f6fce691a1c2489525584de521c0\",\"dweb:/ipfs/QmRwzi4nUW3UWBwhY5ik2xW3JZo9NMLN5UyGi1xPpMQYrh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x3636662804cd8f474536b2875a9038a4c3fb91879f1bbff48af5c3f140fcd2f0\",\"urls\":[\"bzz-raw://9fab8521263fa581544000cb57335a3f2e6bcdfbb5579d3ceaa5acf741c67c4f\",\"dweb:/ipfs/QmZfXnMom7JSNtfyie5yGPN1SUC4SmHbz4ScVBH88URmA7\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xe7f984cedc00a138dc27f263c73c32ba9a4b2fd23b6c34ac46f46c074b943538\",\"urls\":[\"bzz-raw://0f4acda12f076fe7584921241ddbb5b460ca7cad6cb8a42252ac7f2a9f539127\",\"dweb:/ipfs/QmQmfhkEv9GrhdWe67QtXnU19AMuoEmy31QnHPkucdYLjZ\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x321ee37ef4925020aa818a03ec7fe48e057561f65ab009a84f6c20c86026ade7\",\"urls\":[\"bzz-raw://01f9d74a17a56024984251b97e428e24c9d3abffbae5bd290f0ec263c82e9694\",\"dweb:/ipfs/QmRryCuuXu2ukrDmatB8TqdEhPLiK6NBRt41RiPUaX1qKy\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x244e4b74b17716120cf28e58636f11c699b8c0c94628bd952a95cee038d7e32b\",\"urls\":[\"bzz-raw://198d566157120c526bd6b5086b32cae85a11389b8a538f533ba9f9447915da0e\",\"dweb:/ipfs/QmeE6d8KWERx7f1FVS5tMnitNJxBm2yWXRSEUBF7R6voLh\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0xb2a11b236f073662f5a196995863f51c11d006bf7c3de158b316dfa1506c4b79\",\"urls\":[\"bzz-raw://8651649cf0b9efa18c3b01c030276fa320d41adbdc286833417e7f36e357b2f3\",\"dweb:/ipfs/QmafhM2Nd1aP43QVB1eRRZaqRXQKswNfQcWi8U8xjrxCfN\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x79484115dbfa737054f73e041009a02eeb434dd81be5d684bf4255ad3b5ab558\",\"urls\":[\"bzz-raw://12c119699463450c2544f5b9d8709b5e9e9164c62948a79c3ec53423a051d969\",\"dweb:/ipfs/QmPJduzSAaekq447QeFqAp3E7dc8CnNk5ajofckJ4ahA7Q\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b50604051620048f4380380620048f4833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082826040518060400160405280601b81526020017f44756e67656f6e73416e64447261676f6e7343686172616374657200000000008152506040518060400160405280600381526020017f4426440000000000000000000000000000000000000000000000000000000000815250620000e26301ffc9a760e01b6200033460201b60201c565b8160069080519060200190620000fa92919062000445565b5080600790805190602001906200011392919062000445565b506200012c6380ac58cd60e01b6200033460201b60201c565b62000144635b5e139f60e01b6200033460201b60201c565b6200015c63780e9d6360e01b6200033460201b60201c565b505081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000620001f46200043d60201b60201c565b905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e8190555067016345785d8a0000600f81905550505050620004f4565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620003d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200048857805160ff1916838001178555620004b9565b82800160010185558215620004b9579182015b82811115620004b85782518255916020019190600101906200049b565b5b509050620004c89190620004cc565b5090565b620004f191905b80821115620004ed576000816000905550600101620004d3565b5090565b90565b6143f080620005046000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80634f95b5f01161011a57806394985ddd116100ad578063b88d4fde1161007c578063b88d4fde14610d65578063c87b56dd14610e6a578063dc6cfe1014610f11578063e985e9c514610f67578063f2fde38b14610fe3576101fb565b806394985ddd14610c1857806395d89b4114610c505780639e317f1214610cd3578063a22cb46514610d15576101fb565b806370a08231116100e957806370a0823114610b2a578063715018a614610b8257806386481d4014610b8c5780638da5cb5b14610bce576101fb565b80634f95b5f0146109115780636352211e146109cd5780636c0360eb14610a3b5780636fe0c04614610abe576101fb565b80632f745c591161019257806342842e0e1161016157806342842e0e1461073f5780634810bc59146107ad5780634f6ccce7146108855780634f8e2fdf146108c7576101fb565b80632f745c59146105ce57806333b60863146106305780633bb3a24d1461067a57806342619f6614610721576101fb565b8063095ea7b3116101ce578063095ea7b31461042f578063162094c41461047d57806318160ddd1461054257806323b872dd14610560576101fb565b806301ffc9a71461020057806306396dbe1461026557806306fdde031461033e578063081812fc146103c1575b600080fd5b61024b6004803603602081101561021657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611027565b604051808215151515815260200191505060405180910390f35b6103286004803603604081101561027b57600080fd5b8101908080359060200190929190803590602001906401000000008111156102a257600080fd5b8201836020820111156102b457600080fd5b803590602001918460018302840111640100000000831117156102d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061108e565b6040518082815260200191505060405180910390f35b61034661125b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038657808201518184015260208101905061036b565b50505050905090810190601f1680156103b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed600480360360208110156103d757600080fd5b81019080803590602001909291905050506112fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047b6004803603604081101561044557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611398565b005b6105406004803603604081101561049357600080fd5b8101908080359060200190929190803590602001906401000000008111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111640100000000831117156104ee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114dc565b005b61054a611550565b6040518082815260200191505060405180910390f35b6105cc6004803603606081101561057657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611561565b005b61061a600480360360408110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d7565b6040518082815260200191505060405180910390f35b610638611632565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a66004803603602081101561069057600080fd5b8101908080359060200190929190505050611658565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e65780820151818401526020810190506106cb565b50505050905090810190601f1680156107135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61072961166a565b6040518082815260200191505060405180910390f35b6107ab6004803603606081101561075557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611670565b005b6107d9600480360360208110156107c357600080fd5b8101908080359060200190929190505050611690565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610843578082015181840152602081019050610828565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b6108b16004803603602081101561089b57600080fd5b810190808035906020019092919050505061177d565b6040518082815260200191505060405180910390f35b6108cf6117a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093d6004803603602081101561092757600080fd5b81019080803590602001909291905050506117c6565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561098f578082015181840152602081019050610974565b50505050905090810190601f1680156109bc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6109f9600480360360208110156109e357600080fd5b810190808035906020019092919050505061197d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a436119b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a83578082015181840152602081019050610a68565b50505050905090810190601f168015610ab05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610aea60048036036020811015610ad457600080fd5b8101908080359060200190929190505050611a56565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610b6c60048036036020811015610b4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b53565b6040518082815260200191505060405180910390f35b610b8a611c28565b005b610bb860048036036020811015610ba257600080fd5b8101908080359060200190929190505050611db3565b6040518082815260200191505060405180910390f35b610bd6611de3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c4e60048036036040811015610c2e57600080fd5b810190808035906020019092919080359060200190929190505050611e0d565b005b610c58611ede565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c98578082015181840152602081019050610c7d565b50505050905090810190601f168015610cc55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610cff60048036036020811015610ce957600080fd5b8101908080359060200190929190505050611f80565b6040518082815260200191505060405180910390f35b610d6360048036036040811015610d2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f98565b005b610e6860048036036080811015610d7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610de257600080fd5b820183602082011115610df457600080fd5b80359060200191846001830284011164010000000083111715610e1657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612150565b005b610e9660048036036020811015610e8057600080fd5b81019080803590602001909291905050506121c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ed6578082015181840152602081019050610ebb565b50505050905090810190601f168015610f035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f5160048036036060811015610f2757600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124b1565b6040518082815260200191505060405180910390f35b610fc960048036036040811015610f7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c3565b604051808215151515815260200191505060405180910390f35b61102560048036036020811015610ff957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612757565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f54600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561113257600080fd5b505afa158015611146573d6000803e3d6000fd5b505050506040513d602081101561115c57600080fd5b810190808051906020019092919050505010156111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806141b5602b913960400191505060405180910390fd5b60006111d5600e54600f54866124b1565b9050826014600083815260200190815260200160002090805190602001906111fe929190614071565b50336015600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508091505092915050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112f35780601f106112c8576101008083540402835291602001916112f3565b820191906000526020600020905b8154815290600101906020018083116112d657829003601f168201915b5050505050905090565b600061130882612967565b61135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142b9602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006113a38261197d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143696021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611449612984565b73ffffffffffffffffffffffffffffffffffffffff161480611478575061147781611472612984565b6126c3565b5b6114cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061420c6038913960400191505060405180910390fd5b6114d7838361298c565b505050565b6114ed6114e7612984565b83612a45565b611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b61154c8282612b39565b5050565b600061155c6002612bc3565b905090565b61157261156c612984565b82612a45565b6115c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b6115d2838383612bd8565b505050565b600061162a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e1b90919063ffffffff16565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611663826121c8565b9050919050565b60105481565b61168b83838360405180602001604052806000815250612150565b505050565b6013818154811061169d57fe5b9060005260206000209060080201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905088565b600080611794836002612e3590919063ffffffff16565b50905080915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000806000601385815481106117da57fe5b9060005260206000209060080201600701601386815481106117f857fe5b9060005260206000209060080201600501546013878154811061181757fe5b9060005260206000209060080201600401546013888154811061183657fe5b9060005260206000209060080201600301546013898154811061185557fe5b90600052602060002090600802016002015460138a8154811061187457fe5b90600052602060002090600802016001015460138b8154811061189357fe5b90600052602060002090600802016000015401010101016118b387611db3565b601388815481106118c057fe5b906000526020600020906008020160060154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119675780601f1061193c57610100808354040283529160200191611967565b820191906000526020600020905b81548152906001019060200180831161194a57829003601f168201915b5050505050935093509350935093509193509193565b60006119ad8260405180606001604052806029815260200161426e602991396002612e649092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4c5780601f10611a2157610100808354040283529160200191611a4c565b820191906000526020600020905b815481529060010190602001808311611a2f57829003601f168201915b5050505050905090565b600080600080600080600060138881548110611a6e57fe5b90600052602060002090600802016000015460138981548110611a8d57fe5b90600052602060002090600802016001015460138a81548110611aac57fe5b90600052602060002090600802016002015460138b81548110611acb57fe5b90600052602060002090600802016003015460138c81548110611aea57fe5b90600052602060002090600802016004015460138d81548110611b0957fe5b90600052602060002090600802016005015460138e81548110611b2857fe5b9060005260206000209060080201600601549650965096509650965096509650919395979092949650565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614244602a913960400191505060405180910390fd5b611c21600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e83565b9050919050565b611c30612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611ddc60138381548110611dc557fe5b906000526020600020906008020160060154612e98565b9050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c0081525060200191505060405180910390fd5b611eda8282612edd565b5050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f765780601f10611f4b57610100808354040283529160200191611f76565b820191906000526020600020905b815481529060010190602001808311611f5957829003601f168201915b5050505050905090565b600c6020528060005260406000206000915090505481565b611fa0612984565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061204e612984565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120fb612984565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61216161215b612984565b83612a45565b6121b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b6121c28484848461314e565b50505050565b60606121d382612967565b612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061433a602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122d15780601f106122a6576101008083540402835291602001916122d1565b820191906000526020600020905b8154815290600101906020018083116122b457829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561230057809150506124ac565b6000815111156123d957600981604051602001808380546001816001161561010002031660029004801561236b5780601f1061234957610100808354040283529182019161236b565b820191906000526020600020905b815481529060010190602001808311612357575b505082805190602001908083835b6020831061239c5780518252602082019150602081019050602083039250612379565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506124ac565b60096123e4846131c0565b60405160200180838054600181600116156101000203166002900480156124425780601f10612420576101008083540402835291820191612442565b820191906000526020600020905b81548152906001019060200180831161242e575b505082805190602001908083835b602083106124735780518252602082019150602081019050602083039250612450565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634000aea0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878660405160200180838152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c45780820151818401526020810190506125a9565b50505050905090810190601f1680156125f15780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561261257600080fd5b505af1158015612626573d6000803e3d6000fd5b505050506040513d602081101561263c57600080fd5b810190808051906020019092919050505050600061266f858430600c60008a815260200190815260200160002054613307565b90506126986001600c60008881526020019081526020016000205461338190919063ffffffff16565b600c6000878152602001908152602001600020819055506126b98582613409565b9150509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61275f612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061416b6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061297d82600261344290919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166129ff8361197d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5082612967565b612aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806141e0602c913960400191505060405180910390fd5b6000612ab08361197d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b1f57508373ffffffffffffffffffffffffffffffffffffffff16612b07846112fd565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b305750612b2f81856126c3565b5b91505092915050565b612b4282612967565b612b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142e5602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190612bbe929190614071565b505050565b6000612bd18260000161345c565b9050919050565b8273ffffffffffffffffffffffffffffffffffffffff16612bf88261197d565b73ffffffffffffffffffffffffffffffffffffffff1614612c64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143116029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141916024913960400191505060405180910390fd5b612cf583838361346d565b612d0060008261298c565b612d5181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061347290919063ffffffff16565b50612da381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061348c90919063ffffffff16565b50612dba818360026134a69092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e2a83600001836134db565b60001c905092915050565b600080600080612e48866000018661355e565b915091508160001c8160001c8090509350935050509250929050565b6000612e77846000018460001b846135f7565b60001c90509392505050565b6000612e91826000016136ed565b9050919050565b60008060026001840181612ea857fe5b0490508291505b81811015612ed757809150600281828581612ec657fe5b040181612ecf57fe5b049050612eaf565b50919050565b60006013805490509050600060648381612ef357fe5b069050600060646127108581612f0557fe5b0681612f0d57fe5b0490506000612710620f42408681612f2157fe5b0681612f2957fe5b0490506000620f42406305f5e1008781612f3f57fe5b0681612f4757fe5b04905060006305f5e1006402540be4008881612f5f57fe5b0681612f6757fe5b04905060006402540be40064e8d4a510008981612f8057fe5b0681612f8857fe5b04905060008090506013604051806101000160405280898152602001888152602001878152602001868152602001858152602001848152602001838152602001601460008e81526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561306f5780601f106130445761010080835404028352916020019161306f565b820191906000526020600020905b81548152906001019060200180831161305257829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007019080519060200190613102929190614071565b505050613142601560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896136fe565b50505050505050505050565b613159848484612bd8565b6131658484848461371c565b6131ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141396032913960400191505060405180910390fd5b50505050565b60606000821415613208576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613302565b600082905060005b60008214613232578080600101915050600a828161322a57fe5b049150613210565b60608167ffffffffffffffff8111801561324b57600080fd5b506040519080825280601f01601f19166020018201604052801561327e5781602001600182028036833780820191505090505b50905060006001830390508593505b600084146132fa57600a848161329f57fe5b0660300160f81b828280600190039350815181106132b957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84816132f257fe5b04935061328d565b819450505050505b919050565b600084848484604051602001808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b6000808284019050838110156133ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b6000613454836000018360001b613961565b905092915050565b600081600001805490509050919050565b505050565b6000613484836000018360001b613984565b905092915050565b600061349e836000018360001b613a6c565b905092915050565b60006134d2846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613adc565b90509392505050565b60008183600001805490501161353c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141176022913960400191505060405180910390fd5b82600001828154811061354b57fe5b9060005260206000200154905092915050565b600080828460000180549050116135c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142976022913960400191505060405180910390fd5b60008460000184815481106135d157fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906136be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613683578082015181840152602081019050613668565b50505050905090810190601f1680156136b05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106136d157fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b613718828260405180602001604052806000815250613bb8565b5050565b600061373d8473ffffffffffffffffffffffffffffffffffffffff16613c29565b61374a5760019050613959565b60606138e063150b7a0260e01b61375f612984565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561380f5780820151818401526020810190506137f4565b50505050905090810190601f16801561383c5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001614139603291398773ffffffffffffffffffffffffffffffffffffffff16613c3c9092919063ffffffff16565b905060008180602001905160208110156138f957600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114613a6057600060018203905060006001866000018054905003905060008660000182815481106139cf57fe5b90600052602060002001549050808760000184815481106139ec57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613a2457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613a66565b60009150505b92915050565b6000613a788383613c54565b613ad1578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613ad6565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613b8357846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613bb1565b82856000016001830381548110613b9657fe5b90600052602060002090600202016001018190555060009150505b9392505050565b613bc28383613c77565b613bcf600084848461371c565b613c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141396032913960400191505060405180910390fd5b505050565b600080823b905060008111915050919050565b6060613c4b8484600085613e6b565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613d2381612967565b15613d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613da26000838361346d565b613df381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061348c90919063ffffffff16565b50613e0a818360026134a69092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060613e7685613c29565b613ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f385780518252602082019150602081019050602083039250613f15565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f9a576040519150601f19603f3d011682016040523d82523d6000602084013e613f9f565b606091505b50915091508115613fb4578092505050614069565b600081511115613fc75780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561402e578082015181840152602081019050614013565b50505050905090810190601f16801561405b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106140b257805160ff19168380011785556140e0565b828001600101855582156140e0579182015b828111156140df5782518255916020019190600101906140c4565b5b5090506140ed91906140f1565b5090565b61411391905b8082111561410f5760008160009055506001016140f7565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742077697468206661756365744552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220ebc819fca625390394e437ca194a95627e5841dc52f998ad89b23a7184e39f1164736f6c63430006060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80634f95b5f01161011a57806394985ddd116100ad578063b88d4fde1161007c578063b88d4fde14610d65578063c87b56dd14610e6a578063dc6cfe1014610f11578063e985e9c514610f67578063f2fde38b14610fe3576101fb565b806394985ddd14610c1857806395d89b4114610c505780639e317f1214610cd3578063a22cb46514610d15576101fb565b806370a08231116100e957806370a0823114610b2a578063715018a614610b8257806386481d4014610b8c5780638da5cb5b14610bce576101fb565b80634f95b5f0146109115780636352211e146109cd5780636c0360eb14610a3b5780636fe0c04614610abe576101fb565b80632f745c591161019257806342842e0e1161016157806342842e0e1461073f5780634810bc59146107ad5780634f6ccce7146108855780634f8e2fdf146108c7576101fb565b80632f745c59146105ce57806333b60863146106305780633bb3a24d1461067a57806342619f6614610721576101fb565b8063095ea7b3116101ce578063095ea7b31461042f578063162094c41461047d57806318160ddd1461054257806323b872dd14610560576101fb565b806301ffc9a71461020057806306396dbe1461026557806306fdde031461033e578063081812fc146103c1575b600080fd5b61024b6004803603602081101561021657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611027565b604051808215151515815260200191505060405180910390f35b6103286004803603604081101561027b57600080fd5b8101908080359060200190929190803590602001906401000000008111156102a257600080fd5b8201836020820111156102b457600080fd5b803590602001918460018302840111640100000000831117156102d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061108e565b6040518082815260200191505060405180910390f35b61034661125b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038657808201518184015260208101905061036b565b50505050905090810190601f1680156103b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed600480360360208110156103d757600080fd5b81019080803590602001909291905050506112fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047b6004803603604081101561044557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611398565b005b6105406004803603604081101561049357600080fd5b8101908080359060200190929190803590602001906401000000008111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111640100000000831117156104ee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114dc565b005b61054a611550565b6040518082815260200191505060405180910390f35b6105cc6004803603606081101561057657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611561565b005b61061a600480360360408110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d7565b6040518082815260200191505060405180910390f35b610638611632565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a66004803603602081101561069057600080fd5b8101908080359060200190929190505050611658565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e65780820151818401526020810190506106cb565b50505050905090810190601f1680156107135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61072961166a565b6040518082815260200191505060405180910390f35b6107ab6004803603606081101561075557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611670565b005b6107d9600480360360208110156107c357600080fd5b8101908080359060200190929190505050611690565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610843578082015181840152602081019050610828565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b6108b16004803603602081101561089b57600080fd5b810190808035906020019092919050505061177d565b6040518082815260200191505060405180910390f35b6108cf6117a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093d6004803603602081101561092757600080fd5b81019080803590602001909291905050506117c6565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561098f578082015181840152602081019050610974565b50505050905090810190601f1680156109bc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6109f9600480360360208110156109e357600080fd5b810190808035906020019092919050505061197d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a436119b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a83578082015181840152602081019050610a68565b50505050905090810190601f168015610ab05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610aea60048036036020811015610ad457600080fd5b8101908080359060200190929190505050611a56565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610b6c60048036036020811015610b4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b53565b6040518082815260200191505060405180910390f35b610b8a611c28565b005b610bb860048036036020811015610ba257600080fd5b8101908080359060200190929190505050611db3565b6040518082815260200191505060405180910390f35b610bd6611de3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c4e60048036036040811015610c2e57600080fd5b810190808035906020019092919080359060200190929190505050611e0d565b005b610c58611ede565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c98578082015181840152602081019050610c7d565b50505050905090810190601f168015610cc55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610cff60048036036020811015610ce957600080fd5b8101908080359060200190929190505050611f80565b6040518082815260200191505060405180910390f35b610d6360048036036040811015610d2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f98565b005b610e6860048036036080811015610d7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610de257600080fd5b820183602082011115610df457600080fd5b80359060200191846001830284011164010000000083111715610e1657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612150565b005b610e9660048036036020811015610e8057600080fd5b81019080803590602001909291905050506121c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ed6578082015181840152602081019050610ebb565b50505050905090810190601f168015610f035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f5160048036036060811015610f2757600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124b1565b6040518082815260200191505060405180910390f35b610fc960048036036040811015610f7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c3565b604051808215151515815260200191505060405180910390f35b61102560048036036020811015610ff957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612757565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f54600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561113257600080fd5b505afa158015611146573d6000803e3d6000fd5b505050506040513d602081101561115c57600080fd5b810190808051906020019092919050505010156111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806141b5602b913960400191505060405180910390fd5b60006111d5600e54600f54866124b1565b9050826014600083815260200190815260200160002090805190602001906111fe929190614071565b50336015600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508091505092915050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112f35780601f106112c8576101008083540402835291602001916112f3565b820191906000526020600020905b8154815290600101906020018083116112d657829003601f168201915b5050505050905090565b600061130882612967565b61135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142b9602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006113a38261197d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143696021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611449612984565b73ffffffffffffffffffffffffffffffffffffffff161480611478575061147781611472612984565b6126c3565b5b6114cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061420c6038913960400191505060405180910390fd5b6114d7838361298c565b505050565b6114ed6114e7612984565b83612a45565b611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b61154c8282612b39565b5050565b600061155c6002612bc3565b905090565b61157261156c612984565b82612a45565b6115c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b6115d2838383612bd8565b505050565b600061162a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e1b90919063ffffffff16565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611663826121c8565b9050919050565b60105481565b61168b83838360405180602001604052806000815250612150565b505050565b6013818154811061169d57fe5b9060005260206000209060080201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905088565b600080611794836002612e3590919063ffffffff16565b50905080915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000806000601385815481106117da57fe5b9060005260206000209060080201600701601386815481106117f857fe5b9060005260206000209060080201600501546013878154811061181757fe5b9060005260206000209060080201600401546013888154811061183657fe5b9060005260206000209060080201600301546013898154811061185557fe5b90600052602060002090600802016002015460138a8154811061187457fe5b90600052602060002090600802016001015460138b8154811061189357fe5b90600052602060002090600802016000015401010101016118b387611db3565b601388815481106118c057fe5b906000526020600020906008020160060154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119675780601f1061193c57610100808354040283529160200191611967565b820191906000526020600020905b81548152906001019060200180831161194a57829003601f168201915b5050505050935093509350935093509193509193565b60006119ad8260405180606001604052806029815260200161426e602991396002612e649092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4c5780601f10611a2157610100808354040283529160200191611a4c565b820191906000526020600020905b815481529060010190602001808311611a2f57829003601f168201915b5050505050905090565b600080600080600080600060138881548110611a6e57fe5b90600052602060002090600802016000015460138981548110611a8d57fe5b90600052602060002090600802016001015460138a81548110611aac57fe5b90600052602060002090600802016002015460138b81548110611acb57fe5b90600052602060002090600802016003015460138c81548110611aea57fe5b90600052602060002090600802016004015460138d81548110611b0957fe5b90600052602060002090600802016005015460138e81548110611b2857fe5b9060005260206000209060080201600601549650965096509650965096509650919395979092949650565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614244602a913960400191505060405180910390fd5b611c21600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e83565b9050919050565b611c30612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611ddc60138381548110611dc557fe5b906000526020600020906008020160060154612e98565b9050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c0081525060200191505060405180910390fd5b611eda8282612edd565b5050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f765780601f10611f4b57610100808354040283529160200191611f76565b820191906000526020600020905b815481529060010190602001808311611f5957829003601f168201915b5050505050905090565b600c6020528060005260406000206000915090505481565b611fa0612984565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061204e612984565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120fb612984565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61216161215b612984565b83612a45565b6121b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b6121c28484848461314e565b50505050565b60606121d382612967565b612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061433a602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122d15780601f106122a6576101008083540402835291602001916122d1565b820191906000526020600020905b8154815290600101906020018083116122b457829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561230057809150506124ac565b6000815111156123d957600981604051602001808380546001816001161561010002031660029004801561236b5780601f1061234957610100808354040283529182019161236b565b820191906000526020600020905b815481529060010190602001808311612357575b505082805190602001908083835b6020831061239c5780518252602082019150602081019050602083039250612379565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506124ac565b60096123e4846131c0565b60405160200180838054600181600116156101000203166002900480156124425780601f10612420576101008083540402835291820191612442565b820191906000526020600020905b81548152906001019060200180831161242e575b505082805190602001908083835b602083106124735780518252602082019150602081019050602083039250612450565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634000aea0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878660405160200180838152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c45780820151818401526020810190506125a9565b50505050905090810190601f1680156125f15780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561261257600080fd5b505af1158015612626573d6000803e3d6000fd5b505050506040513d602081101561263c57600080fd5b810190808051906020019092919050505050600061266f858430600c60008a815260200190815260200160002054613307565b90506126986001600c60008881526020019081526020016000205461338190919063ffffffff16565b600c6000878152602001908152602001600020819055506126b98582613409565b9150509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61275f612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061416b6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061297d82600261344290919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166129ff8361197d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5082612967565b612aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806141e0602c913960400191505060405180910390fd5b6000612ab08361197d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b1f57508373ffffffffffffffffffffffffffffffffffffffff16612b07846112fd565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b305750612b2f81856126c3565b5b91505092915050565b612b4282612967565b612b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142e5602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190612bbe929190614071565b505050565b6000612bd18260000161345c565b9050919050565b8273ffffffffffffffffffffffffffffffffffffffff16612bf88261197d565b73ffffffffffffffffffffffffffffffffffffffff1614612c64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143116029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141916024913960400191505060405180910390fd5b612cf583838361346d565b612d0060008261298c565b612d5181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061347290919063ffffffff16565b50612da381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061348c90919063ffffffff16565b50612dba818360026134a69092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e2a83600001836134db565b60001c905092915050565b600080600080612e48866000018661355e565b915091508160001c8160001c8090509350935050509250929050565b6000612e77846000018460001b846135f7565b60001c90509392505050565b6000612e91826000016136ed565b9050919050565b60008060026001840181612ea857fe5b0490508291505b81811015612ed757809150600281828581612ec657fe5b040181612ecf57fe5b049050612eaf565b50919050565b60006013805490509050600060648381612ef357fe5b069050600060646127108581612f0557fe5b0681612f0d57fe5b0490506000612710620f42408681612f2157fe5b0681612f2957fe5b0490506000620f42406305f5e1008781612f3f57fe5b0681612f4757fe5b04905060006305f5e1006402540be4008881612f5f57fe5b0681612f6757fe5b04905060006402540be40064e8d4a510008981612f8057fe5b0681612f8857fe5b04905060008090506013604051806101000160405280898152602001888152602001878152602001868152602001858152602001848152602001838152602001601460008e81526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561306f5780601f106130445761010080835404028352916020019161306f565b820191906000526020600020905b81548152906001019060200180831161305257829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007019080519060200190613102929190614071565b505050613142601560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896136fe565b50505050505050505050565b613159848484612bd8565b6131658484848461371c565b6131ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141396032913960400191505060405180910390fd5b50505050565b60606000821415613208576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613302565b600082905060005b60008214613232578080600101915050600a828161322a57fe5b049150613210565b60608167ffffffffffffffff8111801561324b57600080fd5b506040519080825280601f01601f19166020018201604052801561327e5781602001600182028036833780820191505090505b50905060006001830390508593505b600084146132fa57600a848161329f57fe5b0660300160f81b828280600190039350815181106132b957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84816132f257fe5b04935061328d565b819450505050505b919050565b600084848484604051602001808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b6000808284019050838110156133ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b6000613454836000018360001b613961565b905092915050565b600081600001805490509050919050565b505050565b6000613484836000018360001b613984565b905092915050565b600061349e836000018360001b613a6c565b905092915050565b60006134d2846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613adc565b90509392505050565b60008183600001805490501161353c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141176022913960400191505060405180910390fd5b82600001828154811061354b57fe5b9060005260206000200154905092915050565b600080828460000180549050116135c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142976022913960400191505060405180910390fd5b60008460000184815481106135d157fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906136be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613683578082015181840152602081019050613668565b50505050905090810190601f1680156136b05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106136d157fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b613718828260405180602001604052806000815250613bb8565b5050565b600061373d8473ffffffffffffffffffffffffffffffffffffffff16613c29565b61374a5760019050613959565b60606138e063150b7a0260e01b61375f612984565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561380f5780820151818401526020810190506137f4565b50505050905090810190601f16801561383c5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001614139603291398773ffffffffffffffffffffffffffffffffffffffff16613c3c9092919063ffffffff16565b905060008180602001905160208110156138f957600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114613a6057600060018203905060006001866000018054905003905060008660000182815481106139cf57fe5b90600052602060002001549050808760000184815481106139ec57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613a2457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613a66565b60009150505b92915050565b6000613a788383613c54565b613ad1578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613ad6565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613b8357846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613bb1565b82856000016001830381548110613b9657fe5b90600052602060002090600202016001018190555060009150505b9392505050565b613bc28383613c77565b613bcf600084848461371c565b613c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141396032913960400191505060405180910390fd5b505050565b600080823b905060008111915050919050565b6060613c4b8484600085613e6b565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613d2381612967565b15613d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613da26000838361346d565b613df381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061348c90919063ffffffff16565b50613e0a818360026134a69092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060613e7685613c29565b613ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f385780518252602082019150602081019050602083039250613f15565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f9a576040519150601f19603f3d011682016040523d82523d6000602084013e613f9f565b606091505b50915091508115613fb4578092505050614069565b600081511115613fc75780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561402e578082015181840152602081019050614013565b50505050905090810190601f16801561405b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106140b257805160ff19168380011785556140e0565b828001600101855582156140e0579182015b828111156140df5782518255916020019190600101906140c4565b5b5090506140ed91906140f1565b5090565b61411391905b8082111561410f5760008160009055506001016140f7565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742077697468206661756365744552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220ebc819fca625390394e437ca194a95627e5841dc52f998ad89b23a7184e39f1164736f6c63430006060033", + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_VRFCoordinator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_LinkToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_keyhash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LinkToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VRFCoordinator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"characters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"strength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dexterity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"constitution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"intelligence\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wisdom\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"charisma\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"experience\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCharacterOverView\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCharacterStats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfCharacters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomResult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"randomness\",\"type\":\"uint256\"}],\"name\":\"rawFulfillRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userProvidedSeed\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"requestNewRandomCharacter\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_seed\",\"type\":\"uint256\"}],\"name\":\"requestRandomness\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"requestRandomness(bytes32,uint256,uint256)\":{\"details\":\"The source of the seed data must be something which the oraclecannot anticipate. See \\\"SECURITY CONSIDERATIONS\\\" above.The fulfillRandomness method receives the output, once it's providedby the Oracle, and verified by the vrfCoordinator.The _keyHash must already be registered with the VRFCoordinator, andthe _fee must exceed the fee specified during registration of the_keyHash.The returned requestId can be used to distinguish responses to *concurrent requests. It is passed as the first argument tofulfillRandomness.\",\"params\":{\"_fee\":\"The amount of LINK to send with the request\",\"_keyHash\":\"ID of public key against which randomness is generated\",\"_seed\":\"Random seed from which output randomness is determined\"},\"returns\":{\"requestId\":\"which will be returned with the response to this request\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"constructor\":\"Constructor inherits VRFConsumerBase * Network: Rinkeby Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B LINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709 Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311\",\"requestRandomness(bytes32,uint256,uint256)\":{\"notice\":\"requestRandomness initiates a request for VRF output given _seed\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol\":\"DungeonsAndDragonsCharacter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol\":{\"keccak256\":\"0x295463ce5af801b223623367581f41220310b6b0065ff6d0977c754f4fdd3cdc\",\"urls\":[\"bzz-raw://e534fef48e2075526ed31b2dcd016b3d6399f01b4e00a29bfe5955bf2fc8c5fb\",\"dweb:/ipfs/Qmf5cb6upFKk7DWRPpkGN18xWuFV74TbUupVFn3b8Lw68B\"]},\"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol\":{\"keccak256\":\"0x183dc62c0b4490931e4c847e9e6a0a1e84d4f2ddfe2ab5cff44c7f1b2c848582\",\"urls\":[\"bzz-raw://d1c3ba3193145f2df8c10395887ee7f2e2ad33418fe8f0e86110e8321e6a70e0\",\"dweb:/ipfs/QmeiwQm3tioeLPUmCpJSWeKUi7LcB8gQgaFX34xwF7fqFW\"]},\"@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol\":{\"keccak256\":\"0x49fd3481ccbfedaedc2072f3338a873009e497a15279c857239c59cbf417ab9a\",\"urls\":[\"bzz-raw://78114391bf17e3fcbaa66b5fe75458d1b0621f5ede7394ce5baaa6042ab922a5\",\"dweb:/ipfs/QmUkrvFsVuXPWjjUtT8SbDkicWcmEn6GsbXkoEsopj3g7y\"]},\"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol\":{\"keccak256\":\"0xdbf46b45a4c9f38ba71a0391aed0e7b108854b619f292d907ae537228868bda6\",\"urls\":[\"bzz-raw://3ae40466809630c4731e2e3a697d6885727c577aaf260766c8a2f534ad3f6ee8\",\"dweb:/ipfs/QmTzpN5yP4Y5jvQ1ohfXFrce3sjzUiSChYJgZj9VvhVohG\"]},\"@chainlink/contracts/src/v0.6/vendor/SafeMath.sol\":{\"keccak256\":\"0x95dbe2dd5ab8682b99bc3d7d297b621d4237442da160f78d3323ee5c4a06ded3\",\"urls\":[\"bzz-raw://d753308ff4eb43fba6f9ede371a33f707c5818350770dcb078a7d78ac8251361\",\"dweb:/ipfs/Qme64eYKWoTQiP3WhqGHoMqrENNZ9L8SdBLQ2hx5SmzUda\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xb046d18f9d09683ca1c0ed6d80c61da8a8a7d9b30bad70a17b898538683eff74\",\"urls\":[\"bzz-raw://4728713afa6ae36cc9e92c7107c796a313add3ec20f813be2cde76c814486b2a\",\"dweb:/ipfs/QmUJBTXvYaGDF5PVnd5pUvYerc9DRXvqANDzgCzAp3FkkA\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xfa152b6e88a1dc50780e8f1580426dc23ad2e1e2c2f086a088adf206a202f453\",\"urls\":[\"bzz-raw://5127b264994adab88fae419b1c493efc5acd07134c19ee5c0397e50018291ebf\",\"dweb:/ipfs/QmWwJZVhvdmvUCdimbb6R2Jiu59zjPqm6XTMchM6LaEHAp\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xfc398838759c3248bdca40f7bc060e789c8d715df22f9eee7494bcafe14fa1b8\",\"urls\":[\"bzz-raw://ca2e28a5681be0558b2de6a24c107299925f8bd9e3244e9a70b033d6eab782c8\",\"dweb:/ipfs/QmX5kRT4Gwq4GQYfEdxVsE7PALpGfQEuQJhsfpCap9inKm\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xaf936da92f3a9a4f98b237323b5eb1d813fb86c4d07a184beba7027cf0509ba3\",\"urls\":[\"bzz-raw://aaa210e132e06975eb9f20060db6ba7dee78f6fce691a1c2489525584de521c0\",\"dweb:/ipfs/QmRwzi4nUW3UWBwhY5ik2xW3JZo9NMLN5UyGi1xPpMQYrh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x3636662804cd8f474536b2875a9038a4c3fb91879f1bbff48af5c3f140fcd2f0\",\"urls\":[\"bzz-raw://9fab8521263fa581544000cb57335a3f2e6bcdfbb5579d3ceaa5acf741c67c4f\",\"dweb:/ipfs/QmZfXnMom7JSNtfyie5yGPN1SUC4SmHbz4ScVBH88URmA7\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xe7f984cedc00a138dc27f263c73c32ba9a4b2fd23b6c34ac46f46c074b943538\",\"urls\":[\"bzz-raw://0f4acda12f076fe7584921241ddbb5b460ca7cad6cb8a42252ac7f2a9f539127\",\"dweb:/ipfs/QmQmfhkEv9GrhdWe67QtXnU19AMuoEmy31QnHPkucdYLjZ\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x321ee37ef4925020aa818a03ec7fe48e057561f65ab009a84f6c20c86026ade7\",\"urls\":[\"bzz-raw://01f9d74a17a56024984251b97e428e24c9d3abffbae5bd290f0ec263c82e9694\",\"dweb:/ipfs/QmRryCuuXu2ukrDmatB8TqdEhPLiK6NBRt41RiPUaX1qKy\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x244e4b74b17716120cf28e58636f11c699b8c0c94628bd952a95cee038d7e32b\",\"urls\":[\"bzz-raw://198d566157120c526bd6b5086b32cae85a11389b8a538f533ba9f9447915da0e\",\"dweb:/ipfs/QmeE6d8KWERx7f1FVS5tMnitNJxBm2yWXRSEUBF7R6voLh\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0xb2a11b236f073662f5a196995863f51c11d006bf7c3de158b316dfa1506c4b79\",\"urls\":[\"bzz-raw://8651649cf0b9efa18c3b01c030276fa320d41adbdc286833417e7f36e357b2f3\",\"dweb:/ipfs/QmafhM2Nd1aP43QVB1eRRZaqRXQKswNfQcWi8U8xjrxCfN\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x79484115dbfa737054f73e041009a02eeb434dd81be5d684bf4255ad3b5ab558\",\"urls\":[\"bzz-raw://12c119699463450c2544f5b9d8709b5e9e9164c62948a79c3ec53423a051d969\",\"dweb:/ipfs/QmPJduzSAaekq447QeFqAp3E7dc8CnNk5ajofckJ4ahA7Q\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200492a3803806200492a833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082826040518060400160405280601b81526020017f44756e67656f6e73416e64447261676f6e7343686172616374657200000000008152506040518060400160405280600381526020017f4426440000000000000000000000000000000000000000000000000000000000815250620000e26301ffc9a760e01b6200033460201b60201c565b8160069080519060200190620000fa92919062000445565b5080600790805190602001906200011392919062000445565b506200012c6380ac58cd60e01b6200033460201b60201c565b62000144635b5e139f60e01b6200033460201b60201c565b6200015c63780e9d6360e01b6200033460201b60201c565b505081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000620001f46200043d60201b60201c565b905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e8190555067016345785d8a0000600f81905550505050620004f4565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620003d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200048857805160ff1916838001178555620004b9565b82800160010185558215620004b9579182015b82811115620004b85782518255916020019190600101906200049b565b5b509050620004c89190620004cc565b5090565b620004f191905b80821115620004ed576000816000905550600101620004d3565b5090565b90565b61442680620005046000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806362d36dec1161011a57806394985ddd116100ad578063b88d4fde1161007c578063b88d4fde14610d8e578063c87b56dd14610e93578063dc6cfe1014610f3a578063e985e9c514610f90578063f2fde38b1461100c57610206565b806394985ddd14610c4157806395d89b4114610c795780639e317f1214610cfc578063a22cb46514610d3e57610206565b806370a08231116100e957806370a0823114610b53578063715018a614610bab57806386481d4014610bb55780638da5cb5b14610bf757610206565b806362d36dec146109d85780636352211e146109f65780636c0360eb14610a645780636fe0c04614610ae757610206565b80632f745c591161019d57806342842e0e1161016c57806342842e0e1461074a5780634810bc59146107b85780634f6ccce7146108905780634f8e2fdf146108d25780634f95b5f01461091c57610206565b80632f745c59146105d957806333b608631461063b5780633bb3a24d1461068557806342619f661461072c57610206565b8063095ea7b3116101d9578063095ea7b31461043a578063162094c41461048857806318160ddd1461054d57806323b872dd1461056b57610206565b806301ffc9a71461020b57806306396dbe1461027057806306fdde0314610349578063081812fc146103cc575b600080fd5b6102566004803603602081101561022157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611050565b604051808215151515815260200191505060405180910390f35b6103336004803603604081101561028657600080fd5b8101908080359060200190929190803590602001906401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110b7565b6040518082815260200191505060405180910390f35b610351611284565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610391578082015181840152602081019050610376565b50505050905090810190601f1680156103be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f8600480360360208110156103e257600080fd5b8101908080359060200190929190505050611326565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104866004803603604081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113c1565b005b61054b6004803603604081101561049e57600080fd5b8101908080359060200190929190803590602001906401000000008111156104c557600080fd5b8201836020820111156104d757600080fd5b803590602001918460018302840111640100000000831117156104f957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611505565b005b610555611579565b6040518082815260200191505060405180910390f35b6105d76004803603606081101561058157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061158a565b005b610625600480360360408110156105ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611600565b6040518082815260200191505060405180910390f35b61064361165b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106b16004803603602081101561069b57600080fd5b8101908080359060200190929190505050611681565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f15780820151818401526020810190506106d6565b50505050905090810190601f16801561071e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610734611693565b6040518082815260200191505060405180910390f35b6107b66004803603606081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611699565b005b6107e4600480360360208110156107ce57600080fd5b81019080803590602001909291905050506116b9565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561084e578082015181840152602081019050610833565b50505050905090810190601f16801561087b5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b6108bc600480360360208110156108a657600080fd5b81019080803590602001909291905050506117a6565b6040518082815260200191505060405180910390f35b6108da6117c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109486004803603602081101561093257600080fd5b81019080803590602001909291905050506117ef565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561099a57808201518184015260208101905061097f565b50505050905090810190601f1680156109c75780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6109e06119a6565b6040518082815260200191505060405180910390f35b610a2260048036036020811015610a0c57600080fd5b81019080803590602001909291905050506119b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a6c6119ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aac578082015181840152602081019050610a91565b50505050905090810190601f168015610ad95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610b1360048036036020811015610afd57600080fd5b8101908080359060200190929190505050611a8c565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610b9560048036036020811015610b6957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b89565b6040518082815260200191505060405180910390f35b610bb3611c5e565b005b610be160048036036020811015610bcb57600080fd5b8101908080359060200190929190505050611de9565b6040518082815260200191505060405180910390f35b610bff611e19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c7760048036036040811015610c5757600080fd5b810190808035906020019092919080359060200190929190505050611e43565b005b610c81611f14565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cc1578082015181840152602081019050610ca6565b50505050905090810190601f168015610cee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d2860048036036020811015610d1257600080fd5b8101908080359060200190929190505050611fb6565b6040518082815260200191505060405180910390f35b610d8c60048036036040811015610d5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611fce565b005b610e9160048036036080811015610da457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610e0b57600080fd5b820183602082011115610e1d57600080fd5b80359060200191846001830284011164010000000083111715610e3f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612186565b005b610ebf60048036036020811015610ea957600080fd5b81019080803590602001909291905050506121fe565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610eff578082015181840152602081019050610ee4565b50505050905090810190601f168015610f2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f7a60048036036060811015610f5057600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124e7565b6040518082815260200191505060405180910390f35b610ff260048036036040811015610fa657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f9565b604051808215151515815260200191505060405180910390f35b61104e6004803603602081101561102257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061278d565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f54600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561115b57600080fd5b505afa15801561116f573d6000803e3d6000fd5b505050506040513d602081101561118557600080fd5b810190808051906020019092919050505010156111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806141eb602b913960400191505060405180910390fd5b60006111fe600e54600f54866124e7565b9050826014600083815260200190815260200160002090805190602001906112279291906140a7565b50336015600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508091505092915050565b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131c5780601f106112f15761010080835404028352916020019161131c565b820191906000526020600020905b8154815290600101906020018083116112ff57829003601f168201915b5050505050905090565b60006113318261299d565b611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142ef602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006113cc826119b3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061439f6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166114726129ba565b73ffffffffffffffffffffffffffffffffffffffff1614806114a157506114a08161149b6129ba565b6126f9565b5b6114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806142426038913960400191505060405180910390fd5b61150083836129c2565b505050565b6115166115106129ba565b83612a7b565b61156b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c06031913960400191505060405180910390fd5b6115758282612b6f565b5050565b60006115856002612bf9565b905090565b61159b6115956129ba565b82612a7b565b6115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c06031913960400191505060405180910390fd5b6115fb838383612c0e565b505050565b600061165382600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e5190919063ffffffff16565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061168c826121fe565b9050919050565b60105481565b6116b483838360405180602001604052806000815250612186565b505050565b601381815481106116c657fe5b9060005260206000209060080201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561179c5780601f106117715761010080835404028352916020019161179c565b820191906000526020600020905b81548152906001019060200180831161177f57829003601f168201915b5050505050905088565b6000806117bd836002612e6b90919063ffffffff16565b50905080915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060008060006013858154811061180357fe5b90600052602060002090600802016007016013868154811061182157fe5b9060005260206000209060080201600501546013878154811061184057fe5b9060005260206000209060080201600401546013888154811061185f57fe5b9060005260206000209060080201600301546013898154811061187e57fe5b90600052602060002090600802016002015460138a8154811061189d57fe5b90600052602060002090600802016001015460138b815481106118bc57fe5b90600052602060002090600802016000015401010101016118dc87611de9565b601388815481106118e957fe5b906000526020600020906008020160060154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119905780601f1061196557610100808354040283529160200191611990565b820191906000526020600020905b81548152906001019060200180831161197357829003601f168201915b5050505050935093509350935093509193509193565b6000601380549050905090565b60006119e3826040518060600160405280602981526020016142a4602991396002612e9a9092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a825780601f10611a5757610100808354040283529160200191611a82565b820191906000526020600020905b815481529060010190602001808311611a6557829003601f168201915b5050505050905090565b600080600080600080600060138881548110611aa457fe5b90600052602060002090600802016000015460138981548110611ac357fe5b90600052602060002090600802016001015460138a81548110611ae257fe5b90600052602060002090600802016002015460138b81548110611b0157fe5b90600052602060002090600802016003015460138c81548110611b2057fe5b90600052602060002090600802016004015460138d81548110611b3f57fe5b90600052602060002090600802016005015460138e81548110611b5e57fe5b9060005260206000209060080201600601549650965096509650965096509650919395979092949650565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061427a602a913960400191505060405180910390fd5b611c57600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612eb9565b9050919050565b611c666129ba565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611e1260138381548110611dfb57fe5b906000526020600020906008020160060154612ece565b9050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c0081525060200191505060405180910390fd5b611f108282612f13565b5050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fac5780601f10611f8157610100808354040283529160200191611fac565b820191906000526020600020905b815481529060010190602001808311611f8f57829003601f168201915b5050505050905090565b600c6020528060005260406000206000915090505481565b611fd66129ba565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612077576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b80600560006120846129ba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166121316129ba565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6121976121916129ba565b83612a7b565b6121ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c06031913960400191505060405180910390fd5b6121f884848484613184565b50505050565b60606122098261299d565b61225e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614370602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123075780601f106122dc57610100808354040283529160200191612307565b820191906000526020600020905b8154815290600101906020018083116122ea57829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561233657809150506124e2565b60008151111561240f5760098160405160200180838054600181600116156101000203166002900480156123a15780601f1061237f5761010080835404028352918201916123a1565b820191906000526020600020905b81548152906001019060200180831161238d575b505082805190602001908083835b602083106123d257805182526020820191506020810190506020830392506123af565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506124e2565b600961241a846131f6565b60405160200180838054600181600116156101000203166002900480156124785780601f10612456576101008083540402835291820191612478565b820191906000526020600020905b815481529060010190602001808311612464575b505082805190602001908083835b602083106124a95780518252602082019150602081019050602083039250612486565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634000aea0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878660405160200180838152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125fa5780820151818401526020810190506125df565b50505050905090810190601f1680156126275780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d602081101561267257600080fd5b81019080805190602001909291905050505060006126a5858430600c60008a81526020019081526020016000205461333d565b90506126ce6001600c6000888152602001908152602001600020546133b790919063ffffffff16565b600c6000878152602001908152602001600020819055506126ef858261343f565b9150509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6127956129ba565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141a16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006129b382600261347890919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612a35836119b3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a868261299d565b612adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614216602c913960400191505060405180910390fd5b6000612ae6836119b3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b5557508373ffffffffffffffffffffffffffffffffffffffff16612b3d84611326565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b665750612b6581856126f9565b5b91505092915050565b612b788261299d565b612bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061431b602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190612bf49291906140a7565b505050565b6000612c0782600001613492565b9050919050565b8273ffffffffffffffffffffffffffffffffffffffff16612c2e826119b3565b73ffffffffffffffffffffffffffffffffffffffff1614612c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143476029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141c76024913960400191505060405180910390fd5b612d2b8383836134a3565b612d366000826129c2565b612d8781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134a890919063ffffffff16565b50612dd981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134c290919063ffffffff16565b50612df0818360026134dc9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e608360000183613511565b60001c905092915050565b600080600080612e7e8660000186613594565b915091508160001c8160001c8090509350935050509250929050565b6000612ead846000018460001b8461362d565b60001c90509392505050565b6000612ec782600001613723565b9050919050565b60008060026001840181612ede57fe5b0490508291505b81811015612f0d57809150600281828581612efc57fe5b040181612f0557fe5b049050612ee5565b50919050565b60006013805490509050600060648381612f2957fe5b069050600060646127108581612f3b57fe5b0681612f4357fe5b0490506000612710620f42408681612f5757fe5b0681612f5f57fe5b0490506000620f42406305f5e1008781612f7557fe5b0681612f7d57fe5b04905060006305f5e1006402540be4008881612f9557fe5b0681612f9d57fe5b04905060006402540be40064e8d4a510008981612fb657fe5b0681612fbe57fe5b04905060008090506013604051806101000160405280898152602001888152602001878152602001868152602001858152602001848152602001838152602001601460008e81526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130a55780601f1061307a576101008083540402835291602001916130a5565b820191906000526020600020905b81548152906001019060200180831161308857829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070190805190602001906131389291906140a7565b505050613178601560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689613734565b50505050505050505050565b61318f848484612c0e565b61319b84848484613752565b6131f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061416f6032913960400191505060405180910390fd5b50505050565b6060600082141561323e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613338565b600082905060005b60008214613268578080600101915050600a828161326057fe5b049150613246565b60608167ffffffffffffffff8111801561328157600080fd5b506040519080825280601f01601f1916602001820160405280156132b45781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461333057600a84816132d557fe5b0660300160f81b828280600190039350815181106132ef57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161332857fe5b0493506132c3565b819450505050505b919050565b600084848484604051602001808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b600080828401905083811015613435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b600061348a836000018360001b613997565b905092915050565b600081600001805490509050919050565b505050565b60006134ba836000018360001b6139ba565b905092915050565b60006134d4836000018360001b613aa2565b905092915050565b6000613508846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613b12565b90509392505050565b600081836000018054905011613572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061414d6022913960400191505060405180910390fd5b82600001828154811061358157fe5b9060005260206000200154905092915050565b600080828460000180549050116135f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142cd6022913960400191505060405180910390fd5b600084600001848154811061360757fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906136f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136b957808201518184015260208101905061369e565b50505050905090810190601f1680156136e65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061370757fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b61374e828260405180602001604052806000815250613bee565b5050565b60006137738473ffffffffffffffffffffffffffffffffffffffff16613c5f565b613780576001905061398f565b606061391663150b7a0260e01b6137956129ba565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561384557808201518184015260208101905061382a565b50505050905090810190601f1680156138725780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180606001604052806032815260200161416f603291398773ffffffffffffffffffffffffffffffffffffffff16613c729092919063ffffffff16565b9050600081806020019051602081101561392f57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114613a965760006001820390506000600186600001805490500390506000866000018281548110613a0557fe5b9060005260206000200154905080876000018481548110613a2257fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613a5a57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613a9c565b60009150505b92915050565b6000613aae8383613c8a565b613b07578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613b0c565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613bb957846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613be7565b82856000016001830381548110613bcc57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b613bf88383613cad565b613c056000848484613752565b613c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061416f6032913960400191505060405180910390fd5b505050565b600080823b905060008111915050919050565b6060613c818484600085613ea1565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613d598161299d565b15613dcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613dd8600083836134a3565b613e2981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134c290919063ffffffff16565b50613e40818360026134dc9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060613eac85613c5f565b613f1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f6e5780518252602082019150602081019050602083039250613f4b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613fd0576040519150601f19603f3d011682016040523d82523d6000602084013e613fd5565b606091505b50915091508115613fea57809250505061409f565b600081511115613ffd5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614064578082015181840152602081019050614049565b50505050905090810190601f1680156140915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106140e857805160ff1916838001178555614116565b82800160010185558215614116579182015b828111156141155782518255916020019190600101906140fa565b5b5090506141239190614127565b5090565b61414991905b8082111561414557600081600090555060010161412d565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742077697468206661756365744552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122065b9a1d6ed63beeacd6d393175774e470f84597a2f191d3c05814d486984261d64736f6c63430006060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102065760003560e01c806362d36dec1161011a57806394985ddd116100ad578063b88d4fde1161007c578063b88d4fde14610d8e578063c87b56dd14610e93578063dc6cfe1014610f3a578063e985e9c514610f90578063f2fde38b1461100c57610206565b806394985ddd14610c4157806395d89b4114610c795780639e317f1214610cfc578063a22cb46514610d3e57610206565b806370a08231116100e957806370a0823114610b53578063715018a614610bab57806386481d4014610bb55780638da5cb5b14610bf757610206565b806362d36dec146109d85780636352211e146109f65780636c0360eb14610a645780636fe0c04614610ae757610206565b80632f745c591161019d57806342842e0e1161016c57806342842e0e1461074a5780634810bc59146107b85780634f6ccce7146108905780634f8e2fdf146108d25780634f95b5f01461091c57610206565b80632f745c59146105d957806333b608631461063b5780633bb3a24d1461068557806342619f661461072c57610206565b8063095ea7b3116101d9578063095ea7b31461043a578063162094c41461048857806318160ddd1461054d57806323b872dd1461056b57610206565b806301ffc9a71461020b57806306396dbe1461027057806306fdde0314610349578063081812fc146103cc575b600080fd5b6102566004803603602081101561022157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611050565b604051808215151515815260200191505060405180910390f35b6103336004803603604081101561028657600080fd5b8101908080359060200190929190803590602001906401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110b7565b6040518082815260200191505060405180910390f35b610351611284565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610391578082015181840152602081019050610376565b50505050905090810190601f1680156103be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f8600480360360208110156103e257600080fd5b8101908080359060200190929190505050611326565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104866004803603604081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113c1565b005b61054b6004803603604081101561049e57600080fd5b8101908080359060200190929190803590602001906401000000008111156104c557600080fd5b8201836020820111156104d757600080fd5b803590602001918460018302840111640100000000831117156104f957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611505565b005b610555611579565b6040518082815260200191505060405180910390f35b6105d76004803603606081101561058157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061158a565b005b610625600480360360408110156105ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611600565b6040518082815260200191505060405180910390f35b61064361165b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106b16004803603602081101561069b57600080fd5b8101908080359060200190929190505050611681565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f15780820151818401526020810190506106d6565b50505050905090810190601f16801561071e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610734611693565b6040518082815260200191505060405180910390f35b6107b66004803603606081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611699565b005b6107e4600480360360208110156107ce57600080fd5b81019080803590602001909291905050506116b9565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561084e578082015181840152602081019050610833565b50505050905090810190601f16801561087b5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b6108bc600480360360208110156108a657600080fd5b81019080803590602001909291905050506117a6565b6040518082815260200191505060405180910390f35b6108da6117c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109486004803603602081101561093257600080fd5b81019080803590602001909291905050506117ef565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561099a57808201518184015260208101905061097f565b50505050905090810190601f1680156109c75780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6109e06119a6565b6040518082815260200191505060405180910390f35b610a2260048036036020811015610a0c57600080fd5b81019080803590602001909291905050506119b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a6c6119ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aac578082015181840152602081019050610a91565b50505050905090810190601f168015610ad95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610b1360048036036020811015610afd57600080fd5b8101908080359060200190929190505050611a8c565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610b9560048036036020811015610b6957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b89565b6040518082815260200191505060405180910390f35b610bb3611c5e565b005b610be160048036036020811015610bcb57600080fd5b8101908080359060200190929190505050611de9565b6040518082815260200191505060405180910390f35b610bff611e19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c7760048036036040811015610c5757600080fd5b810190808035906020019092919080359060200190929190505050611e43565b005b610c81611f14565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cc1578082015181840152602081019050610ca6565b50505050905090810190601f168015610cee5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d2860048036036020811015610d1257600080fd5b8101908080359060200190929190505050611fb6565b6040518082815260200191505060405180910390f35b610d8c60048036036040811015610d5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611fce565b005b610e9160048036036080811015610da457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610e0b57600080fd5b820183602082011115610e1d57600080fd5b80359060200191846001830284011164010000000083111715610e3f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612186565b005b610ebf60048036036020811015610ea957600080fd5b81019080803590602001909291905050506121fe565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610eff578082015181840152602081019050610ee4565b50505050905090810190601f168015610f2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f7a60048036036060811015610f5057600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124e7565b6040518082815260200191505060405180910390f35b610ff260048036036040811015610fa657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126f9565b604051808215151515815260200191505060405180910390f35b61104e6004803603602081101561102257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061278d565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f54600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561115b57600080fd5b505afa15801561116f573d6000803e3d6000fd5b505050506040513d602081101561118557600080fd5b810190808051906020019092919050505010156111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806141eb602b913960400191505060405180910390fd5b60006111fe600e54600f54866124e7565b9050826014600083815260200190815260200160002090805190602001906112279291906140a7565b50336015600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508091505092915050565b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131c5780601f106112f15761010080835404028352916020019161131c565b820191906000526020600020905b8154815290600101906020018083116112ff57829003601f168201915b5050505050905090565b60006113318261299d565b611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142ef602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006113cc826119b3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061439f6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166114726129ba565b73ffffffffffffffffffffffffffffffffffffffff1614806114a157506114a08161149b6129ba565b6126f9565b5b6114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806142426038913960400191505060405180910390fd5b61150083836129c2565b505050565b6115166115106129ba565b83612a7b565b61156b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c06031913960400191505060405180910390fd5b6115758282612b6f565b5050565b60006115856002612bf9565b905090565b61159b6115956129ba565b82612a7b565b6115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c06031913960400191505060405180910390fd5b6115fb838383612c0e565b505050565b600061165382600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e5190919063ffffffff16565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061168c826121fe565b9050919050565b60105481565b6116b483838360405180602001604052806000815250612186565b505050565b601381815481106116c657fe5b9060005260206000209060080201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561179c5780601f106117715761010080835404028352916020019161179c565b820191906000526020600020905b81548152906001019060200180831161177f57829003601f168201915b5050505050905088565b6000806117bd836002612e6b90919063ffffffff16565b50905080915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060008060006013858154811061180357fe5b90600052602060002090600802016007016013868154811061182157fe5b9060005260206000209060080201600501546013878154811061184057fe5b9060005260206000209060080201600401546013888154811061185f57fe5b9060005260206000209060080201600301546013898154811061187e57fe5b90600052602060002090600802016002015460138a8154811061189d57fe5b90600052602060002090600802016001015460138b815481106118bc57fe5b90600052602060002090600802016000015401010101016118dc87611de9565b601388815481106118e957fe5b906000526020600020906008020160060154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119905780601f1061196557610100808354040283529160200191611990565b820191906000526020600020905b81548152906001019060200180831161197357829003601f168201915b5050505050935093509350935093509193509193565b6000601380549050905090565b60006119e3826040518060600160405280602981526020016142a4602991396002612e9a9092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a825780601f10611a5757610100808354040283529160200191611a82565b820191906000526020600020905b815481529060010190602001808311611a6557829003601f168201915b5050505050905090565b600080600080600080600060138881548110611aa457fe5b90600052602060002090600802016000015460138981548110611ac357fe5b90600052602060002090600802016001015460138a81548110611ae257fe5b90600052602060002090600802016002015460138b81548110611b0157fe5b90600052602060002090600802016003015460138c81548110611b2057fe5b90600052602060002090600802016004015460138d81548110611b3f57fe5b90600052602060002090600802016005015460138e81548110611b5e57fe5b9060005260206000209060080201600601549650965096509650965096509650919395979092949650565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061427a602a913960400191505060405180910390fd5b611c57600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612eb9565b9050919050565b611c666129ba565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611e1260138381548110611dfb57fe5b906000526020600020906008020160060154612ece565b9050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c0081525060200191505060405180910390fd5b611f108282612f13565b5050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fac5780601f10611f8157610100808354040283529160200191611fac565b820191906000526020600020905b815481529060010190602001808311611f8f57829003601f168201915b5050505050905090565b600c6020528060005260406000206000915090505481565b611fd66129ba565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612077576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b80600560006120846129ba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166121316129ba565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6121976121916129ba565b83612a7b565b6121ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c06031913960400191505060405180910390fd5b6121f884848484613184565b50505050565b60606122098261299d565b61225e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614370602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123075780601f106122dc57610100808354040283529160200191612307565b820191906000526020600020905b8154815290600101906020018083116122ea57829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561233657809150506124e2565b60008151111561240f5760098160405160200180838054600181600116156101000203166002900480156123a15780601f1061237f5761010080835404028352918201916123a1565b820191906000526020600020905b81548152906001019060200180831161238d575b505082805190602001908083835b602083106123d257805182526020820191506020810190506020830392506123af565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506124e2565b600961241a846131f6565b60405160200180838054600181600116156101000203166002900480156124785780601f10612456576101008083540402835291820191612478565b820191906000526020600020905b815481529060010190602001808311612464575b505082805190602001908083835b602083106124a95780518252602082019150602081019050602083039250612486565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634000aea0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878660405160200180838152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125fa5780820151818401526020810190506125df565b50505050905090810190601f1680156126275780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561264857600080fd5b505af115801561265c573d6000803e3d6000fd5b505050506040513d602081101561267257600080fd5b81019080805190602001909291905050505060006126a5858430600c60008a81526020019081526020016000205461333d565b90506126ce6001600c6000888152602001908152602001600020546133b790919063ffffffff16565b600c6000878152602001908152602001600020819055506126ef858261343f565b9150509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6127956129ba565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141a16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006129b382600261347890919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612a35836119b3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a868261299d565b612adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614216602c913960400191505060405180910390fd5b6000612ae6836119b3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b5557508373ffffffffffffffffffffffffffffffffffffffff16612b3d84611326565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b665750612b6581856126f9565b5b91505092915050565b612b788261299d565b612bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061431b602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190612bf49291906140a7565b505050565b6000612c0782600001613492565b9050919050565b8273ffffffffffffffffffffffffffffffffffffffff16612c2e826119b3565b73ffffffffffffffffffffffffffffffffffffffff1614612c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143476029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141c76024913960400191505060405180910390fd5b612d2b8383836134a3565b612d366000826129c2565b612d8781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134a890919063ffffffff16565b50612dd981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134c290919063ffffffff16565b50612df0818360026134dc9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e608360000183613511565b60001c905092915050565b600080600080612e7e8660000186613594565b915091508160001c8160001c8090509350935050509250929050565b6000612ead846000018460001b8461362d565b60001c90509392505050565b6000612ec782600001613723565b9050919050565b60008060026001840181612ede57fe5b0490508291505b81811015612f0d57809150600281828581612efc57fe5b040181612f0557fe5b049050612ee5565b50919050565b60006013805490509050600060648381612f2957fe5b069050600060646127108581612f3b57fe5b0681612f4357fe5b0490506000612710620f42408681612f5757fe5b0681612f5f57fe5b0490506000620f42406305f5e1008781612f7557fe5b0681612f7d57fe5b04905060006305f5e1006402540be4008881612f9557fe5b0681612f9d57fe5b04905060006402540be40064e8d4a510008981612fb657fe5b0681612fbe57fe5b04905060008090506013604051806101000160405280898152602001888152602001878152602001868152602001858152602001848152602001838152602001601460008e81526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130a55780601f1061307a576101008083540402835291602001916130a5565b820191906000526020600020905b81548152906001019060200180831161308857829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070190805190602001906131389291906140a7565b505050613178601560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689613734565b50505050505050505050565b61318f848484612c0e565b61319b84848484613752565b6131f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061416f6032913960400191505060405180910390fd5b50505050565b6060600082141561323e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613338565b600082905060005b60008214613268578080600101915050600a828161326057fe5b049150613246565b60608167ffffffffffffffff8111801561328157600080fd5b506040519080825280601f01601f1916602001820160405280156132b45781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461333057600a84816132d557fe5b0660300160f81b828280600190039350815181106132ef57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161332857fe5b0493506132c3565b819450505050505b919050565b600084848484604051602001808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b600080828401905083811015613435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b600061348a836000018360001b613997565b905092915050565b600081600001805490509050919050565b505050565b60006134ba836000018360001b6139ba565b905092915050565b60006134d4836000018360001b613aa2565b905092915050565b6000613508846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613b12565b90509392505050565b600081836000018054905011613572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061414d6022913960400191505060405180910390fd5b82600001828154811061358157fe5b9060005260206000200154905092915050565b600080828460000180549050116135f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142cd6022913960400191505060405180910390fd5b600084600001848154811061360757fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906136f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136b957808201518184015260208101905061369e565b50505050905090810190601f1680156136e65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061370757fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b61374e828260405180602001604052806000815250613bee565b5050565b60006137738473ffffffffffffffffffffffffffffffffffffffff16613c5f565b613780576001905061398f565b606061391663150b7a0260e01b6137956129ba565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561384557808201518184015260208101905061382a565b50505050905090810190601f1680156138725780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180606001604052806032815260200161416f603291398773ffffffffffffffffffffffffffffffffffffffff16613c729092919063ffffffff16565b9050600081806020019051602081101561392f57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114613a965760006001820390506000600186600001805490500390506000866000018281548110613a0557fe5b9060005260206000200154905080876000018481548110613a2257fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613a5a57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613a9c565b60009150505b92915050565b6000613aae8383613c8a565b613b07578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613b0c565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613bb957846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613be7565b82856000016001830381548110613bcc57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b613bf88383613cad565b613c056000848484613752565b613c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061416f6032913960400191505060405180910390fd5b505050565b600080823b905060008111915050919050565b6060613c818484600085613ea1565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613d598161299d565b15613dcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613dd8600083836134a3565b613e2981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134c290919063ffffffff16565b50613e40818360026134dc9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060613eac85613c5f565b613f1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f6e5780518252602082019150602081019050602083039250613f4b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613fd0576040519150601f19603f3d011682016040523d82523d6000602084013e613fd5565b606091505b50915091508115613fea57809250505061409f565b600081511115613ffd5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614064578082015181840152602081019050614049565b50505050905090810190601f1680156140915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106140e857805160ff1916838001178555614116565b82800160010185558215614116579182015b828111156141155782518255916020019190600101906140fa565b5b5090506141239190614127565b5090565b61414991905b8082111561414557600081600090555060010161412d565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742077697468206661756365744552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122065b9a1d6ed63beeacd6d393175774e470f84597a2f191d3c05814d486984261d64736f6c63430006060033", "immutableReferences": {}, - "sourceMap": "326:4863:0:-:0;;;1520:352;5:9:-1;2:2;;;27:1;24;17:12;2:2;1520:352:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1520:352:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:15;1651:10;3567:365:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;751:40:8;418:10;770:20;;751:18;;;:40;;:::i;:::-;3647:4:11;3639:5;:12;;;;;;;;;;;;:::i;:::-;;3671:6;3661:7;:16;;;;;;;;;;;;:::i;:::-;;3765:40;2732:10;3784:20;;3765:18;;;:40;;:::i;:::-;3815:49;3064:10;3834:29;;3815:18;;;:49;;:::i;:::-;3874:51;3437:10;3893:31;;3874:18;;;:51;;:::i;:::-;3567:365;;6891:15:2;6874:14;;:32;;;;;;;;;;;;;;;;;;6938:5;6912:4;;:32;;;;;;;;;;;;;;;;;;6809:140;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;1750:15:0::2;1733:14;;:32;;;;;;;;;;;;;;;;;;1787:10;1775:9;;:22;;;;;;;;;;;;;;;;;;1817:8;1807:7;:18;;;;1841:12;1835:3;:18;;;;1520:352:::0;;;326:4863;;1482:198:8;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;590:104:6:-;643:15;677:10;670:17;;590:104;:::o;326:4863:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "326:4863:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;326:4863:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;948:140:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;948:140:8;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1878:475:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1878:475:0;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;1878:475:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1878:475:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1878:475:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1878:475:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4488:90:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4488:90:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7095:209;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7095:209:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6653:381;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6653:381:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2480:266:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2480:266:0;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;2480:266:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2480:266:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2480:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2480:266:0;;;;;;;;;;;;;;;:::i;:::-;;6163:200:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7943:300;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7943:300:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5940:152;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5940:152:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;557:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2359:115;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2359:115:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2359:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;524:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8309:149:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8309:149:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;984:29:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;984:29:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;984:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:161:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6435:161:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;651:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3841:547;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3841:547:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3841:547:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4259:167:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4259:167:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5774:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5774:87:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4394:587:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4394:587:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3991:211:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3991:211:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1689:145:7;;;:::i;:::-;;3710:125:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3710:125:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1066:77:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7144:207:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7144:207:2;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4642:94:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4642:94:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:67:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6738:67:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7371:290:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7371:290:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8524:282;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8524:282:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;8524:282:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8524:282:11;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8524:282:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8524:282:11;;;;;;;;;;;;;;;:::i;:::-;;4802:740;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4802:740:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4802:740:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5871:656:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5871:656:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7727:154:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7727:154:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1983:240:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1983:240:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;948:140:8;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;1878:475:0:-;1997:7;2070:3;;2037:4;;;;;;;;;;;:14;;;2060:4;2037:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2037:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2037:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2037:29:0;;;;;;;;;;;;;;;;:36;;2016:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2152:17;2172:49;2190:7;;2199:3;;2204:16;2172:17;:49::i;:::-;2152:69;;2267:4;2231:22;:33;2254:9;2231:33;;;;;;;;;;;:40;;;;;;;;;;;;:::i;:::-;;2310:10;2281:15;:26;2297:9;2281:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2337:9;2330:16;;;1878:475;;;;:::o;4488:90:11:-;4534:13;4566:5;4559:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4488:90;:::o;7095:209::-;7163:7;7190:16;7198:7;7190;:16::i;:::-;7182:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7273:15;:24;7289:7;7273:24;;;;;;;;;;;;;;;;;;;;;7266:31;;7095:209;;;:::o;6653:381::-;6733:13;6749:16;6757:7;6749;:16::i;:::-;6733:32;;6789:5;6783:11;;:2;:11;;;;6775:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6867:5;6851:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;6876:37;6893:5;6900:12;:10;:12::i;:::-;6876:16;:37::i;:::-;6851:62;6843:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7006:21;7015:2;7019:7;7006:8;:21::i;:::-;6653:381;;;:::o;2480:266:0:-;2581:41;2600:12;:10;:12::i;:::-;2614:7;2581:18;:41::i;:::-;2560:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2707:32;2720:7;2729:9;2707:12;:32::i;:::-;2480:266;;:::o;6163:200:11:-;6216:7;6335:21;:12;:19;:21::i;:::-;6328:28;;6163:200;:::o;7943:300::-;8102:41;8121:12;:10;:12::i;:::-;8135:7;8102:18;:41::i;:::-;8094:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8208:28;8218:4;8224:2;8228:7;8208:9;:28::i;:::-;7943:300;;;:::o;5940:152::-;6029:7;6055:30;6079:5;6055:13;:20;6069:5;6055:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;6048:37;;5940:152;;;;:::o;557:29:0:-;;;;;;;;;;;;;:::o;2359:115::-;2418:13;2450:17;2459:7;2450:8;:17::i;:::-;2443:24;;2359:115;;;:::o;524:27::-;;;;:::o;8309:149:11:-;8412:39;8429:4;8435:2;8439:7;8412:39;;;;;;;;;;;;:16;:39::i;:::-;8309:149;;;:::o;984:29:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6435:161:11:-;6502:7;6522:15;6543:22;6559:5;6543:12;:15;;:22;;;;:::i;:::-;6521:44;;;6582:7;6575:14;;;6435:161;;;:::o;651:24:0:-;;;;;;;;;;;;;:::o;3841:547::-;3946:13;3973:7;3994;4015;4068:10;4079:7;4068:19;;;;;;;;;;;;;;;;;;:24;;4268:10;4279:7;4268:19;;;;;;;;;;;;;;;;;;:28;;;4239:10;4250:7;4239:19;;;;;;;;;;;;;;;;;;:26;;;4204:10;4215:7;4204:19;;;;;;;;;;;;;;;;;;:32;;;4169:10;4180:7;4169:19;;;;;;;;;;;;;;;;;;:32;;;4137:10;4148:7;4137:19;;;;;;;;;;;;;;;;;;:29;;;4106:10;4117:7;4106:19;;;;;;;;;;;;;;;;;;:28;;;:60;:95;:130;:159;:190;4310:17;4319:7;4310:8;:17::i;:::-;4341:10;4352:7;4341:19;;;;;;;;;;;;;;;;;;:30;;;4047:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3841:547;;;;;:::o;4259:167:11:-;4323:7;4349:70;4366:7;4349:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4342:77;;4259:167;;;:::o;5774:87::-;5814:13;5846:8;5839:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5774:87;:::o;4394:587:0:-;4496:7;4517;4538;4559;4580;4601;4622;4675:10;4686:7;4675:19;;;;;;;;;;;;;;;;;;:28;;;4717:10;4728:7;4717:19;;;;;;;;;;;;;;;;;;:29;;;4760:10;4771:7;4760:19;;;;;;;;;;;;;;;;;;:32;;;4806:10;4817:7;4806:19;;;;;;;;;;;;;;;;;;:32;;;4852:10;4863:7;4852:19;;;;;;;;;;;;;;;;;;:26;;;4892:10;4903:7;4892:19;;;;;;;;;;;;;;;;;;:28;;;4934:10;4945:7;4934:19;;;;;;;;;;;;;;;;;;:30;;;4654:320;;;;;;;;;;;;;;4394:587;;;;;;;;;:::o;3991:211:11:-;4055:7;4099:1;4082:19;;:5;:19;;;;4074:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4166:29;:13;:20;4180:5;4166:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4159:36;;3991:211;;;:::o;1689:145:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;;;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6;;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;3710:125:0:-;3766:7;3792:36;3797:10;3808:7;3797:19;;;;;;;;;;;;;;;;;;:30;;;3792:4;:36::i;:::-;3785:43;;3710:125;;;:::o;1066:77:7:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;7144:207:2:-;7250:14;;;;;;;;;;;7236:28;;:10;:28;;;7228:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7306:40;7324:9;7335:10;7306:17;:40::i;:::-;7144:207;;:::o;4642:94:11:-;4690:13;4722:7;4715:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4642:94;:::o;6738:67:2:-;;;;;;;;;;;;;;;;;:::o;7371:290:11:-;7485:12;:10;:12::i;:::-;7473:24;;:8;:24;;;;7465:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7583:8;7538:18;:32;7557:12;:10;:12::i;:::-;7538:32;;;;;;;;;;;;;;;:42;7571:8;7538:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;7635:8;7606:48;;7621:12;:10;:12::i;:::-;7606:48;;;7645:8;7606:48;;;;;;;;;;;;;;;;;;;;;;7371:290;;:::o;8524:282::-;8655:41;8674:12;:10;:12::i;:::-;8688:7;8655:18;:41::i;:::-;8647:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8760:39;8774:4;8780:2;8784:7;8793:5;8760:13;:39::i;:::-;8524:282;;;;:::o;4802:740::-;4867:13;4900:16;4908:7;4900;:16::i;:::-;4892:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4979:23;5005:10;:19;5016:7;5005:19;;;;;;;;;;;4979:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5123:1;5103:8;5097:22;;;;;;;;;;;;;;;;:27;5093:74;;;5147:9;5140:16;;;;;5093:74;5295:1;5275:9;5269:23;:27;5265:110;;;5343:8;5353:9;5326:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5326:37:11;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5326:37:11;;;5312:52;;;;;5265:110;5505:8;5515:18;:7;:16;:18::i;:::-;5488:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5488:46:11;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5488:46:11;;;5474:61;;;4802:740;;;;:::o;5871:656:2:-;5965:17;5992:4;;;;;;;;;;;:20;;;6013:14;;;;;;;;;;;6029:4;6046:8;6056:5;6035:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6035:27:2;;;5992:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5992:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5992:71:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5992:71:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5992:71:2;;;;;;;;;;;;;;;;;6138:15;6157:66;6174:8;6184:5;6199:4;6206:6;:16;6213:8;6206:16;;;;;;;;;;;;6157;:66::i;:::-;6138:85;;6453:23;6474:1;6453:6;:16;6460:8;6453:16;;;;;;;;;;;;:20;;:23;;;;:::i;:::-;6434:6;:16;6441:8;6434:16;;;;;;;;;;;:42;;;;6490:32;6504:8;6514:7;6490:13;:32::i;:::-;6483:39;;;5871:656;;;;;:::o;7727:154:11:-;7816:4;7839:18;:25;7858:5;7839:25;;;;;;;;;;;;;;;:35;7865:8;7839:35;;;;;;;;;;;;;;;;;;;;;;;;;7832:42;;7727:154;;;;:::o;1983:240:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;;;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;;:17;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;10240:117:11:-;10297:4;10320:30;10342:7;10320:12;:21;;:30;;;;:::i;:::-;10313:37;;10240:117;;;:::o;590:104:6:-;643:15;677:10;670:17;;590:104;:::o;15896:155:11:-;15988:2;15961:15;:24;15977:7;15961:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16036:7;16032:2;16005:39;;16014:16;16022:7;16014;:16::i;:::-;16005:39;;;;;;;;;;;;15896:155;;:::o;10515:329::-;10600:4;10624:16;10632:7;10624;:16::i;:::-;10616:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10699:13;10715:16;10723:7;10715;:16::i;:::-;10699:32;;10760:5;10749:16;;:7;:16;;;:51;;;;10793:7;10769:31;;:20;10781:7;10769:11;:20::i;:::-;:31;;;10749:51;:87;;;;10804:32;10821:5;10828:7;10804:16;:32::i;:::-;10749:87;10741:96;;;10515:329;;;;:::o;14215:212::-;14314:16;14322:7;14314;:16::i;:::-;14306:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14411:9;14389:10;:19;14400:7;14389:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;14215:212;;:::o;7023:121:17:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;13509:559:11:-;13626:4;13606:24;;:16;13614:7;13606;:16::i;:::-;:24;;;13598:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13708:1;13694:16;;:2;:16;;;;13686:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13762:39;13783:4;13789:2;13793:7;13762:20;:39::i;:::-;13863:29;13880:1;13884:7;13863:8;:29::i;:::-;13903:35;13930:7;13903:13;:19;13917:4;13903:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;13948:30;13970:7;13948:13;:17;13962:2;13948:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;13989:29;14006:7;14015:2;13989:12;:16;;:29;;;;;:::i;:::-;;14053:7;14049:2;14034:27;;14043:4;14034:27;;;;;;;;;;;;13509:559;;;:::o;7649:135:18:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;7472:224:17:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:18:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;4987:200:0:-;5035:9;5056;5078:1;5073;5069;:5;5068:11;;;;;;5056:23;;5093:1;5089:5;;5104:77;5115:1;5111;:5;5104:77;;;5136:1;5132:5;;5169:1;5164;5160;5156;:5;;;;;;:9;5155:15;;;;;;5151:19;;5104:77;;;4987:200;;;;:::o;2752:952::-;2868:13;2884:10;:17;;;;2868:33;;2911:16;2946:3;2931:12;:18;;;;;;2911:39;;2960:17;3006:3;2997:5;2982:12;:20;;;;;;2981:28;;;;;;2960:51;;3021:20;3072:5;3061:7;3046:12;:22;;;;;;3045:32;;;;;;3021:58;;3089:20;3142:7;3129:9;3114:12;:24;;;;;;3113:36;;;;;;3089:62;;3161:14;3210:9;3195:11;3180:12;:26;;;;;;3179:40;;;;;;3161:60;;3231:16;3284:11;3267:13;3252:12;:28;;;;;;3251:44;;;;;;3231:65;;3306:18;3327:1;3306:22;;3339:10;3368:265;;;;;;;;3395:8;3368:265;;;;3421:9;3368:265;;;;3448:12;3368:265;;;;3478:12;3368:265;;;;3508:6;3368:265;;;;3532:8;3368:265;;;;3558:10;3368:265;;;;3586:22;:33;3609:9;3586:33;;;;;;;;;;;3368:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3339:304;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;3339:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;3653:44;3663:15;:26;3679:9;3663:26;;;;;;;;;;;;;;;;;;;;;3691:5;3653:9;:44::i;:::-;2752:952;;;;;;;;;;:::o;9668:269:11:-;9781:28;9791:4;9797:2;9801:7;9781:9;:28::i;:::-;9827:48;9850:4;9856:2;9860:7;9869:5;9827:22;:48::i;:::-;9819:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:269;;;;:::o;202:723:19:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;691:17:19;;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;124:4;108:14;100:6;87:42;155:4;147:6;143:17;133:27;;0:164;691:17:19;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;1095:231:3:-;1225:7;1279:8;1289:9;1300:10;1312:6;1268:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1268:51:3;;;1258:62;;;;;;1250:71;;1242:79;;1095:231;;;;;;:::o;822:162:5:-;880:7;895:9;911:1;907;:5;895:17;;931:1;926;:6;;918:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:1;971:8;;;822:162;;;;:::o;1706:171:3:-;1798:7;1847:8;1857:13;1830:41;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1830:41:3;;;1820:52;;;;;;1813:59;;1706:171;;;;:::o;6791:149:17:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;16647:93:11:-;;;;:::o;6764:135:18:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:17:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:18:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;4934:274:17:-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5774:36:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:18:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;11175:108:11:-;11250:26;11260:2;11264:7;11250:26;;;;;;;;;;;;:9;:26::i;:::-;11175:108;;:::o;15301:589::-;15421:4;15446:15;:2;:13;;;:15::i;:::-;15441:58;;15484:4;15477:11;;;;15441:58;15508:23;15534:246;15586:45;;;15645:12;:10;:12::i;:::-;15671:4;15689:7;15710:5;15550:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15550:175:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15550:175:11;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;15550:175:11;15534:246;;;;;;;;;;;;;;;;;:2;:15;;;;:246;;;;;:::i;:::-;15508:272;;15790:13;15817:10;15806:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15806:32:11;;;;;;;;;;;;;;;;15790:48;;1068:10;15866:16;;15856:26;;;:6;:26;;;;15848:35;;;;15301:589;;;;;;;:::o;4270:123:17:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;2183:1512:18:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1732:23:18;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:17:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2135:57:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;11504:247:11:-;11599:18;11605:2;11609:7;11599:5;:18::i;:::-;11635:54;11666:1;11670:2;11674:7;11683:5;11635:22;:54::i;:::-;11627:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:247;;;:::o;718:413:16:-;778:4;981:12;1090:7;1078:20;1070:28;;1123:1;1116:4;:8;1109:15;;;718:413;;;:::o;3573:194::-;3676:12;3707:53;3730:6;3738:4;3744:1;3747:12;3707:22;:53::i;:::-;3700:60;;3573:194;;;;;:::o;3776:127:18:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;12073:393:11:-;12166:1;12152:16;;:2;:16;;;;12144:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12224:16;12232:7;12224;:16::i;:::-;12223:17;12215:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12284:45;12313:1;12317:2;12321:7;12284:20;:45::i;:::-;12340:30;12362:7;12340:13;:17;12354:2;12340:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;12381:29;12398:7;12407:2;12381:12;:16;;:29;;;;;:::i;:::-;;12451:7;12447:2;12426:33;;12443:1;12426:33;;;;;;;;;;;;12073:393;;:::o;4920:958:16:-;5050:12;5082:18;5093:6;5082:10;:18::i;:::-;5074:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5205:12;5219:23;5246:6;:11;;5266:8;5277:4;5246:36;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5246:36:16;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;5204:78:16;;;;5296:7;5292:580;;;5326:10;5319:17;;;;;;5292:580;5457:1;5437:10;:17;:21;5433:429;;;5695:10;5689:17;5755:15;5742:10;5738:2;5734:19;5727:44;5644:145;5834:12;5827:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5827:20:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:958;;;;;;;:::o;326:4863:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "// contracts/DungeonsAndDragonsCharacter.sol\n// SPDX-License-Identifier: MIT\npragma solidity ^0.6.6;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\ncontract DungeonsAndDragonsCharacter is ERC721, VRFConsumerBase, Ownable {\n using SafeMath for uint256;\n using Strings for string;\n\n bytes32 internal keyHash;\n uint256 internal fee;\n uint256 public randomResult;\n address public VRFCoordinator;\n // rinkeby: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\n address public LinkToken;\n // rinkeby: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709a\n\n struct Character {\n uint256 strength;\n uint256 dexterity;\n uint256 constitution;\n uint256 intelligence;\n uint256 wisdom;\n uint256 charisma;\n uint256 experience;\n string name;\n }\n\n Character[] public characters;\n\n mapping(bytes32 => string) requestToCharacterName;\n mapping(bytes32 => address) requestToSender;\n mapping(bytes32 => uint256) requestToTokenId;\n\n /**\n * Constructor inherits VRFConsumerBase\n *\n * Network: Rinkeby\n * Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\n * LINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709\n * Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311\n */\n constructor(address _VRFCoordinator, address _LinkToken, bytes32 _keyhash)\n public\n VRFConsumerBase(_VRFCoordinator, _LinkToken)\n ERC721(\"DungeonsAndDragonsCharacter\", \"D&D\")\n { \n VRFCoordinator = _VRFCoordinator;\n LinkToken = _LinkToken;\n keyHash = _keyhash;\n fee = 0.1 * 10**18; // 0.1 LINK\n }\n\n function requestNewRandomCharacter(\n uint256 userProvidedSeed,\n string memory name\n ) public returns (bytes32) {\n require(\n LINK.balanceOf(address(this)) >= fee,\n \"Not enough LINK - fill contract with faucet\"\n );\n bytes32 requestId = requestRandomness(keyHash, fee, userProvidedSeed);\n requestToCharacterName[requestId] = name;\n requestToSender[requestId] = msg.sender;\n return requestId;\n }\n\n function getTokenURI(uint256 tokenId) public view returns (string memory) {\n return tokenURI(tokenId);\n }\n\n function setTokenURI(uint256 tokenId, string memory _tokenURI) public {\n require(\n _isApprovedOrOwner(_msgSender(), tokenId),\n \"ERC721: transfer caller is not owner nor approved\"\n );\n _setTokenURI(tokenId, _tokenURI);\n }\n\n function fulfillRandomness(bytes32 requestId, uint256 randomNumber)\n internal\n override\n {\n uint256 newId = characters.length;\n uint256 strength = (randomNumber % 100);\n uint256 dexterity = ((randomNumber % 10000) / 100 );\n uint256 constitution = ((randomNumber % 1000000) / 10000 );\n uint256 intelligence = ((randomNumber % 100000000) / 1000000 );\n uint256 wisdom = ((randomNumber % 10000000000) / 100000000 );\n uint256 charisma = ((randomNumber % 1000000000000) / 10000000000);\n uint256 experience = 0;\n\n characters.push(\n Character(\n strength,\n dexterity,\n constitution,\n intelligence,\n wisdom,\n charisma,\n experience,\n requestToCharacterName[requestId]\n )\n );\n _safeMint(requestToSender[requestId], newId);\n }\n\n function getLevel(uint256 tokenId) public view returns (uint256) {\n return sqrt(characters[tokenId].experience);\n }\n\n function getCharacterOverView(uint256 tokenId)\n public\n view\n returns (\n string memory,\n uint256,\n uint256,\n uint256\n )\n {\n return (\n characters[tokenId].name,\n characters[tokenId].strength + characters[tokenId].dexterity + characters[tokenId].constitution + characters[tokenId].intelligence + characters[tokenId].wisdom + characters[tokenId].charisma,\n getLevel(tokenId),\n characters[tokenId].experience\n );\n }\n\n function getCharacterStats(uint256 tokenId)\n public\n view\n returns (\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256\n )\n {\n return (\n characters[tokenId].strength,\n characters[tokenId].dexterity,\n characters[tokenId].constitution,\n characters[tokenId].intelligence,\n characters[tokenId].wisdom,\n characters[tokenId].charisma,\n characters[tokenId].experience\n );\n }\n\n function sqrt(uint256 x) internal view returns (uint256 y) {\n uint256 z = (x + 1) / 2;\n y = x;\n while (z < y) {\n y = z;\n z = (x / z + z) / 2;\n }\n }\n}\n", + "sourceMap": "326:4974:0:-:0;;;1520:352;5:9:-1;2:2;;;27:1;24;17:12;2:2;1520:352:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1520:352:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:15;1651:10;3567:365:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;751:40:8;418:10;770:20;;751:18;;;:40;;:::i;:::-;3647:4:11;3639:5;:12;;;;;;;;;;;;:::i;:::-;;3671:6;3661:7;:16;;;;;;;;;;;;:::i;:::-;;3765:40;2732:10;3784:20;;3765:18;;;:40;;:::i;:::-;3815:49;3064:10;3834:29;;3815:18;;;:49;;:::i;:::-;3874:51;3437:10;3893:31;;3874:18;;;:51;;:::i;:::-;3567:365;;6891:15:2;6874:14;;:32;;;;;;;;;;;;;;;;;;6938:5;6912:4;;:32;;;;;;;;;;;;;;;;;;6809:140;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;1750:15:0::2;1733:14;;:32;;;;;;;;;;;;;;;;;;1787:10;1775:9;;:22;;;;;;;;;;;;;;;;;;1817:8;1807:7;:18;;;;1841:12;1835:3;:18;;;;1520:352:::0;;;326:4974;;1482:198:8;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;590:104:6:-;643:15;677:10;670:17;;590:104;:::o;326:4974:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "326:4974:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;326:4974:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;948:140:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;948:140:8;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1878:475:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1878:475:0;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;1878:475:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1878:475:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1878:475:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1878:475:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4488:90:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4488:90:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7095:209;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7095:209:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6653:381;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6653:381:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2480:266:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2480:266:0;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;2480:266:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2480:266:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2480:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2480:266:0;;;;;;;;;;;;;;;:::i;:::-;;6163:200:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7943:300;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7943:300:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5940:152;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5940:152:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;557:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2359:115;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2359:115:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2359:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;524:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8309:149:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8309:149:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;984:29:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;984:29:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;984:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:161:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6435:161:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;651:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3952:547;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3952:547:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3952:547:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3841:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4259:167:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4259:167:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5774:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5774:87:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4505:587:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4505:587:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3991:211:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3991:211:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1689:145:7;;;:::i;:::-;;3710:125:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3710:125:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1066:77:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7144:207:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7144:207:2;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4642:94:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4642:94:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:67:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6738:67:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7371:290:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7371:290:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8524:282;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8524:282:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;8524:282:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8524:282:11;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8524:282:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8524:282:11;;;;;;;;;;;;;;;:::i;:::-;;4802:740;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4802:740:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4802:740:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5871:656:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5871:656:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7727:154:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7727:154:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1983:240:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1983:240:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;948:140:8;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;1878:475:0:-;1997:7;2070:3;;2037:4;;;;;;;;;;;:14;;;2060:4;2037:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2037:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2037:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2037:29:0;;;;;;;;;;;;;;;;:36;;2016:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2152:17;2172:49;2190:7;;2199:3;;2204:16;2172:17;:49::i;:::-;2152:69;;2267:4;2231:22;:33;2254:9;2231:33;;;;;;;;;;;:40;;;;;;;;;;;;:::i;:::-;;2310:10;2281:15;:26;2297:9;2281:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2337:9;2330:16;;;1878:475;;;;:::o;4488:90:11:-;4534:13;4566:5;4559:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4488:90;:::o;7095:209::-;7163:7;7190:16;7198:7;7190;:16::i;:::-;7182:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7273:15;:24;7289:7;7273:24;;;;;;;;;;;;;;;;;;;;;7266:31;;7095:209;;;:::o;6653:381::-;6733:13;6749:16;6757:7;6749;:16::i;:::-;6733:32;;6789:5;6783:11;;:2;:11;;;;6775:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6867:5;6851:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;6876:37;6893:5;6900:12;:10;:12::i;:::-;6876:16;:37::i;:::-;6851:62;6843:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7006:21;7015:2;7019:7;7006:8;:21::i;:::-;6653:381;;;:::o;2480:266:0:-;2581:41;2600:12;:10;:12::i;:::-;2614:7;2581:18;:41::i;:::-;2560:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2707:32;2720:7;2729:9;2707:12;:32::i;:::-;2480:266;;:::o;6163:200:11:-;6216:7;6335:21;:12;:19;:21::i;:::-;6328:28;;6163:200;:::o;7943:300::-;8102:41;8121:12;:10;:12::i;:::-;8135:7;8102:18;:41::i;:::-;8094:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8208:28;8218:4;8224:2;8228:7;8208:9;:28::i;:::-;7943:300;;;:::o;5940:152::-;6029:7;6055:30;6079:5;6055:13;:20;6069:5;6055:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;6048:37;;5940:152;;;;:::o;557:29:0:-;;;;;;;;;;;;;:::o;2359:115::-;2418:13;2450:17;2459:7;2450:8;:17::i;:::-;2443:24;;2359:115;;;:::o;524:27::-;;;;:::o;8309:149:11:-;8412:39;8429:4;8435:2;8439:7;8412:39;;;;;;;;;;;;:16;:39::i;:::-;8309:149;;;:::o;984:29:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6435:161:11:-;6502:7;6522:15;6543:22;6559:5;6543:12;:15;;:22;;;;:::i;:::-;6521:44;;;6582:7;6575:14;;;6435:161;;;:::o;651:24:0:-;;;;;;;;;;;;;:::o;3952:547::-;4057:13;4084:7;4105;4126;4179:10;4190:7;4179:19;;;;;;;;;;;;;;;;;;:24;;4379:10;4390:7;4379:19;;;;;;;;;;;;;;;;;;:28;;;4350:10;4361:7;4350:19;;;;;;;;;;;;;;;;;;:26;;;4315:10;4326:7;4315:19;;;;;;;;;;;;;;;;;;:32;;;4280:10;4291:7;4280:19;;;;;;;;;;;;;;;;;;:32;;;4248:10;4259:7;4248:19;;;;;;;;;;;;;;;;;;:29;;;4217:10;4228:7;4217:19;;;;;;;;;;;;;;;;;;:28;;;:60;:95;:130;:159;:190;4421:17;4430:7;4421:8;:17::i;:::-;4452:10;4463:7;4452:19;;;;;;;;;;;;;;;;;;:30;;;4158:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3952:547;;;;;:::o;3841:105::-;3895:7;3921:10;:17;;;;3914:24;;3841:105;:::o;4259:167:11:-;4323:7;4349:70;4366:7;4349:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4342:77;;4259:167;;;:::o;5774:87::-;5814:13;5846:8;5839:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5774:87;:::o;4505:587:0:-;4607:7;4628;4649;4670;4691;4712;4733;4786:10;4797:7;4786:19;;;;;;;;;;;;;;;;;;:28;;;4828:10;4839:7;4828:19;;;;;;;;;;;;;;;;;;:29;;;4871:10;4882:7;4871:19;;;;;;;;;;;;;;;;;;:32;;;4917:10;4928:7;4917:19;;;;;;;;;;;;;;;;;;:32;;;4963:10;4974:7;4963:19;;;;;;;;;;;;;;;;;;:26;;;5003:10;5014:7;5003:19;;;;;;;;;;;;;;;;;;:28;;;5045:10;5056:7;5045:19;;;;;;;;;;;;;;;;;;:30;;;4765:320;;;;;;;;;;;;;;4505:587;;;;;;;;;:::o;3991:211:11:-;4055:7;4099:1;4082:19;;:5;:19;;;;4074:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4166:29;:13;:20;4180:5;4166:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4159:36;;3991:211;;;:::o;1689:145:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;;;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6;;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;3710:125:0:-;3766:7;3792:36;3797:10;3808:7;3797:19;;;;;;;;;;;;;;;;;;:30;;;3792:4;:36::i;:::-;3785:43;;3710:125;;;:::o;1066:77:7:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;7144:207:2:-;7250:14;;;;;;;;;;;7236:28;;:10;:28;;;7228:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7306:40;7324:9;7335:10;7306:17;:40::i;:::-;7144:207;;:::o;4642:94:11:-;4690:13;4722:7;4715:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4642:94;:::o;6738:67:2:-;;;;;;;;;;;;;;;;;:::o;7371:290:11:-;7485:12;:10;:12::i;:::-;7473:24;;:8;:24;;;;7465:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7583:8;7538:18;:32;7557:12;:10;:12::i;:::-;7538:32;;;;;;;;;;;;;;;:42;7571:8;7538:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;7635:8;7606:48;;7621:12;:10;:12::i;:::-;7606:48;;;7645:8;7606:48;;;;;;;;;;;;;;;;;;;;;;7371:290;;:::o;8524:282::-;8655:41;8674:12;:10;:12::i;:::-;8688:7;8655:18;:41::i;:::-;8647:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8760:39;8774:4;8780:2;8784:7;8793:5;8760:13;:39::i;:::-;8524:282;;;;:::o;4802:740::-;4867:13;4900:16;4908:7;4900;:16::i;:::-;4892:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4979:23;5005:10;:19;5016:7;5005:19;;;;;;;;;;;4979:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5123:1;5103:8;5097:22;;;;;;;;;;;;;;;;:27;5093:74;;;5147:9;5140:16;;;;;5093:74;5295:1;5275:9;5269:23;:27;5265:110;;;5343:8;5353:9;5326:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5326:37:11;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5326:37:11;;;5312:52;;;;;5265:110;5505:8;5515:18;:7;:16;:18::i;:::-;5488:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5488:46:11;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5488:46:11;;;5474:61;;;4802:740;;;;:::o;5871:656:2:-;5965:17;5992:4;;;;;;;;;;;:20;;;6013:14;;;;;;;;;;;6029:4;6046:8;6056:5;6035:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6035:27:2;;;5992:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5992:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5992:71:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5992:71:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5992:71:2;;;;;;;;;;;;;;;;;6138:15;6157:66;6174:8;6184:5;6199:4;6206:6;:16;6213:8;6206:16;;;;;;;;;;;;6157;:66::i;:::-;6138:85;;6453:23;6474:1;6453:6;:16;6460:8;6453:16;;;;;;;;;;;;:20;;:23;;;;:::i;:::-;6434:6;:16;6441:8;6434:16;;;;;;;;;;;:42;;;;6490:32;6504:8;6514:7;6490:13;:32::i;:::-;6483:39;;;5871:656;;;;;:::o;7727:154:11:-;7816:4;7839:18;:25;7858:5;7839:25;;;;;;;;;;;;;;;:35;7865:8;7839:35;;;;;;;;;;;;;;;;;;;;;;;;;7832:42;;7727:154;;;;:::o;1983:240:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;;;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;;:17;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;10240:117:11:-;10297:4;10320:30;10342:7;10320:12;:21;;:30;;;;:::i;:::-;10313:37;;10240:117;;;:::o;590:104:6:-;643:15;677:10;670:17;;590:104;:::o;15896:155:11:-;15988:2;15961:15;:24;15977:7;15961:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16036:7;16032:2;16005:39;;16014:16;16022:7;16014;:16::i;:::-;16005:39;;;;;;;;;;;;15896:155;;:::o;10515:329::-;10600:4;10624:16;10632:7;10624;:16::i;:::-;10616:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10699:13;10715:16;10723:7;10715;:16::i;:::-;10699:32;;10760:5;10749:16;;:7;:16;;;:51;;;;10793:7;10769:31;;:20;10781:7;10769:11;:20::i;:::-;:31;;;10749:51;:87;;;;10804:32;10821:5;10828:7;10804:16;:32::i;:::-;10749:87;10741:96;;;10515:329;;;;:::o;14215:212::-;14314:16;14322:7;14314;:16::i;:::-;14306:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14411:9;14389:10;:19;14400:7;14389:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;14215:212;;:::o;7023:121:17:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;13509:559:11:-;13626:4;13606:24;;:16;13614:7;13606;:16::i;:::-;:24;;;13598:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13708:1;13694:16;;:2;:16;;;;13686:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13762:39;13783:4;13789:2;13793:7;13762:20;:39::i;:::-;13863:29;13880:1;13884:7;13863:8;:29::i;:::-;13903:35;13930:7;13903:13;:19;13917:4;13903:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;13948:30;13970:7;13948:13;:17;13962:2;13948:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;13989:29;14006:7;14015:2;13989:12;:16;;:29;;;;;:::i;:::-;;14053:7;14049:2;14034:27;;14043:4;14034:27;;;;;;;;;;;;13509:559;;;:::o;7649:135:18:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;7472:224:17:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:18:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;5098:200:0:-;5146:9;5167;5189:1;5184;5180;:5;5179:11;;;;;;5167:23;;5204:1;5200:5;;5215:77;5226:1;5222;:5;5215:77;;;5247:1;5243:5;;5280:1;5275;5271;5267;:5;;;;;;:9;5266:15;;;;;;5262:19;;5215:77;;;5098:200;;;;:::o;2752:952::-;2868:13;2884:10;:17;;;;2868:33;;2911:16;2946:3;2931:12;:18;;;;;;2911:39;;2960:17;3006:3;2997:5;2982:12;:20;;;;;;2981:28;;;;;;2960:51;;3021:20;3072:5;3061:7;3046:12;:22;;;;;;3045:32;;;;;;3021:58;;3089:20;3142:7;3129:9;3114:12;:24;;;;;;3113:36;;;;;;3089:62;;3161:14;3210:9;3195:11;3180:12;:26;;;;;;3179:40;;;;;;3161:60;;3231:16;3284:11;3267:13;3252:12;:28;;;;;;3251:44;;;;;;3231:65;;3306:18;3327:1;3306:22;;3339:10;3368:265;;;;;;;;3395:8;3368:265;;;;3421:9;3368:265;;;;3448:12;3368:265;;;;3478:12;3368:265;;;;3508:6;3368:265;;;;3532:8;3368:265;;;;3558:10;3368:265;;;;3586:22;:33;3609:9;3586:33;;;;;;;;;;;3368:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3339:304;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;3339:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;3653:44;3663:15;:26;3679:9;3663:26;;;;;;;;;;;;;;;;;;;;;3691:5;3653:9;:44::i;:::-;2752:952;;;;;;;;;;:::o;9668:269:11:-;9781:28;9791:4;9797:2;9801:7;9781:9;:28::i;:::-;9827:48;9850:4;9856:2;9860:7;9869:5;9827:22;:48::i;:::-;9819:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:269;;;;:::o;202:723:19:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;691:17:19;;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;124:4;108:14;100:6;87:42;155:4;147:6;143:17;133:27;;0:164;691:17:19;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;1095:231:3:-;1225:7;1279:8;1289:9;1300:10;1312:6;1268:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1268:51:3;;;1258:62;;;;;;1250:71;;1242:79;;1095:231;;;;;;:::o;822:162:5:-;880:7;895:9;911:1;907;:5;895:17;;931:1;926;:6;;918:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:1;971:8;;;822:162;;;;:::o;1706:171:3:-;1798:7;1847:8;1857:13;1830:41;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1830:41:3;;;1820:52;;;;;;1813:59;;1706:171;;;;:::o;6791:149:17:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;16647:93:11:-;;;;:::o;6764:135:18:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:17:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:18:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;4934:274:17:-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5774:36:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:18:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;11175:108:11:-;11250:26;11260:2;11264:7;11250:26;;;;;;;;;;;;:9;:26::i;:::-;11175:108;;:::o;15301:589::-;15421:4;15446:15;:2;:13;;;:15::i;:::-;15441:58;;15484:4;15477:11;;;;15441:58;15508:23;15534:246;15586:45;;;15645:12;:10;:12::i;:::-;15671:4;15689:7;15710:5;15550:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15550:175:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15550:175:11;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;15550:175:11;15534:246;;;;;;;;;;;;;;;;;:2;:15;;;;:246;;;;;:::i;:::-;15508:272;;15790:13;15817:10;15806:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15806:32:11;;;;;;;;;;;;;;;;15790:48;;1068:10;15866:16;;15856:26;;;:6;:26;;;;15848:35;;;;15301:589;;;;;;;:::o;4270:123:17:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;2183:1512:18:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1732:23:18;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:17:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2135:57:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;11504:247:11:-;11599:18;11605:2;11609:7;11599:5;:18::i;:::-;11635:54;11666:1;11670:2;11674:7;11683:5;11635:22;:54::i;:::-;11627:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:247;;;:::o;718:413:16:-;778:4;981:12;1090:7;1078:20;1070:28;;1123:1;1116:4;:8;1109:15;;;718:413;;;:::o;3573:194::-;3676:12;3707:53;3730:6;3738:4;3744:1;3747:12;3707:22;:53::i;:::-;3700:60;;3573:194;;;;;:::o;3776:127:18:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;12073:393:11:-;12166:1;12152:16;;:2;:16;;;;12144:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12224:16;12232:7;12224;:16::i;:::-;12223:17;12215:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12284:45;12313:1;12317:2;12321:7;12284:20;:45::i;:::-;12340:30;12362:7;12340:13;:17;12354:2;12340:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;12381:29;12398:7;12407:2;12381:12;:16;;:29;;;;;:::i;:::-;;12451:7;12447:2;12426:33;;12443:1;12426:33;;;;;;;;;;;;12073:393;;:::o;4920:958:16:-;5050:12;5082:18;5093:6;5082:10;:18::i;:::-;5074:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5205:12;5219:23;5246:6;:11;;5266:8;5277:4;5246:36;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5246:36:16;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;5204:78:16;;;;5296:7;5292:580;;;5326:10;5319:17;;;;;;5292:580;5457:1;5437:10;:17;:21;5433:429;;;5695:10;5689:17;5755:15;5742:10;5738:2;5734:19;5727:44;5644:145;5834:12;5827:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5827:20:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:958;;;;;;;:::o;326:4974:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "// contracts/DungeonsAndDragonsCharacter.sol\n// SPDX-License-Identifier: MIT\npragma solidity ^0.6.6;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\ncontract DungeonsAndDragonsCharacter is ERC721, VRFConsumerBase, Ownable {\n using SafeMath for uint256;\n using Strings for string;\n\n bytes32 internal keyHash;\n uint256 internal fee;\n uint256 public randomResult;\n address public VRFCoordinator;\n // rinkeby: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\n address public LinkToken;\n // rinkeby: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709a\n\n struct Character {\n uint256 strength;\n uint256 dexterity;\n uint256 constitution;\n uint256 intelligence;\n uint256 wisdom;\n uint256 charisma;\n uint256 experience;\n string name;\n }\n\n Character[] public characters;\n\n mapping(bytes32 => string) requestToCharacterName;\n mapping(bytes32 => address) requestToSender;\n mapping(bytes32 => uint256) requestToTokenId;\n\n /**\n * Constructor inherits VRFConsumerBase\n *\n * Network: Rinkeby\n * Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\n * LINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709\n * Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311\n */\n constructor(address _VRFCoordinator, address _LinkToken, bytes32 _keyhash)\n public\n VRFConsumerBase(_VRFCoordinator, _LinkToken)\n ERC721(\"DungeonsAndDragonsCharacter\", \"D&D\")\n { \n VRFCoordinator = _VRFCoordinator;\n LinkToken = _LinkToken;\n keyHash = _keyhash;\n fee = 0.1 * 10**18; // 0.1 LINK\n }\n\n function requestNewRandomCharacter(\n uint256 userProvidedSeed,\n string memory name\n ) public returns (bytes32) {\n require(\n LINK.balanceOf(address(this)) >= fee,\n \"Not enough LINK - fill contract with faucet\"\n );\n bytes32 requestId = requestRandomness(keyHash, fee, userProvidedSeed);\n requestToCharacterName[requestId] = name;\n requestToSender[requestId] = msg.sender;\n return requestId;\n }\n\n function getTokenURI(uint256 tokenId) public view returns (string memory) {\n return tokenURI(tokenId);\n }\n\n function setTokenURI(uint256 tokenId, string memory _tokenURI) public {\n require(\n _isApprovedOrOwner(_msgSender(), tokenId),\n \"ERC721: transfer caller is not owner nor approved\"\n );\n _setTokenURI(tokenId, _tokenURI);\n }\n\n function fulfillRandomness(bytes32 requestId, uint256 randomNumber)\n internal\n override\n {\n uint256 newId = characters.length;\n uint256 strength = (randomNumber % 100);\n uint256 dexterity = ((randomNumber % 10000) / 100 );\n uint256 constitution = ((randomNumber % 1000000) / 10000 );\n uint256 intelligence = ((randomNumber % 100000000) / 1000000 );\n uint256 wisdom = ((randomNumber % 10000000000) / 100000000 );\n uint256 charisma = ((randomNumber % 1000000000000) / 10000000000);\n uint256 experience = 0;\n\n characters.push(\n Character(\n strength,\n dexterity,\n constitution,\n intelligence,\n wisdom,\n charisma,\n experience,\n requestToCharacterName[requestId]\n )\n );\n _safeMint(requestToSender[requestId], newId);\n }\n\n function getLevel(uint256 tokenId) public view returns (uint256) {\n return sqrt(characters[tokenId].experience);\n }\n\n function getNumberOfCharacters() public view returns (uint256) {\n return characters.length; \n }\n\n function getCharacterOverView(uint256 tokenId)\n public\n view\n returns (\n string memory,\n uint256,\n uint256,\n uint256\n )\n {\n return (\n characters[tokenId].name,\n characters[tokenId].strength + characters[tokenId].dexterity + characters[tokenId].constitution + characters[tokenId].intelligence + characters[tokenId].wisdom + characters[tokenId].charisma,\n getLevel(tokenId),\n characters[tokenId].experience\n );\n }\n\n function getCharacterStats(uint256 tokenId)\n public\n view\n returns (\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256\n )\n {\n return (\n characters[tokenId].strength,\n characters[tokenId].dexterity,\n characters[tokenId].constitution,\n characters[tokenId].intelligence,\n characters[tokenId].wisdom,\n characters[tokenId].charisma,\n characters[tokenId].experience\n );\n }\n\n function sqrt(uint256 x) internal view returns (uint256 y) {\n uint256 z = (x + 1) / 2;\n y = x;\n while (z < y) {\n y = z;\n z = (x / z + z) / 2;\n }\n }\n}\n", "sourcePath": "/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol", "ast": { "absolutePath": "/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol", "exportedSymbols": { "DungeonsAndDragonsCharacter": [ - 440 + 449 ] }, - "id": 441, + "id": 450, "nodeType": "SourceUnit", "nodes": [ { @@ -852,8 +866,8 @@ "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 441, - "sourceUnit": 2232, + "scope": 450, + "sourceUnit": 2241, "src": "102:57:0", "symbolAliases": [], "unitAlias": "" @@ -863,8 +877,8 @@ "file": "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol", "id": 3, "nodeType": "ImportDirective", - "scope": 441, - "sourceUnit": 621, + "scope": 450, + "sourceUnit": 630, "src": "160:59:0", "symbolAliases": [], "unitAlias": "" @@ -874,8 +888,8 @@ "file": "@openzeppelin/contracts/access/Ownable.sol", "id": 4, "nodeType": "ImportDirective", - "scope": 441, - "sourceUnit": 1037, + "scope": 450, + "sourceUnit": 1046, "src": "220:52:0", "symbolAliases": [], "unitAlias": "" @@ -885,8 +899,8 @@ "file": "@openzeppelin/contracts/utils/Strings.sol", "id": 5, "nodeType": "ImportDirective", - "scope": 441, - "sourceUnit": 3556, + "scope": 450, + "sourceUnit": 3565, "src": "273:51:0", "symbolAliases": [], "unitAlias": "" @@ -901,10 +915,10 @@ "id": 6, "name": "ERC721", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2231, + "referencedDeclaration": 2240, "src": "366:6:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721_$2231", + "typeIdentifier": "t_contract$_ERC721_$2240", "typeString": "contract ERC721" } }, @@ -919,10 +933,10 @@ "id": 8, "name": "VRFConsumerBase", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 620, + "referencedDeclaration": 629, "src": "374:15:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_VRFConsumerBase_$620", + "typeIdentifier": "t_contract$_VRFConsumerBase_$629", "typeString": "contract VRFConsumerBase" } }, @@ -937,10 +951,10 @@ "id": 10, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1036, + "referencedDeclaration": 1045, "src": "391:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$1036", + "typeIdentifier": "t_contract$_Ownable_$1045", "typeString": "contract Ownable" } }, @@ -950,33 +964,33 @@ } ], "contractDependencies": [ - 620, - 670, - 927, - 1036, - 1092, - 1104, - 2231, - 2347, - 2378, - 2405 + 629, + 679, + 936, + 1045, + 1101, + 1113, + 2240, + 2356, + 2387, + 2414 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 440, + "id": 449, "linearizedBaseContracts": [ - 440, - 1036, - 620, - 670, - 2231, - 2378, - 2405, - 2347, - 1092, - 1104, - 927 + 449, + 1045, + 629, + 679, + 2240, + 2387, + 2414, + 2356, + 1101, + 1113, + 936 ], "name": "DungeonsAndDragonsCharacter", "nodeType": "ContractDefinition", @@ -988,10 +1002,10 @@ "id": 12, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1300, + "referencedDeclaration": 1309, "src": "411:8:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1300", + "typeIdentifier": "t_contract$_SafeMath_$1309", "typeString": "library SafeMath" } }, @@ -1015,10 +1029,10 @@ "id": 15, "name": "Strings", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3555, + "referencedDeclaration": 3564, "src": "443:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Strings_$3555", + "typeIdentifier": "t_contract$_Strings_$3564", "typeString": "library Strings" } }, @@ -1042,7 +1056,7 @@ "name": "keyHash", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "468:24:0", "stateVariable": true, "storageLocation": "default", @@ -1070,7 +1084,7 @@ "name": "fee", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "498:20:0", "stateVariable": true, "storageLocation": "default", @@ -1099,7 +1113,7 @@ "name": "randomResult", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "524:27:0", "stateVariable": true, "storageLocation": "default", @@ -1128,7 +1142,7 @@ "name": "VRFCoordinator", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "557:29:0", "stateVariable": true, "storageLocation": "default", @@ -1158,7 +1172,7 @@ "name": "LinkToken", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "651:24:0", "stateVariable": true, "storageLocation": "default", @@ -1411,7 +1425,7 @@ ], "name": "Character", "nodeType": "StructDefinition", - "scope": 440, + "scope": 449, "src": "742:236:0", "visibility": "public" }, @@ -1423,7 +1437,7 @@ "name": "characters", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "984:29:0", "stateVariable": true, "storageLocation": "default", @@ -1463,7 +1477,7 @@ "name": "requestToCharacterName", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "1020:49:0", "stateVariable": true, "storageLocation": "default", @@ -1510,7 +1524,7 @@ "name": "requestToSender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "1075:43:0", "stateVariable": true, "storageLocation": "default", @@ -1558,7 +1572,7 @@ "name": "requestToTokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "1124:44:0", "stateVariable": true, "storageLocation": "default", @@ -1915,10 +1929,10 @@ "name": "VRFConsumerBase", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, + "referencedDeclaration": 629, "src": "1618:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_VRFConsumerBase_$620_$", + "typeIdentifier": "t_type$_t_contract$_VRFConsumerBase_$629_$", "typeString": "type(contract VRFConsumerBase)" } }, @@ -1971,10 +1985,10 @@ "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2231, + "referencedDeclaration": 2240, "src": "1671:6:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC721_$2231_$", + "typeIdentifier": "t_type$_t_contract$_ERC721_$2240_$", "typeString": "type(contract ERC721)" } }, @@ -2084,7 +2098,7 @@ "parameters": [], "src": "1720:0:0" }, - "scope": 440, + "scope": 449, "src": "1520:352:0", "stateMutability": "nonpayable", "virtual": false, @@ -2126,7 +2140,7 @@ "referencedDeclaration": -28, "src": "2060:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$440", + "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$449", "typeString": "contract DungeonsAndDragonsCharacter" } } @@ -2134,7 +2148,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$440", + "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$449", "typeString": "contract DungeonsAndDragonsCharacter" } ], @@ -2189,10 +2203,10 @@ "name": "LINK", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, + "referencedDeclaration": 583, "src": "2037:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_LinkTokenInterface_$765", + "typeIdentifier": "t_contract$_LinkTokenInterface_$774", "typeString": "contract LinkTokenInterface" } }, @@ -2203,7 +2217,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 697, + "referencedDeclaration": 706, "src": "2037:14:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -2406,7 +2420,7 @@ "name": "requestRandomness", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 572, + "referencedDeclaration": 581, "src": "2172:17:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", @@ -2721,7 +2735,7 @@ ], "src": "1996:9:0" }, - "scope": 440, + "scope": 449, "src": "1878:475:0", "stateMutability": "nonpayable", "virtual": false, @@ -2762,7 +2776,7 @@ "name": "tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1531, + "referencedDeclaration": 1540, "src": "2450:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", @@ -2870,7 +2884,7 @@ ], "src": "2417:15:0" }, - "scope": 440, + "scope": 449, "src": "2359:115:0", "stateMutability": "view", "virtual": false, @@ -2898,7 +2912,7 @@ "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, + "referencedDeclaration": 924, "src": "2600:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", @@ -2949,7 +2963,7 @@ "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1864, + "referencedDeclaration": 1873, "src": "2581:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", @@ -3080,7 +3094,7 @@ "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2128, + "referencedDeclaration": 2137, "src": "2707:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", @@ -3186,7 +3200,7 @@ "parameters": [], "src": "2550:0:0" }, - "scope": 440, + "scope": 449, "src": "2480:266:0", "stateMutability": "nonpayable", "virtual": false, @@ -3194,7 +3208,7 @@ }, { "baseFunctions": [ - 517 + 526 ], "body": { "id": 276, @@ -4551,10 +4565,10 @@ "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [ - 1879, - 1908 + 1888, + 1917 ], - "referencedDeclaration": 1879, + "referencedDeclaration": 1888, "src": "3653:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", @@ -4664,7 +4678,7 @@ "parameters": [], "src": "2858:0:0" }, - "scope": 440, + "scope": 449, "src": "2752:952:0", "stateMutability": "nonpayable", "virtual": false, @@ -4748,7 +4762,7 @@ "name": "sqrt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 439, + "referencedDeclaration": 448, "src": "3792:4:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", @@ -4856,7 +4870,7 @@ ], "src": "3765:9:0" }, - "scope": 440, + "scope": 449, "src": "3710:125:0", "stateMutability": "view", "virtual": false, @@ -4864,9 +4878,108 @@ }, { "body": { - "id": 347, + "id": 300, "nodeType": "Block", - "src": "4037:351:0", + "src": "3904:42:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 297, + "name": "characters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "3921:10:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", + "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3921:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 296, + "id": 299, + "nodeType": "Return", + "src": "3914:24:0" + } + ] + }, + "documentation": null, + "functionSelector": "62d36dec", + "id": 301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getNumberOfCharacters", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 293, + "nodeType": "ParameterList", + "parameters": [], + "src": "3871:2:0" + }, + "returnParameters": { + "id": 296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 295, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "3895:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3895:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3894:9:0" + }, + "scope": 449, + "src": "3841:105:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 356, + "nodeType": "Block", + "src": "4148:351:0", "statements": [ { "expression": { @@ -4878,26 +4991,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 305, + "id": 314, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4068:10:0", + "src": "4179:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 307, + "id": 316, "indexExpression": { "argumentTypes": null, - "id": 306, + "id": 315, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4079:7:0", + "referencedDeclaration": 303, + "src": "4190:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4908,13 +5021,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4068:19:0", + "src": "4179:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 308, + "id": 317, "isConstant": false, "isLValue": true, "isPure": false, @@ -4922,7 +5035,7 @@ "memberName": "name", "nodeType": "MemberAccess", "referencedDeclaration": 43, - "src": "4068:24:0", + "src": "4179:24:0", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -4934,7 +5047,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 337, + "id": 346, "isConstant": false, "isLValue": false, "isPure": false, @@ -4945,7 +5058,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 332, + "id": 341, "isConstant": false, "isLValue": false, "isPure": false, @@ -4956,7 +5069,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 327, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, @@ -4967,7 +5080,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 322, + "id": 331, "isConstant": false, "isLValue": false, "isPure": false, @@ -4978,7 +5091,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 317, + "id": 326, "isConstant": false, "isLValue": false, "isPure": false, @@ -4989,26 +5102,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 309, + "id": 318, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4106:10:0", + "src": "4217:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 311, + "id": 320, "indexExpression": { "argumentTypes": null, - "id": 310, + "id": 319, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4117:7:0", + "referencedDeclaration": 303, + "src": "4228:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5019,13 +5132,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4106:19:0", + "src": "4217:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 312, + "id": 321, "isConstant": false, "isLValue": true, "isPure": false, @@ -5033,7 +5146,7 @@ "memberName": "strength", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "4106:28:0", + "src": "4217:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5047,26 +5160,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 313, + "id": 322, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4137:10:0", + "src": "4248:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 315, + "id": 324, "indexExpression": { "argumentTypes": null, - "id": 314, + "id": 323, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4148:7:0", + "referencedDeclaration": 303, + "src": "4259:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5077,13 +5190,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4137:19:0", + "src": "4248:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 316, + "id": 325, "isConstant": false, "isLValue": true, "isPure": false, @@ -5091,13 +5204,13 @@ "memberName": "dexterity", "nodeType": "MemberAccess", "referencedDeclaration": 31, - "src": "4137:29:0", + "src": "4248:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:60:0", + "src": "4217:60:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5111,26 +5224,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 318, + "id": 327, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4169:10:0", + "src": "4280:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 320, + "id": 329, "indexExpression": { "argumentTypes": null, - "id": 319, + "id": 328, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4180:7:0", + "referencedDeclaration": 303, + "src": "4291:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5141,13 +5254,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4169:19:0", + "src": "4280:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 321, + "id": 330, "isConstant": false, "isLValue": true, "isPure": false, @@ -5155,13 +5268,13 @@ "memberName": "constitution", "nodeType": "MemberAccess", "referencedDeclaration": 33, - "src": "4169:32:0", + "src": "4280:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:95:0", + "src": "4217:95:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5175,26 +5288,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 323, + "id": 332, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4204:10:0", + "src": "4315:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 325, + "id": 334, "indexExpression": { "argumentTypes": null, - "id": 324, + "id": 333, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4215:7:0", + "referencedDeclaration": 303, + "src": "4326:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5205,13 +5318,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4204:19:0", + "src": "4315:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 326, + "id": 335, "isConstant": false, "isLValue": true, "isPure": false, @@ -5219,13 +5332,13 @@ "memberName": "intelligence", "nodeType": "MemberAccess", "referencedDeclaration": 35, - "src": "4204:32:0", + "src": "4315:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:130:0", + "src": "4217:130:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5239,26 +5352,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 328, + "id": 337, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4239:10:0", + "src": "4350:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 330, + "id": 339, "indexExpression": { "argumentTypes": null, - "id": 329, + "id": 338, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4250:7:0", + "referencedDeclaration": 303, + "src": "4361:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5269,13 +5382,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4239:19:0", + "src": "4350:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 331, + "id": 340, "isConstant": false, "isLValue": true, "isPure": false, @@ -5283,13 +5396,13 @@ "memberName": "wisdom", "nodeType": "MemberAccess", "referencedDeclaration": 37, - "src": "4239:26:0", + "src": "4350:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:159:0", + "src": "4217:159:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5303,26 +5416,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 333, + "id": 342, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4268:10:0", + "src": "4379:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 335, + "id": 344, "indexExpression": { "argumentTypes": null, - "id": 334, + "id": 343, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4279:7:0", + "referencedDeclaration": 303, + "src": "4390:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5333,13 +5446,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4268:19:0", + "src": "4379:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 336, + "id": 345, "isConstant": false, "isLValue": true, "isPure": false, @@ -5347,13 +5460,13 @@ "memberName": "charisma", "nodeType": "MemberAccess", "referencedDeclaration": 39, - "src": "4268:28:0", + "src": "4379:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:190:0", + "src": "4217:190:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5364,12 +5477,12 @@ "arguments": [ { "argumentTypes": null, - "id": 339, + "id": 348, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4319:7:0", + "referencedDeclaration": 303, + "src": "4430:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5383,18 +5496,18 @@ "typeString": "uint256" } ], - "id": 338, + "id": 347, "name": "getLevel", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 292, - "src": "4310:8:0", + "src": "4421:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 340, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, @@ -5402,7 +5515,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4310:17:0", + "src": "4421:17:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5415,26 +5528,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 341, + "id": 350, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4341:10:0", + "src": "4452:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 343, + "id": 352, "indexExpression": { "argumentTypes": null, - "id": 342, + "id": 351, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4352:7:0", + "referencedDeclaration": 303, + "src": "4463:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5445,13 +5558,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4341:19:0", + "src": "4452:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 344, + "id": 353, "isConstant": false, "isLValue": true, "isPure": false, @@ -5459,36 +5572,36 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "4341:30:0", + "src": "4452:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 345, + "id": 354, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4054:327:0", + "src": "4165:327:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_string_storage_$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(string storage ref,uint256,uint256,uint256)" } }, - "functionReturnParameters": 304, - "id": 346, + "functionReturnParameters": 313, + "id": 355, "nodeType": "Return", - "src": "4047:334:0" + "src": "4158:334:0" } ] }, "documentation": null, "functionSelector": "4f95b5f0", - "id": 348, + "id": 357, "implemented": true, "kind": "function", "modifiers": [], @@ -5496,137 +5609,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 295, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 294, - "mutability": "mutable", - "name": "tokenId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 348, - "src": "3871:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 293, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3871:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3870:17:0" - }, - "returnParameters": { "id": 304, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 297, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 348, - "src": "3946:13:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 296, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "3946:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 299, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 348, - "src": "3973:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 298, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3973:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 301, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 348, - "src": "3994:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 300, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3994:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 303, "mutability": "mutable", - "name": "", + "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 348, - "src": "4015:7:0", + "scope": 357, + "src": "3982:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5637,7 +5631,7 @@ "id": 302, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4015:7:0", + "src": "3982:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5647,19 +5641,138 @@ "visibility": "internal" } ], - "src": "3932:100:0" + "src": "3981:17:0" }, - "scope": 440, - "src": "3841:547:0", + "returnParameters": { + "id": 313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 306, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 357, + "src": "4057:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 305, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4057:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 308, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 357, + "src": "4084:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4084:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 310, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 357, + "src": "4105:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4105:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 357, + "src": "4126:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4126:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4043:100:0" + }, + "scope": 449, + "src": "3952:547:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 397, + "id": 406, "nodeType": "Block", - "src": "4644:337:0", + "src": "4755:337:0", "statements": [ { "expression": { @@ -5671,26 +5784,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 367, + "id": 376, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4675:10:0", + "src": "4786:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 369, + "id": 378, "indexExpression": { "argumentTypes": null, - "id": 368, + "id": 377, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4686:7:0", + "referencedDeclaration": 359, + "src": "4797:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5701,13 +5814,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4675:19:0", + "src": "4786:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 370, + "id": 379, "isConstant": false, "isLValue": true, "isPure": false, @@ -5715,7 +5828,7 @@ "memberName": "strength", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "4675:28:0", + "src": "4786:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5727,26 +5840,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 371, + "id": 380, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4717:10:0", + "src": "4828:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 373, + "id": 382, "indexExpression": { "argumentTypes": null, - "id": 372, + "id": 381, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4728:7:0", + "referencedDeclaration": 359, + "src": "4839:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5757,13 +5870,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4717:19:0", + "src": "4828:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 374, + "id": 383, "isConstant": false, "isLValue": true, "isPure": false, @@ -5771,7 +5884,7 @@ "memberName": "dexterity", "nodeType": "MemberAccess", "referencedDeclaration": 31, - "src": "4717:29:0", + "src": "4828:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5783,26 +5896,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 375, + "id": 384, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4760:10:0", + "src": "4871:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 377, + "id": 386, "indexExpression": { "argumentTypes": null, - "id": 376, + "id": 385, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4771:7:0", + "referencedDeclaration": 359, + "src": "4882:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5813,13 +5926,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4760:19:0", + "src": "4871:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 378, + "id": 387, "isConstant": false, "isLValue": true, "isPure": false, @@ -5827,7 +5940,7 @@ "memberName": "constitution", "nodeType": "MemberAccess", "referencedDeclaration": 33, - "src": "4760:32:0", + "src": "4871:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5839,26 +5952,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 379, + "id": 388, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4806:10:0", + "src": "4917:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 381, + "id": 390, "indexExpression": { "argumentTypes": null, - "id": 380, + "id": 389, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4817:7:0", + "referencedDeclaration": 359, + "src": "4928:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5869,13 +5982,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4806:19:0", + "src": "4917:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 382, + "id": 391, "isConstant": false, "isLValue": true, "isPure": false, @@ -5883,7 +5996,7 @@ "memberName": "intelligence", "nodeType": "MemberAccess", "referencedDeclaration": 35, - "src": "4806:32:0", + "src": "4917:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5895,26 +6008,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 383, + "id": 392, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4852:10:0", + "src": "4963:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 385, + "id": 394, "indexExpression": { "argumentTypes": null, - "id": 384, + "id": 393, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4863:7:0", + "referencedDeclaration": 359, + "src": "4974:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5925,13 +6038,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4852:19:0", + "src": "4963:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 386, + "id": 395, "isConstant": false, "isLValue": true, "isPure": false, @@ -5939,7 +6052,7 @@ "memberName": "wisdom", "nodeType": "MemberAccess", "referencedDeclaration": 37, - "src": "4852:26:0", + "src": "4963:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5951,26 +6064,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 387, + "id": 396, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4892:10:0", + "src": "5003:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 389, + "id": 398, "indexExpression": { "argumentTypes": null, - "id": 388, + "id": 397, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4903:7:0", + "referencedDeclaration": 359, + "src": "5014:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5981,13 +6094,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4892:19:0", + "src": "5003:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 390, + "id": 399, "isConstant": false, "isLValue": true, "isPure": false, @@ -5995,7 +6108,7 @@ "memberName": "charisma", "nodeType": "MemberAccess", "referencedDeclaration": 39, - "src": "4892:28:0", + "src": "5003:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6007,26 +6120,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 391, + "id": 400, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4934:10:0", + "src": "5045:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 393, + "id": 402, "indexExpression": { "argumentTypes": null, - "id": 392, + "id": 401, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4945:7:0", + "referencedDeclaration": 359, + "src": "5056:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6037,13 +6150,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4934:19:0", + "src": "5045:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 394, + "id": 403, "isConstant": false, "isLValue": true, "isPure": false, @@ -6051,36 +6164,36 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "4934:30:0", + "src": "5045:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 395, + "id": 404, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4661:313:0", + "src": "4772:313:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256,uint256)" } }, - "functionReturnParameters": 366, - "id": 396, + "functionReturnParameters": 375, + "id": 405, "nodeType": "Return", - "src": "4654:320:0" + "src": "4765:320:0" } ] }, "documentation": null, "functionSelector": "6fe0c046", - "id": 398, + "id": 407, "implemented": true, "kind": "function", "modifiers": [], @@ -6088,137 +6201,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 351, + "id": 360, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 350, - "mutability": "mutable", - "name": "tokenId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4421:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 349, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4421:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4420:17:0" - }, - "returnParameters": { - "id": 366, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 353, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4496:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 352, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4496:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 355, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4517:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 354, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4517:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 357, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4538:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 356, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4538:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 359, "mutability": "mutable", - "name": "", + "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 398, - "src": "4559:7:0", + "scope": 407, + "src": "4532:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6229,91 +6223,7 @@ "id": 358, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4559:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 361, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4580:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 360, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4580:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 363, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4601:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 362, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4601:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 365, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4622:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 364, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4622:7:0", + "src": "4532:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6323,34 +6233,237 @@ "visibility": "internal" } ], - "src": "4482:157:0" + "src": "4531:17:0" }, - "scope": 440, - "src": "4394:587:0", + "returnParameters": { + "id": 375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 362, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4607:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 361, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4607:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 364, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4628:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 363, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4628:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 366, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4649:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4649:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4670:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4670:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4691:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4691:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 372, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4712:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4712:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 374, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4733:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 373, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4733:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4593:157:0" + }, + "scope": 449, + "src": "4505:587:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 438, + "id": 447, "nodeType": "Block", - "src": "5046:141:0", + "src": "5157:141:0", "statements": [ { "assignments": [ - 406 + 415 ], "declarations": [ { "constant": false, - "id": 406, + "id": 415, "mutability": "mutable", "name": "z", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 438, - "src": "5056:9:0", + "scope": 447, + "src": "5167:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6358,10 +6471,10 @@ "typeString": "uint256" }, "typeName": { - "id": 405, + "id": 414, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5056:7:0", + "src": "5167:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6371,14 +6484,14 @@ "visibility": "internal" } ], - "id": 413, + "id": 422, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 412, + "id": 421, "isConstant": false, "isLValue": false, "isPure": false, @@ -6392,19 +6505,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 409, + "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 407, + "id": 416, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, - "src": "5069:1:0", + "referencedDeclaration": 409, + "src": "5180:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6415,14 +6528,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 408, + "id": 417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5073:1:0", + "src": "5184:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6430,21 +6543,21 @@ }, "value": "1" }, - "src": "5069:5:0", + "src": "5180:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 410, + "id": 419, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5068:7:0", + "src": "5179:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6455,14 +6568,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 411, + "id": 420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5078:1:0", + "src": "5189:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6470,31 +6583,31 @@ }, "value": "2" }, - "src": "5068:11:0", + "src": "5179:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "5056:23:0" + "src": "5167:23:0" }, { "expression": { "argumentTypes": null, - "id": 416, + "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 414, + "id": 423, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "5089:1:0", + "referencedDeclaration": 412, + "src": "5200:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6504,49 +6617,49 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 415, + "id": 424, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, - "src": "5093:1:0", + "referencedDeclaration": 409, + "src": "5204:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5089:5:0", + "src": "5200:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 417, + "id": 426, "nodeType": "ExpressionStatement", - "src": "5089:5:0" + "src": "5200:5:0" }, { "body": { - "id": 436, + "id": 445, "nodeType": "Block", - "src": "5118:63:0", + "src": "5229:63:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 423, + "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 421, + "id": 430, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "5132:1:0", + "referencedDeclaration": 412, + "src": "5243:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6556,43 +6669,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 422, + "id": 431, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5136:1:0", + "referencedDeclaration": 415, + "src": "5247:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5132:5:0", + "src": "5243:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 424, + "id": 433, "nodeType": "ExpressionStatement", - "src": "5132:5:0" + "src": "5243:5:0" }, { "expression": { "argumentTypes": null, - "id": 434, + "id": 443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 425, + "id": 434, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5151:1:0", + "referencedDeclaration": 415, + "src": "5262:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6606,7 +6719,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 433, + "id": 442, "isConstant": false, "isLValue": false, "isPure": false, @@ -6620,7 +6733,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 430, + "id": 439, "isConstant": false, "isLValue": false, "isPure": false, @@ -6631,19 +6744,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 428, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 426, + "id": 435, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, - "src": "5156:1:0", + "referencedDeclaration": 409, + "src": "5267:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6653,18 +6766,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 427, + "id": 436, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5160:1:0", + "referencedDeclaration": 415, + "src": "5271:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5156:5:0", + "src": "5267:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6674,32 +6787,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 429, + "id": 438, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5164:1:0", + "referencedDeclaration": 415, + "src": "5275:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5156:9:0", + "src": "5267:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 431, + "id": 440, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5155:11:0", + "src": "5266:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6710,14 +6823,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 432, + "id": 441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5169:1:0", + "src": "5280:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6725,21 +6838,21 @@ }, "value": "2" }, - "src": "5155:15:0", + "src": "5266:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5151:19:0", + "src": "5262:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 435, + "id": 444, "nodeType": "ExpressionStatement", - "src": "5151:19:0" + "src": "5262:19:0" } ] }, @@ -6749,19 +6862,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 420, + "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 418, + "id": 427, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5111:1:0", + "referencedDeclaration": 415, + "src": "5222:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6771,31 +6884,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 419, + "id": 428, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "5115:1:0", + "referencedDeclaration": 412, + "src": "5226:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5111:5:0", + "src": "5222:5:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 437, + "id": 446, "nodeType": "WhileStatement", - "src": "5104:77:0" + "src": "5215:77:0" } ] }, "documentation": null, - "id": 439, + "id": 448, "implemented": true, "kind": "function", "modifiers": [], @@ -6803,18 +6916,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 401, + "id": 410, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 400, + "id": 409, "mutability": "mutable", "name": "x", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 439, - "src": "5001:9:0", + "scope": 448, + "src": "5112:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6822,10 +6935,10 @@ "typeString": "uint256" }, "typeName": { - "id": 399, + "id": 408, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5001:7:0", + "src": "5112:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6835,21 +6948,21 @@ "visibility": "internal" } ], - "src": "5000:11:0" + "src": "5111:11:0" }, "returnParameters": { - "id": 404, + "id": 413, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 403, + "id": 412, "mutability": "mutable", "name": "y", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 439, - "src": "5035:9:0", + "scope": 448, + "src": "5146:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6857,10 +6970,10 @@ "typeString": "uint256" }, "typeName": { - "id": 402, + "id": 411, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5035:7:0", + "src": "5146:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6870,29 +6983,29 @@ "visibility": "internal" } ], - "src": "5034:11:0" + "src": "5145:11:0" }, - "scope": 440, - "src": "4987:200:0", + "scope": 449, + "src": "5098:200:0", "stateMutability": "view", "virtual": false, "visibility": "internal" } ], - "scope": 441, - "src": "326:4863:0" + "scope": 450, + "src": "326:4974:0" } ], - "src": "77:5113:0" + "src": "77:5224:0" }, "legacyAST": { "absolutePath": "/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol", "exportedSymbols": { "DungeonsAndDragonsCharacter": [ - 440 + 449 ] }, - "id": 441, + "id": 450, "nodeType": "SourceUnit", "nodes": [ { @@ -6911,8 +7024,8 @@ "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 441, - "sourceUnit": 2232, + "scope": 450, + "sourceUnit": 2241, "src": "102:57:0", "symbolAliases": [], "unitAlias": "" @@ -6922,8 +7035,8 @@ "file": "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol", "id": 3, "nodeType": "ImportDirective", - "scope": 441, - "sourceUnit": 621, + "scope": 450, + "sourceUnit": 630, "src": "160:59:0", "symbolAliases": [], "unitAlias": "" @@ -6933,8 +7046,8 @@ "file": "@openzeppelin/contracts/access/Ownable.sol", "id": 4, "nodeType": "ImportDirective", - "scope": 441, - "sourceUnit": 1037, + "scope": 450, + "sourceUnit": 1046, "src": "220:52:0", "symbolAliases": [], "unitAlias": "" @@ -6944,8 +7057,8 @@ "file": "@openzeppelin/contracts/utils/Strings.sol", "id": 5, "nodeType": "ImportDirective", - "scope": 441, - "sourceUnit": 3556, + "scope": 450, + "sourceUnit": 3565, "src": "273:51:0", "symbolAliases": [], "unitAlias": "" @@ -6960,10 +7073,10 @@ "id": 6, "name": "ERC721", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2231, + "referencedDeclaration": 2240, "src": "366:6:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721_$2231", + "typeIdentifier": "t_contract$_ERC721_$2240", "typeString": "contract ERC721" } }, @@ -6978,10 +7091,10 @@ "id": 8, "name": "VRFConsumerBase", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 620, + "referencedDeclaration": 629, "src": "374:15:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_VRFConsumerBase_$620", + "typeIdentifier": "t_contract$_VRFConsumerBase_$629", "typeString": "contract VRFConsumerBase" } }, @@ -6996,10 +7109,10 @@ "id": 10, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1036, + "referencedDeclaration": 1045, "src": "391:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$1036", + "typeIdentifier": "t_contract$_Ownable_$1045", "typeString": "contract Ownable" } }, @@ -7009,33 +7122,33 @@ } ], "contractDependencies": [ - 620, - 670, - 927, - 1036, - 1092, - 1104, - 2231, - 2347, - 2378, - 2405 + 629, + 679, + 936, + 1045, + 1101, + 1113, + 2240, + 2356, + 2387, + 2414 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 440, + "id": 449, "linearizedBaseContracts": [ - 440, - 1036, - 620, - 670, - 2231, - 2378, - 2405, - 2347, - 1092, - 1104, - 927 + 449, + 1045, + 629, + 679, + 2240, + 2387, + 2414, + 2356, + 1101, + 1113, + 936 ], "name": "DungeonsAndDragonsCharacter", "nodeType": "ContractDefinition", @@ -7047,10 +7160,10 @@ "id": 12, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1300, + "referencedDeclaration": 1309, "src": "411:8:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1300", + "typeIdentifier": "t_contract$_SafeMath_$1309", "typeString": "library SafeMath" } }, @@ -7074,10 +7187,10 @@ "id": 15, "name": "Strings", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3555, + "referencedDeclaration": 3564, "src": "443:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Strings_$3555", + "typeIdentifier": "t_contract$_Strings_$3564", "typeString": "library Strings" } }, @@ -7101,7 +7214,7 @@ "name": "keyHash", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "468:24:0", "stateVariable": true, "storageLocation": "default", @@ -7129,7 +7242,7 @@ "name": "fee", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "498:20:0", "stateVariable": true, "storageLocation": "default", @@ -7158,7 +7271,7 @@ "name": "randomResult", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "524:27:0", "stateVariable": true, "storageLocation": "default", @@ -7187,7 +7300,7 @@ "name": "VRFCoordinator", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "557:29:0", "stateVariable": true, "storageLocation": "default", @@ -7217,7 +7330,7 @@ "name": "LinkToken", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "651:24:0", "stateVariable": true, "storageLocation": "default", @@ -7470,7 +7583,7 @@ ], "name": "Character", "nodeType": "StructDefinition", - "scope": 440, + "scope": 449, "src": "742:236:0", "visibility": "public" }, @@ -7482,7 +7595,7 @@ "name": "characters", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "984:29:0", "stateVariable": true, "storageLocation": "default", @@ -7522,7 +7635,7 @@ "name": "requestToCharacterName", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "1020:49:0", "stateVariable": true, "storageLocation": "default", @@ -7569,7 +7682,7 @@ "name": "requestToSender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "1075:43:0", "stateVariable": true, "storageLocation": "default", @@ -7617,7 +7730,7 @@ "name": "requestToTokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 440, + "scope": 449, "src": "1124:44:0", "stateVariable": true, "storageLocation": "default", @@ -7974,10 +8087,10 @@ "name": "VRFConsumerBase", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, + "referencedDeclaration": 629, "src": "1618:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_VRFConsumerBase_$620_$", + "typeIdentifier": "t_type$_t_contract$_VRFConsumerBase_$629_$", "typeString": "type(contract VRFConsumerBase)" } }, @@ -8030,10 +8143,10 @@ "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2231, + "referencedDeclaration": 2240, "src": "1671:6:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC721_$2231_$", + "typeIdentifier": "t_type$_t_contract$_ERC721_$2240_$", "typeString": "type(contract ERC721)" } }, @@ -8143,7 +8256,7 @@ "parameters": [], "src": "1720:0:0" }, - "scope": 440, + "scope": 449, "src": "1520:352:0", "stateMutability": "nonpayable", "virtual": false, @@ -8185,7 +8298,7 @@ "referencedDeclaration": -28, "src": "2060:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$440", + "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$449", "typeString": "contract DungeonsAndDragonsCharacter" } } @@ -8193,7 +8306,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$440", + "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$449", "typeString": "contract DungeonsAndDragonsCharacter" } ], @@ -8248,10 +8361,10 @@ "name": "LINK", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, + "referencedDeclaration": 583, "src": "2037:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_LinkTokenInterface_$765", + "typeIdentifier": "t_contract$_LinkTokenInterface_$774", "typeString": "contract LinkTokenInterface" } }, @@ -8262,7 +8375,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 697, + "referencedDeclaration": 706, "src": "2037:14:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -8465,7 +8578,7 @@ "name": "requestRandomness", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 572, + "referencedDeclaration": 581, "src": "2172:17:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", @@ -8780,7 +8893,7 @@ ], "src": "1996:9:0" }, - "scope": 440, + "scope": 449, "src": "1878:475:0", "stateMutability": "nonpayable", "virtual": false, @@ -8821,7 +8934,7 @@ "name": "tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1531, + "referencedDeclaration": 1540, "src": "2450:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", @@ -8929,7 +9042,7 @@ ], "src": "2417:15:0" }, - "scope": 440, + "scope": 449, "src": "2359:115:0", "stateMutability": "view", "virtual": false, @@ -8957,7 +9070,7 @@ "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, + "referencedDeclaration": 924, "src": "2600:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", @@ -9008,7 +9121,7 @@ "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1864, + "referencedDeclaration": 1873, "src": "2581:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", @@ -9139,7 +9252,7 @@ "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2128, + "referencedDeclaration": 2137, "src": "2707:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", @@ -9245,7 +9358,7 @@ "parameters": [], "src": "2550:0:0" }, - "scope": 440, + "scope": 449, "src": "2480:266:0", "stateMutability": "nonpayable", "virtual": false, @@ -9253,7 +9366,7 @@ }, { "baseFunctions": [ - 517 + 526 ], "body": { "id": 276, @@ -10610,10 +10723,10 @@ "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [ - 1879, - 1908 + 1888, + 1917 ], - "referencedDeclaration": 1879, + "referencedDeclaration": 1888, "src": "3653:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", @@ -10723,7 +10836,7 @@ "parameters": [], "src": "2858:0:0" }, - "scope": 440, + "scope": 449, "src": "2752:952:0", "stateMutability": "nonpayable", "virtual": false, @@ -10807,7 +10920,7 @@ "name": "sqrt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 439, + "referencedDeclaration": 448, "src": "3792:4:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", @@ -10915,7 +11028,7 @@ ], "src": "3765:9:0" }, - "scope": 440, + "scope": 449, "src": "3710:125:0", "stateMutability": "view", "virtual": false, @@ -10923,9 +11036,108 @@ }, { "body": { - "id": 347, + "id": 300, "nodeType": "Block", - "src": "4037:351:0", + "src": "3904:42:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 297, + "name": "characters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "3921:10:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", + "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3921:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 296, + "id": 299, + "nodeType": "Return", + "src": "3914:24:0" + } + ] + }, + "documentation": null, + "functionSelector": "62d36dec", + "id": 301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getNumberOfCharacters", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 293, + "nodeType": "ParameterList", + "parameters": [], + "src": "3871:2:0" + }, + "returnParameters": { + "id": 296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 295, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 301, + "src": "3895:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3895:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3894:9:0" + }, + "scope": 449, + "src": "3841:105:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 356, + "nodeType": "Block", + "src": "4148:351:0", "statements": [ { "expression": { @@ -10937,26 +11149,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 305, + "id": 314, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4068:10:0", + "src": "4179:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 307, + "id": 316, "indexExpression": { "argumentTypes": null, - "id": 306, + "id": 315, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4079:7:0", + "referencedDeclaration": 303, + "src": "4190:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10967,13 +11179,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4068:19:0", + "src": "4179:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 308, + "id": 317, "isConstant": false, "isLValue": true, "isPure": false, @@ -10981,7 +11193,7 @@ "memberName": "name", "nodeType": "MemberAccess", "referencedDeclaration": 43, - "src": "4068:24:0", + "src": "4179:24:0", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -10993,7 +11205,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 337, + "id": 346, "isConstant": false, "isLValue": false, "isPure": false, @@ -11004,7 +11216,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 332, + "id": 341, "isConstant": false, "isLValue": false, "isPure": false, @@ -11015,7 +11227,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 327, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, @@ -11026,7 +11238,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 322, + "id": 331, "isConstant": false, "isLValue": false, "isPure": false, @@ -11037,7 +11249,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 317, + "id": 326, "isConstant": false, "isLValue": false, "isPure": false, @@ -11048,26 +11260,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 309, + "id": 318, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4106:10:0", + "src": "4217:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 311, + "id": 320, "indexExpression": { "argumentTypes": null, - "id": 310, + "id": 319, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4117:7:0", + "referencedDeclaration": 303, + "src": "4228:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11078,13 +11290,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4106:19:0", + "src": "4217:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 312, + "id": 321, "isConstant": false, "isLValue": true, "isPure": false, @@ -11092,7 +11304,7 @@ "memberName": "strength", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "4106:28:0", + "src": "4217:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11106,26 +11318,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 313, + "id": 322, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4137:10:0", + "src": "4248:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 315, + "id": 324, "indexExpression": { "argumentTypes": null, - "id": 314, + "id": 323, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4148:7:0", + "referencedDeclaration": 303, + "src": "4259:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11136,13 +11348,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4137:19:0", + "src": "4248:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 316, + "id": 325, "isConstant": false, "isLValue": true, "isPure": false, @@ -11150,13 +11362,13 @@ "memberName": "dexterity", "nodeType": "MemberAccess", "referencedDeclaration": 31, - "src": "4137:29:0", + "src": "4248:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:60:0", + "src": "4217:60:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11170,26 +11382,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 318, + "id": 327, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4169:10:0", + "src": "4280:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 320, + "id": 329, "indexExpression": { "argumentTypes": null, - "id": 319, + "id": 328, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4180:7:0", + "referencedDeclaration": 303, + "src": "4291:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11200,13 +11412,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4169:19:0", + "src": "4280:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 321, + "id": 330, "isConstant": false, "isLValue": true, "isPure": false, @@ -11214,13 +11426,13 @@ "memberName": "constitution", "nodeType": "MemberAccess", "referencedDeclaration": 33, - "src": "4169:32:0", + "src": "4280:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:95:0", + "src": "4217:95:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11234,26 +11446,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 323, + "id": 332, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4204:10:0", + "src": "4315:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 325, + "id": 334, "indexExpression": { "argumentTypes": null, - "id": 324, + "id": 333, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4215:7:0", + "referencedDeclaration": 303, + "src": "4326:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11264,13 +11476,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4204:19:0", + "src": "4315:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 326, + "id": 335, "isConstant": false, "isLValue": true, "isPure": false, @@ -11278,13 +11490,13 @@ "memberName": "intelligence", "nodeType": "MemberAccess", "referencedDeclaration": 35, - "src": "4204:32:0", + "src": "4315:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:130:0", + "src": "4217:130:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11298,26 +11510,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 328, + "id": 337, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4239:10:0", + "src": "4350:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 330, + "id": 339, "indexExpression": { "argumentTypes": null, - "id": 329, + "id": 338, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4250:7:0", + "referencedDeclaration": 303, + "src": "4361:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11328,13 +11540,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4239:19:0", + "src": "4350:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 331, + "id": 340, "isConstant": false, "isLValue": true, "isPure": false, @@ -11342,13 +11554,13 @@ "memberName": "wisdom", "nodeType": "MemberAccess", "referencedDeclaration": 37, - "src": "4239:26:0", + "src": "4350:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:159:0", + "src": "4217:159:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11362,26 +11574,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 333, + "id": 342, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4268:10:0", + "src": "4379:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 335, + "id": 344, "indexExpression": { "argumentTypes": null, - "id": 334, + "id": 343, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4279:7:0", + "referencedDeclaration": 303, + "src": "4390:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11392,13 +11604,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4268:19:0", + "src": "4379:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 336, + "id": 345, "isConstant": false, "isLValue": true, "isPure": false, @@ -11406,13 +11618,13 @@ "memberName": "charisma", "nodeType": "MemberAccess", "referencedDeclaration": 39, - "src": "4268:28:0", + "src": "4379:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4106:190:0", + "src": "4217:190:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11423,12 +11635,12 @@ "arguments": [ { "argumentTypes": null, - "id": 339, + "id": 348, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4319:7:0", + "referencedDeclaration": 303, + "src": "4430:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11442,18 +11654,18 @@ "typeString": "uint256" } ], - "id": 338, + "id": 347, "name": "getLevel", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 292, - "src": "4310:8:0", + "src": "4421:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 340, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, @@ -11461,7 +11673,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4310:17:0", + "src": "4421:17:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11474,26 +11686,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 341, + "id": 350, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4341:10:0", + "src": "4452:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 343, + "id": 352, "indexExpression": { "argumentTypes": null, - "id": 342, + "id": 351, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "4352:7:0", + "referencedDeclaration": 303, + "src": "4463:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11504,13 +11716,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4341:19:0", + "src": "4452:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 344, + "id": 353, "isConstant": false, "isLValue": true, "isPure": false, @@ -11518,36 +11730,36 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "4341:30:0", + "src": "4452:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 345, + "id": 354, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4054:327:0", + "src": "4165:327:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_string_storage_$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(string storage ref,uint256,uint256,uint256)" } }, - "functionReturnParameters": 304, - "id": 346, + "functionReturnParameters": 313, + "id": 355, "nodeType": "Return", - "src": "4047:334:0" + "src": "4158:334:0" } ] }, "documentation": null, "functionSelector": "4f95b5f0", - "id": 348, + "id": 357, "implemented": true, "kind": "function", "modifiers": [], @@ -11555,137 +11767,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 295, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 294, - "mutability": "mutable", - "name": "tokenId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 348, - "src": "3871:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 293, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3871:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3870:17:0" - }, - "returnParameters": { "id": 304, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 297, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 348, - "src": "3946:13:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 296, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "3946:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 299, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 348, - "src": "3973:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 298, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3973:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 301, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 348, - "src": "3994:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 300, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3994:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 303, "mutability": "mutable", - "name": "", + "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 348, - "src": "4015:7:0", + "scope": 357, + "src": "3982:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11696,7 +11789,7 @@ "id": 302, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4015:7:0", + "src": "3982:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11706,19 +11799,138 @@ "visibility": "internal" } ], - "src": "3932:100:0" + "src": "3981:17:0" }, - "scope": 440, - "src": "3841:547:0", + "returnParameters": { + "id": 313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 306, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 357, + "src": "4057:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 305, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4057:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 308, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 357, + "src": "4084:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4084:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 310, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 357, + "src": "4105:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4105:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 357, + "src": "4126:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4126:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4043:100:0" + }, + "scope": 449, + "src": "3952:547:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 397, + "id": 406, "nodeType": "Block", - "src": "4644:337:0", + "src": "4755:337:0", "statements": [ { "expression": { @@ -11730,26 +11942,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 367, + "id": 376, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4675:10:0", + "src": "4786:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 369, + "id": 378, "indexExpression": { "argumentTypes": null, - "id": 368, + "id": 377, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4686:7:0", + "referencedDeclaration": 359, + "src": "4797:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11760,13 +11972,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4675:19:0", + "src": "4786:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 370, + "id": 379, "isConstant": false, "isLValue": true, "isPure": false, @@ -11774,7 +11986,7 @@ "memberName": "strength", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "4675:28:0", + "src": "4786:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11786,26 +11998,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 371, + "id": 380, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4717:10:0", + "src": "4828:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 373, + "id": 382, "indexExpression": { "argumentTypes": null, - "id": 372, + "id": 381, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4728:7:0", + "referencedDeclaration": 359, + "src": "4839:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11816,13 +12028,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4717:19:0", + "src": "4828:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 374, + "id": 383, "isConstant": false, "isLValue": true, "isPure": false, @@ -11830,7 +12042,7 @@ "memberName": "dexterity", "nodeType": "MemberAccess", "referencedDeclaration": 31, - "src": "4717:29:0", + "src": "4828:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11842,26 +12054,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 375, + "id": 384, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4760:10:0", + "src": "4871:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 377, + "id": 386, "indexExpression": { "argumentTypes": null, - "id": 376, + "id": 385, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4771:7:0", + "referencedDeclaration": 359, + "src": "4882:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11872,13 +12084,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4760:19:0", + "src": "4871:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 378, + "id": 387, "isConstant": false, "isLValue": true, "isPure": false, @@ -11886,7 +12098,7 @@ "memberName": "constitution", "nodeType": "MemberAccess", "referencedDeclaration": 33, - "src": "4760:32:0", + "src": "4871:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11898,26 +12110,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 379, + "id": 388, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4806:10:0", + "src": "4917:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 381, + "id": 390, "indexExpression": { "argumentTypes": null, - "id": 380, + "id": 389, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4817:7:0", + "referencedDeclaration": 359, + "src": "4928:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11928,13 +12140,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4806:19:0", + "src": "4917:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 382, + "id": 391, "isConstant": false, "isLValue": true, "isPure": false, @@ -11942,7 +12154,7 @@ "memberName": "intelligence", "nodeType": "MemberAccess", "referencedDeclaration": 35, - "src": "4806:32:0", + "src": "4917:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11954,26 +12166,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 383, + "id": 392, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4852:10:0", + "src": "4963:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 385, + "id": 394, "indexExpression": { "argumentTypes": null, - "id": 384, + "id": 393, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4863:7:0", + "referencedDeclaration": 359, + "src": "4974:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11984,13 +12196,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4852:19:0", + "src": "4963:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 386, + "id": 395, "isConstant": false, "isLValue": true, "isPure": false, @@ -11998,7 +12210,7 @@ "memberName": "wisdom", "nodeType": "MemberAccess", "referencedDeclaration": 37, - "src": "4852:26:0", + "src": "4963:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12010,26 +12222,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 387, + "id": 396, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4892:10:0", + "src": "5003:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 389, + "id": 398, "indexExpression": { "argumentTypes": null, - "id": 388, + "id": 397, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4903:7:0", + "referencedDeclaration": 359, + "src": "5014:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12040,13 +12252,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4892:19:0", + "src": "5003:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 390, + "id": 399, "isConstant": false, "isLValue": true, "isPure": false, @@ -12054,7 +12266,7 @@ "memberName": "charisma", "nodeType": "MemberAccess", "referencedDeclaration": 39, - "src": "4892:28:0", + "src": "5003:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12066,26 +12278,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 391, + "id": 400, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4934:10:0", + "src": "5045:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 393, + "id": 402, "indexExpression": { "argumentTypes": null, - "id": 392, + "id": 401, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4945:7:0", + "referencedDeclaration": 359, + "src": "5056:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12096,13 +12308,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4934:19:0", + "src": "5045:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 394, + "id": 403, "isConstant": false, "isLValue": true, "isPure": false, @@ -12110,36 +12322,36 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "4934:30:0", + "src": "5045:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 395, + "id": 404, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4661:313:0", + "src": "4772:313:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256,uint256)" } }, - "functionReturnParameters": 366, - "id": 396, + "functionReturnParameters": 375, + "id": 405, "nodeType": "Return", - "src": "4654:320:0" + "src": "4765:320:0" } ] }, "documentation": null, "functionSelector": "6fe0c046", - "id": 398, + "id": 407, "implemented": true, "kind": "function", "modifiers": [], @@ -12147,137 +12359,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 351, + "id": 360, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 350, - "mutability": "mutable", - "name": "tokenId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4421:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 349, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4421:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4420:17:0" - }, - "returnParameters": { - "id": 366, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 353, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4496:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 352, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4496:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 355, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4517:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 354, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4517:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 357, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4538:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 356, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4538:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 359, "mutability": "mutable", - "name": "", + "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 398, - "src": "4559:7:0", + "scope": 407, + "src": "4532:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12288,91 +12381,7 @@ "id": 358, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4559:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 361, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4580:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 360, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4580:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 363, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4601:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 362, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4601:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 365, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 398, - "src": "4622:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 364, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4622:7:0", + "src": "4532:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12382,34 +12391,237 @@ "visibility": "internal" } ], - "src": "4482:157:0" + "src": "4531:17:0" }, - "scope": 440, - "src": "4394:587:0", + "returnParameters": { + "id": 375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 362, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4607:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 361, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4607:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 364, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4628:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 363, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4628:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 366, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4649:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4649:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4670:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4670:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4691:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4691:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 372, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4712:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4712:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 374, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 407, + "src": "4733:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 373, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4733:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4593:157:0" + }, + "scope": 449, + "src": "4505:587:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 438, + "id": 447, "nodeType": "Block", - "src": "5046:141:0", + "src": "5157:141:0", "statements": [ { "assignments": [ - 406 + 415 ], "declarations": [ { "constant": false, - "id": 406, + "id": 415, "mutability": "mutable", "name": "z", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 438, - "src": "5056:9:0", + "scope": 447, + "src": "5167:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12417,10 +12629,10 @@ "typeString": "uint256" }, "typeName": { - "id": 405, + "id": 414, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5056:7:0", + "src": "5167:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12430,14 +12642,14 @@ "visibility": "internal" } ], - "id": 413, + "id": 422, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 412, + "id": 421, "isConstant": false, "isLValue": false, "isPure": false, @@ -12451,19 +12663,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 409, + "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 407, + "id": 416, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, - "src": "5069:1:0", + "referencedDeclaration": 409, + "src": "5180:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12474,14 +12686,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 408, + "id": 417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5073:1:0", + "src": "5184:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -12489,21 +12701,21 @@ }, "value": "1" }, - "src": "5069:5:0", + "src": "5180:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 410, + "id": 419, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5068:7:0", + "src": "5179:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12514,14 +12726,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 411, + "id": 420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5078:1:0", + "src": "5189:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -12529,31 +12741,31 @@ }, "value": "2" }, - "src": "5068:11:0", + "src": "5179:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "5056:23:0" + "src": "5167:23:0" }, { "expression": { "argumentTypes": null, - "id": 416, + "id": 425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 414, + "id": 423, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "5089:1:0", + "referencedDeclaration": 412, + "src": "5200:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12563,49 +12775,49 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 415, + "id": 424, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, - "src": "5093:1:0", + "referencedDeclaration": 409, + "src": "5204:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5089:5:0", + "src": "5200:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 417, + "id": 426, "nodeType": "ExpressionStatement", - "src": "5089:5:0" + "src": "5200:5:0" }, { "body": { - "id": 436, + "id": 445, "nodeType": "Block", - "src": "5118:63:0", + "src": "5229:63:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 423, + "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 421, + "id": 430, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "5132:1:0", + "referencedDeclaration": 412, + "src": "5243:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12615,43 +12827,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 422, + "id": 431, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5136:1:0", + "referencedDeclaration": 415, + "src": "5247:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5132:5:0", + "src": "5243:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 424, + "id": 433, "nodeType": "ExpressionStatement", - "src": "5132:5:0" + "src": "5243:5:0" }, { "expression": { "argumentTypes": null, - "id": 434, + "id": 443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 425, + "id": 434, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5151:1:0", + "referencedDeclaration": 415, + "src": "5262:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12665,7 +12877,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 433, + "id": 442, "isConstant": false, "isLValue": false, "isPure": false, @@ -12679,7 +12891,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 430, + "id": 439, "isConstant": false, "isLValue": false, "isPure": false, @@ -12690,19 +12902,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 428, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 426, + "id": 435, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 400, - "src": "5156:1:0", + "referencedDeclaration": 409, + "src": "5267:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12712,18 +12924,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 427, + "id": 436, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5160:1:0", + "referencedDeclaration": 415, + "src": "5271:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5156:5:0", + "src": "5267:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12733,32 +12945,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 429, + "id": 438, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5164:1:0", + "referencedDeclaration": 415, + "src": "5275:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5156:9:0", + "src": "5267:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 431, + "id": 440, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5155:11:0", + "src": "5266:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12769,14 +12981,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 432, + "id": 441, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5169:1:0", + "src": "5280:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -12784,21 +12996,21 @@ }, "value": "2" }, - "src": "5155:15:0", + "src": "5266:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5151:19:0", + "src": "5262:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 435, + "id": 444, "nodeType": "ExpressionStatement", - "src": "5151:19:0" + "src": "5262:19:0" } ] }, @@ -12808,19 +13020,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 420, + "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 418, + "id": 427, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "5111:1:0", + "referencedDeclaration": 415, + "src": "5222:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12830,31 +13042,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 419, + "id": 428, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "5115:1:0", + "referencedDeclaration": 412, + "src": "5226:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5111:5:0", + "src": "5222:5:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 437, + "id": 446, "nodeType": "WhileStatement", - "src": "5104:77:0" + "src": "5215:77:0" } ] }, "documentation": null, - "id": 439, + "id": 448, "implemented": true, "kind": "function", "modifiers": [], @@ -12862,18 +13074,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 401, + "id": 410, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 400, + "id": 409, "mutability": "mutable", "name": "x", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 439, - "src": "5001:9:0", + "scope": 448, + "src": "5112:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12881,10 +13093,10 @@ "typeString": "uint256" }, "typeName": { - "id": 399, + "id": 408, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5001:7:0", + "src": "5112:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12894,21 +13106,21 @@ "visibility": "internal" } ], - "src": "5000:11:0" + "src": "5111:11:0" }, "returnParameters": { - "id": 404, + "id": 413, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 403, + "id": 412, "mutability": "mutable", "name": "y", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 439, - "src": "5035:9:0", + "scope": 448, + "src": "5146:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12916,10 +13128,10 @@ "typeString": "uint256" }, "typeName": { - "id": 402, + "id": 411, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5035:7:0", + "src": "5146:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12929,20 +13141,20 @@ "visibility": "internal" } ], - "src": "5034:11:0" + "src": "5145:11:0" }, - "scope": 440, - "src": "4987:200:0", + "scope": 449, + "src": "5098:200:0", "stateMutability": "view", "virtual": false, "visibility": "internal" } ], - "scope": 441, - "src": "326:4863:0" + "scope": 450, + "src": "326:4974:0" } ], - "src": "77:5113:0" + "src": "77:5224:0" }, "compiler": { "name": "solc", @@ -13047,8 +13259,8 @@ } }, "links": {}, - "address": "0x096B27a49d2E622932aEEA342F28c8E46BC99C3f", - "transactionHash": "0x99575cff6e01056ac1c68c9e57eff932cc6ef11d1df1ad66d4f462d46ebc9873" + "address": "0xF6F6555C0797565c8Ba63A15f9545Df4937209E2", + "transactionHash": "0x73614133349e58c7c147436e2831b10d1c36d3aac3cc4c4ae4f191a5dab6f9d8" }, "42": { "events": { @@ -13153,7 +13365,7 @@ } }, "schemaVersion": "3.2.5", - "updatedAt": "2020-11-25T02:35:12.040Z", + "updatedAt": "2020-11-25T23:19:25.044Z", "networkType": "ethereum", "devdoc": { "methods": { diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index 2d27482..8bb3b10 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -1419,8 +1419,8 @@ "4": { "events": {}, "links": {}, - "address": "0xc3e7A50d2Bc7755FeE541AFD9377499baE705E21", - "transactionHash": "0x3dfcd6c004ab0de57ce17f791386654c64427c5eca9ece4cb46ecc849a7120a4" + "address": "0x58da49E5a7E0314d39B76B7FBDf7bB5171a9E924", + "transactionHash": "0xa4935d72aa5095c4f091916c42070d83d5edc5b37cf05ba518c73b18736e58d3" }, "42": { "events": {}, @@ -1430,7 +1430,7 @@ } }, "schemaVersion": "3.2.5", - "updatedAt": "2020-11-25T02:35:12.044Z", + "updatedAt": "2020-11-25T23:19:25.048Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/contracts/DungeonsAndDragonsCharacter.sol b/contracts/DungeonsAndDragonsCharacter.sol index 343e67d..ada68b4 100644 --- a/contracts/DungeonsAndDragonsCharacter.sol +++ b/contracts/DungeonsAndDragonsCharacter.sol @@ -113,6 +113,10 @@ contract DungeonsAndDragonsCharacter is ERC721, VRFConsumerBase, Ownable { return sqrt(characters[tokenId].experience); } + function getNumberOfCharacters() public view returns (uint256) { + return characters.length; + } + function getCharacterOverView(uint256 tokenId) public view diff --git a/metadata/elf.json b/metadata/the-chainlink-elf.json similarity index 81% rename from metadata/elf.json rename to metadata/the-chainlink-elf.json index cabf05b..dfc233d 100644 --- a/metadata/elf.json +++ b/metadata/the-chainlink-elf.json @@ -1,31 +1,31 @@ { - "name": "Sergey the Elf", + "name": "The Chainlink Elf", "description": "Inspiring, Based, Mythical, Oracle loving creature. Leading the new world and helping teach about superior digital agreements. Also is good with a bow!", "image": "https://ipfs.io/ipfs/QmTgqnhFBMkfT9s8PHKcdXBn1f5bG3Q5hmBaR4U6hoTvb1?filename=Chainlink_Elf.png", "attributes": [ { "trait_type": "Strength", - "value": 63 + "value": 84 }, { "trait_type": "Dexterity", - "value": 10 + "value": 86 }, { "trait_type": "Constitution", - "value": 7 + "value": 19 }, { "trait_type": "Intelligence", - "value": 6 + "value": 79 }, { "trait_type": "Wisdom", - "value": 51 + "value": 93 }, { "trait_type": "Charisma", - "value": 80 + "value": 53 }, { "trait_type": "Experience", diff --git a/metadata/knight.json b/metadata/the-chainlink-knight.json similarity index 77% rename from metadata/knight.json rename to metadata/the-chainlink-knight.json index 25bd4b7..2ff7862 100644 --- a/metadata/knight.json +++ b/metadata/the-chainlink-knight.json @@ -1,31 +1,31 @@ { - "name": "Julian the Knight", - "description": "Defender against Flash Loan attacks, protector of #Defi protocols. Helping keep the smart contract kingdom secure, reliable, and safe. Also is an amazing artist. ", + "name": "The Chainlink Knight", + "description": "Defender against Flash Loan attacks, protector of #Defi protocols. Helping keep the smart contract kingdom secure, reliable, and safe. ", "image": "https://ipfs.io/ipfs/QmZGQA92ri1jfzSu61JRaNQXYg1bLuM7p8YT83DzFA2KLH?filename=Chainlink_Knight.png", "attributes": [ { "trait_type": "Strength", - "value": 67 + "value": 53 }, { "trait_type": "Dexterity", - "value": 94 + "value": 54 }, { "trait_type": "Constitution", - "value": 34 + "value": 2 }, { "trait_type": "Intelligence", - "value": 81 + "value": 96 }, { "trait_type": "Wisdom", - "value": 45 + "value": 94 }, { "trait_type": "Charisma", - "value": 4 + "value": 99 }, { "trait_type": "Experience", diff --git a/metadata/orc.json b/metadata/the-chainlink-orc.json similarity index 80% rename from metadata/orc.json rename to metadata/the-chainlink-orc.json index db356d4..d838a34 100644 --- a/metadata/orc.json +++ b/metadata/the-chainlink-orc.json @@ -1,31 +1,31 @@ { - "name": "Pepe the Orc", - "description": "This green tweeting machine is one of the most exciting and excited creatures on the planet. Don't let his looks fool you, he loves to love new technology and help others get involved. Loves watching 'JSON Parser", + "name": "The Chainlink Orc", + "description": "This green tweeting machine is one of the most exciting and excited creatures on the planet. Don't let his looks fool you, he loves to love new technology and help others get involved. Loves watching 'JSON Parser'", "image": "https://ipfs.io/ipfs/QmW1toapYs7M29rzLXTENn3pbvwe8ioikX1PwzACzjfdHP?filename=Chainlink_Orc.png", "attributes": [ { "trait_type": "Strength", - "value": 90 + "value": 46 }, { "trait_type": "Dexterity", - "value": 16 + "value": 55 }, { "trait_type": "Constitution", - "value": 76 - }, - { - "trait_type": "Intelligence", "value": 54 }, + { + "trait_type": "Intelligence", + "value": 61 + }, { "trait_type": "Wisdom", - "value": 85 + "value": 93 }, { "trait_type": "Charisma", - "value": 3 + "value": 21 }, { "trait_type": "Experience", diff --git a/metadata/witch.json b/metadata/the-chainlink-wizard.json similarity index 76% rename from metadata/witch.json rename to metadata/the-chainlink-wizard.json index 766643e..29f8e00 100644 --- a/metadata/witch.json +++ b/metadata/the-chainlink-wizard.json @@ -1,31 +1,31 @@ { - "name": "Ari the Witch", - "description": "Brilliant spell-slinger and magical with cryptography. Often uses Jewles in his h-index potions. ", + "name": "The Chainlink Wizard", + "description": "Brilliant spell-slinger and magical with cryptography. Often uses Jewles in her h-index potions. ", "image": "https://ipfs.io/ipfs/QmPMwQtFpEdKrUjpQJfoTeZS1aVSeuJT6Mof7uV29AcUpF?filename=Chainlink_Witch.png", "attributes": [ { "trait_type": "Strength", - "value": 43 + "value": 90 }, { "trait_type": "Dexterity", - "value": 26 - }, - { - "trait_type": "Constitution", - "value": 61 - }, - { - "trait_type": "Intelligence", "value": 74 }, + { + "trait_type": "Constitution", + "value": 96 + }, + { + "trait_type": "Intelligence", + "value": 90 + }, { "trait_type": "Wisdom", - "value": 48 + "value": 2 }, { "trait_type": "Charisma", - "value": 70 + "value": 96 }, { "trait_type": "Experience", diff --git a/scripts/create-metadata.js b/scripts/create-metadata.js new file mode 100644 index 0000000..7581cb3 --- /dev/null +++ b/scripts/create-metadata.js @@ -0,0 +1,65 @@ +const DungeonsAndDragons = artifacts.require('DungeonsAndDragonsCharacter') +const fs = require('fs') + +const metadataTemple = { + "name": "", + "description": "", + "image": "", + "attributes": [ + { + "trait_type": "Strength", + "value": 0 + }, + { + "trait_type": "Dexterity", + "value": 0 + }, + { + "trait_type": "Constitution", + "value": 0 + }, + { + "trait_type": "Intelligence", + "value": 0 + }, + { + "trait_type": "Wisdom", + "value": 0 + }, + { + "trait_type": "Charisma", + "value": 0 + }, + { + "trait_type": "Experience", + "value": 0 + } + ] +} +module.exports = async callback => { + const dnd = await DungeonsAndDragons.deployed() + length = await dnd.getNumberOfCharacters() + index = 0 + while (index < length) { + console.log('Let\'s get the overview of your character ' + index + ' of ' + length) + let characterMetadata = metadataTemple + let characterOverview = await dnd.characters(index) + index++ + characterMetadata['name'] = characterOverview['name'] + if (fs.existsSync('metadata/' + characterMetadata['name'].toLowerCase().replace(/\s/g, '-') + '.json')) { + console.log('test') + continue + } + console.log(characterMetadata['name']) + characterMetadata['attributes'][0]['value'] = characterOverview['strength']['words'][0] + characterMetadata['attributes'][1]['value'] = characterOverview['dexterity']['words'][0] + characterMetadata['attributes'][2]['value'] = characterOverview['constitution']['words'][0] + characterMetadata['attributes'][3]['value'] = characterOverview['intelligence']['words'][0] + characterMetadata['attributes'][4]['value'] = characterOverview['wisdom']['words'][0] + characterMetadata['attributes'][5]['value'] = characterOverview['charisma']['words'][0] + filename = 'metadata/' + characterMetadata['name'].toLowerCase().replace(/\s/g, '-') + let data = JSON.stringify(characterMetadata) + fs.writeFileSync(filename + '.json', data) + } + callback(dnd) +} diff --git a/scripts/generate-character.js b/scripts/generate-character.js index c770617..79aa8e2 100644 --- a/scripts/generate-character.js +++ b/scripts/generate-character.js @@ -3,9 +3,9 @@ const DungeonsAndDragons = artifacts.require('DungeonsAndDragonsCharacter') module.exports = async callback => { const dnd = await DungeonsAndDragons.deployed() console.log('Creating requests on contract:', dnd.address) - // const tx = await dnd.requestNewRandomCharacter(77, "Julian the Knight") - // const tx2 = await dnd.requestNewRandomCharacter(7777777, "Sergey the Elf") - const tx3 = await dnd.requestNewRandomCharacter(7, "Ari the Wizard") - // const tx4 = await dnd.requestNewRandomCharacter(777, "Pepe the Orc") + const tx = await dnd.requestNewRandomCharacter(77, "The Chainlink Knight") + const tx2 = await dnd.requestNewRandomCharacter(7777777, "The Chainlink Elf") + const tx3 = await dnd.requestNewRandomCharacter(7, "The Chainlink Wizard") + const tx4 = await dnd.requestNewRandomCharacter(777, "The Chainlink Orc") callback(tx.tx) } diff --git a/scripts/set-token-uri.js b/scripts/set-token-uri.js index c7f3a1e..b8a4c81 100644 --- a/scripts/set-token-uri.js +++ b/scripts/set-token-uri.js @@ -2,11 +2,11 @@ const DungeonsAndDragons = artifacts.require('DungeonsAndDragonsCharacter') const TOKENID = 0 module.exports = async callback => { const dnd = await DungeonsAndDragons.deployed() - console.log('Let\'s set the tokenURI of your character') - // const tx = await dnd.setTokenURI(0, "https://ipfs.io/ipfs/QmVKfktQ2hLwPEiGaymEajLQGavGGZDSYkwhdo7M17J2z4?filename=knight.json") - const tx = await dnd.setTokenURI(1, "https://ipfs.io/ipfs/QmTzQzKymQcv2BhGuVNmfLGePoD43rhQEM5eSkxsLFTB9c?filename=elf.json") - const tx1 = await dnd.setTokenURI(2, "https://ipfs.io/ipfs/QmREDfvFTT24qC4u7wVXXujtiuP1RfvtHyupwdfGPQDyQi?filename=witch.json") - const tx2 = await dnd.setTokenURI(3, "https://ipfs.io/ipfs/QmS2u1bPTQdAnDYrXE7qzLxyB6sYx2rN6oo8XkYP6sxbd6?filename=orc.json") + console.log('Let\'s set the tokenURI of your characters') + const tx = await dnd.setTokenURI(0, "https://ipfs.io/ipfs/QmaSED9ZSbdGts5UZqueFJjrJ4oHH3GnmGJdSDrkzpYqRS?filename=the-chainlink-knight.json") + const tx1 = await dnd.setTokenURI(1, "https://ipfs.io/ipfs/QmTvsVaaHTuMNmwXgbfgkrztFEazAPyzmrb4VSS2PbqLjA?filename=the-chainlink-elf.json") + const tx2 = await dnd.setTokenURI(2, "https://ipfs.io/ipfs/QmPZQhiBB6pwcxRgwZe2mx6ZizCPYgq8i4FBMETyWK1V2z?filename=the-chainlink-wizard.json") + const tx3 = await dnd.setTokenURI(3, "https://ipfs.io/ipfs/QmS6aznzxshLMcECPQZjCR94UF22WHu6FMM5HLQvaYL9NP?filename=the-chainlink-orc.json") console.log(tx) callback(tx.tx) } diff --git a/truffle-config.js b/truffle-config.js index e656c6d..bb2d6ae 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -4,7 +4,7 @@ module.exports = { networks: { rinkeby: { provider: () => { - return new HDWalletProvider(process.env.MNEMONIC, process.env.RINKEBY_RPC_URL) + return new HDWalletProvider(process.env.MNEMONIC_2, process.env.RINKEBY_RPC_URL) }, network_id: '4', skipDryRun: true,