UNPKG

@vporton/future-contracts

Version:

Ethereum accounts bid on future financing (essentially, transfer money from the future) - smart contracts

478 lines (477 loc) 1.34 MB
{ "contractName": "ERC1155", "abi": [ { "inputs": [ { "internalType": "string", "name": "uri_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"details\":\"See {_setURI}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol\":\"ERC1155\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x7dcdf324fd4d2dec68846958865ae833956cb4ad80cd83cf6f107e7c33500bf6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cddf52afd931cbf983100a0415f04e6646aa90d100fd91437d2a75e3b241206\",\"dweb:/ipfs/QmXXJ2qoC1rSsKdg5s87m3BPQ3RFGw2rNrNv7KygzGJ9zQ\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xd6b90e604fb2eb2d641c7110c72440bf2dc999ec6ab8ff60f200e71ca75d1d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b92d8ab83b21ff984b1f0d6d66897d5afb1f2052004cbcb133cea023e0ae468\",\"dweb:/ipfs/QmTarypkQrFp4UMjTh7Zzhz2nZLz5uPS4nJQtHDEuwBVe6\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x61321d2c86346045bf394885ee3afeecc65f9daad2694bc19110967588fd7b5d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1703b877203e0447ede72dcf73f1c4f2089b415bd1c44877904128a64fafed5b\",\"dweb:/ipfs/QmaZoYDo2FWtKcwCc9zuabU6zri8KV9xJrhU614d93sLid\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xd918cca1b659f588a6d12d05fd7196179a8b1eac9133d7f77da7ef3133e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c75d578f42e2e2e427b934e6c41cc759be2d0a52155868308e915328c8feb2b\",\"dweb:/ipfs/QmbFNHtWAoNhe82Hy6yKTePWJRczqzp1APSBfLS9XfAN6e\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x2690a9b7f4f7489b8d25a4fc6bffc02ec3971fb41ed6c8b59adef2833bdab07c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8148c99452b6793ac9599abdc8bdaf4eeb47f34590beea8aa01089be14e2990c\",\"dweb:/ipfs/QmNdenmZ4EDfH9TuBas3pHeGuZvDNo2rsfgUj6ka8vuH37\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]}},\"version\":1}", "bytecode": "0x60806040523480156200001157600080fd5b5060405162001da638038062001da6833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052506200010191506301ffc9a760e01b905062000137565b6200010c81620001bc565b6200011e636cdb3d1360e11b62000137565b620001306303a24d0760e21b62000137565b5062000281565b6001600160e01b0319808216141562000197576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001d1906003906020840190620001d5565b5050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200020d576000855562000258565b82601f106200022857805160ff191683800117855562000258565b8280016001018555821562000258579182015b82811115620002585782518255916020019190600101906200023b565b50620002669291506200026a565b5090565b5b808211156200026657600081556001016200026b565b611b1580620002916000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610392578063a22cb46514610509578063e985e9c514610544578063f242432a1461057f57610087565b8062fdd58e1461008c57806301ffc9a7146100d75780630e89341c1461012a5780632eb2c2d6146101bc575b600080fd5b6100c5600480360360408110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610657565b60408051918252519081900360200190f35b610116600480360360208110156100ed57600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166106fa565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610731565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610181578181015183820152602001610169565b50505050905090810190601f1680156101ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610390600480360360a08110156101d257600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561021357600080fd5b82018360208201111561022557600080fd5b8035906020019184602083028401116401000000008311171561024757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460208302840111640100000000831117156102cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561031b57600080fd5b82018360208201111561032d57600080fd5b8035906020019184600183028401116401000000008311171561034f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107e7945050505050565b005b6104b9600480360360408110156103a857600080fd5b8101906020810181356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460208302840111640100000000831117156103f757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561044757600080fd5b82018360208201111561045957600080fd5b8035906020019184602083028401116401000000008311171561047b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bb5945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104f55781810151838201526020016104dd565b505050509050019250505060405180910390f35b6103906004803603604081101561051f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d9b565b6101166004803603604081101561055a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ef6565b610390600480360360a081101561059557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105e257600080fd5b8201836020820111156105f457600080fd5b8035906020019184600183028401116401000000008311171561061657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f31945050505050565b600073ffffffffffffffffffffffffffffffffffffffff83166106c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611960602b913960400191505060405180910390fd5b50600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107db5780601f106107b0576101008083540402835291602001916107db565b820191906000526020600020905b8154815290600101906020018083116107be57829003601f168201915b50505050509050919050565b8151835114610841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611ab86028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119e56025913960400191505060405180910390fd5b6108b561117e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806108fa57506108fa856108f561117e565b610ef6565b61094f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611a0a6032913960400191505060405180910390fd5b600061095961117e565b9050610969818787878787610bad565b60005b8451811015610a9e57600085828151811061098357fe5b60200260200101519050600085838151811061099b57fe5b60200260200101519050610a22816040518060600160405280602a8152602001611a3c602a91396001600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111839092919063ffffffff16565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e811685529252808320939093558a1681522054610a669082611234565b600092835260016020818152604080862073ffffffffffffffffffffffffffffffffffffffff8d16875290915290932055500161096c565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610b4b578181015183820152602001610b33565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610b8a578181015183820152602001610b72565b5050505090500194505050505060405180910390a4610bad8187878787876112af565b505050505050565b60608151835114610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611a8f6029913960400191505060405180910390fd5b6000835167ffffffffffffffff81118015610c2b57600080fd5b50604051908082528060200260200182016040528015610c55578160200160208202803683370190505b50905060005b8451811015610d9357600073ffffffffffffffffffffffffffffffffffffffff16858281518110610c8857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061198b6031913960400191505060405180910390fd5b60016000858381518110610d0d57fe5b602002602001015181526020019081526020016000206000868381518110610d3157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610d8057fe5b6020908102919091010152600101610c5b565b509392505050565b8173ffffffffffffffffffffffffffffffffffffffff16610dba61117e565b73ffffffffffffffffffffffffffffffffffffffff161415610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611a666029913960400191505060405180910390fd5b8060026000610e3461117e565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155610ea361117e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8416610f9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119e56025913960400191505060405180910390fd5b610fa561117e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610fe55750610fe5856108f561117e565b61103a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806119bc6029913960400191505060405180910390fd5b600061104461117e565b9050611064818787611055886115e1565b61105e886115e1565b87610bad565b6110b8836040518060600160405280602a8152602001611a3c602a9139600087815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190611183565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b811685529252808320939093558716815220546110fc9084611234565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610bad818787878787611626565b335b90565b6000818484111561122c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111f15781810151838201526020016111d9565b50505050905090810190601f16801561121e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156112a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6112ce8473ffffffffffffffffffffffffffffffffffffffff16611816565b15610bad578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561138357818101518382015260200161136b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156113c25781810151838201526020016113aa565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156113fe5781810151838201526020016113e6565b50505050905090810190601f16801561142b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561145057600080fd5b505af192505050801561147557506040513d602081101561147057600080fd5b505160015b61153e57611481611822565b8061148c57506114ed565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283518493919283926044019190850190808383600083156111f15781810151838201526020016111d9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119046034913960400191505060405180910390fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806119386028913960400191505060405180910390fd5b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061161557fe5b602090810291909101015292915050565b6116458473ffffffffffffffffffffffffffffffffffffffff16611816565b15610bad578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116fb5781810151838201526020016116e3565b50505050905090810190601f1680156117285780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561174b57600080fd5b505af192505050801561177057506040513d602081101561176b57600080fd5b505160015b61177c57611481611822565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806119386028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561183257611180565b600481823e6308c379a0611846825161181c565b1461185057611180565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d67ffffffffffffffff816024840111818411171561189e5750505050611180565b828401925082519150808211156118b85750505050611180565b503d830160208284010111156118d057505050611180565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212202fdb122250567368b4b2e3d5de3dfb5bbade384bc729443664e918f696250b5564736f6c63430007060033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610392578063a22cb46514610509578063e985e9c514610544578063f242432a1461057f57610087565b8062fdd58e1461008c57806301ffc9a7146100d75780630e89341c1461012a5780632eb2c2d6146101bc575b600080fd5b6100c5600480360360408110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610657565b60408051918252519081900360200190f35b610116600480360360208110156100ed57600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166106fa565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610731565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610181578181015183820152602001610169565b50505050905090810190601f1680156101ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610390600480360360a08110156101d257600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561021357600080fd5b82018360208201111561022557600080fd5b8035906020019184602083028401116401000000008311171561024757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460208302840111640100000000831117156102cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561031b57600080fd5b82018360208201111561032d57600080fd5b8035906020019184600183028401116401000000008311171561034f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107e7945050505050565b005b6104b9600480360360408110156103a857600080fd5b8101906020810181356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460208302840111640100000000831117156103f757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561044757600080fd5b82018360208201111561045957600080fd5b8035906020019184602083028401116401000000008311171561047b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bb5945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104f55781810151838201526020016104dd565b505050509050019250505060405180910390f35b6103906004803603604081101561051f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d9b565b6101166004803603604081101561055a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ef6565b610390600480360360a081101561059557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105e257600080fd5b8201836020820111156105f457600080fd5b8035906020019184600183028401116401000000008311171561061657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f31945050505050565b600073ffffffffffffffffffffffffffffffffffffffff83166106c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611960602b913960400191505060405180910390fd5b50600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107db5780601f106107b0576101008083540402835291602001916107db565b820191906000526020600020905b8154815290600101906020018083116107be57829003601f168201915b50505050509050919050565b8151835114610841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611ab86028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119e56025913960400191505060405180910390fd5b6108b561117e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806108fa57506108fa856108f561117e565b610ef6565b61094f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611a0a6032913960400191505060405180910390fd5b600061095961117e565b9050610969818787878787610bad565b60005b8451811015610a9e57600085828151811061098357fe5b60200260200101519050600085838151811061099b57fe5b60200260200101519050610a22816040518060600160405280602a8152602001611a3c602a91396001600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111839092919063ffffffff16565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e811685529252808320939093558a1681522054610a669082611234565b600092835260016020818152604080862073ffffffffffffffffffffffffffffffffffffffff8d16875290915290932055500161096c565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610b4b578181015183820152602001610b33565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610b8a578181015183820152602001610b72565b5050505090500194505050505060405180910390a4610bad8187878787876112af565b505050505050565b60608151835114610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611a8f6029913960400191505060405180910390fd5b6000835167ffffffffffffffff81118015610c2b57600080fd5b50604051908082528060200260200182016040528015610c55578160200160208202803683370190505b50905060005b8451811015610d9357600073ffffffffffffffffffffffffffffffffffffffff16858281518110610c8857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061198b6031913960400191505060405180910390fd5b60016000858381518110610d0d57fe5b602002602001015181526020019081526020016000206000868381518110610d3157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610d8057fe5b6020908102919091010152600101610c5b565b509392505050565b8173ffffffffffffffffffffffffffffffffffffffff16610dba61117e565b73ffffffffffffffffffffffffffffffffffffffff161415610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611a666029913960400191505060405180910390fd5b8060026000610e3461117e565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155610ea361117e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8416610f9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119e56025913960400191505060405180910390fd5b610fa561117e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610fe55750610fe5856108f561117e565b61103a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806119bc6029913960400191505060405180910390fd5b600061104461117e565b9050611064818787611055886115e1565b61105e886115e1565b87610bad565b6110b8836040518060600160405280602a8152602001611a3c602a9139600087815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190611183565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b811685529252808320939093558716815220546110fc9084611234565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610bad818787878787611626565b335b90565b6000818484111561122c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111f15781810151838201526020016111d9565b50505050905090810190601f16801561121e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156112a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6112ce8473ffffffffffffffffffffffffffffffffffffffff16611816565b15610bad578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561138357818101518382015260200161136b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156113c25781810151838201526020016113aa565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156113fe5781810151838201526020016113e6565b50505050905090810190601f16801561142b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561145057600080fd5b505af192505050801561147557506040513d602081101561147057600080fd5b505160015b61153e57611481611822565b8061148c57506114ed565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283518493919283926044019190850190808383600083156111f15781810151838201526020016111d9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119046034913960400191505060405180910390fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806119386028913960400191505060405180910390fd5b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061161557fe5b602090810291909101015292915050565b6116458473ffffffffffffffffffffffffffffffffffffffff16611816565b15610bad578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116fb5781810151838201526020016116e3565b50505050905090810190601f1680156117285780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561174b57600080fd5b505af192505050801561177057506040513d602081101561176b57600080fd5b505160015b61177c57611481611822565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806119386028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561183257611180565b600481823e6308c379a0611846825161181c565b1461185057611180565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d67ffffffffffffffff816024840111818411171561189e5750505050611180565b828401925082519150808211156118b85750505050611180565b503d830160208284010111156118d057505050611180565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212202fdb122250567368b4b2e3d5de3dfb5bbade384bc729443664e918f696250b5564736f6c63430007060033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:992:39", "statements": [ { "nodeType": "YulBlock", "src": "6:3:39", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "71:31:39", "statements": [ { "nodeType": "YulAssignment", "src": "73:27:39", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "89:3:39", "type": "", "value": "224" }, { "name": "value", "nodeType": "YulIdentifier", "src": "94:5:39" } ], "functionName": { "name": "shr", "nodeType": "YulIdentifier", "src": "85:3:39" }, "nodeType": "YulFunctionCall", "src": "85:15:39" }, "variableNames": [ { "name": "newValue", "nodeType": "YulIdentifier", "src": "73:8:39" } ] } ] }, "name": "shift_right_224_unsigned", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", "src": "48:5:39", "type": "" } ], "returnVariables": [ { "name": "newValue", "nodeType": "YulTypedName", "src": "58:8:39", "type": "" } ], "src": "14:88:39" }, { "body": { "nodeType": "YulBlock", "src": "154:836:39", "statements": [ { "body": { "nodeType": "YulBlock", "src": "194:9:39", "statements": [ { "nodeType": "YulLeave", "src": "196:5:39" } ] }, "condition": { "arguments": [ { "arguments": [], "functionName": { "name": "returndatasize", "nodeType": "YulIdentifier", "src": "170:14:39" }, "nodeType": "YulFunctionCall", "src": "170:16:39" }, { "kind": "number", "nodeType": "YulLiteral", "src": "188:4:39", "type": "", "value": "0x44" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "167:2:39" }, "nodeType": "YulFunctionCall", "src": "167:26:39" }, "nodeType": "YulIf", "src": "164:2:39" }, { "expression": { "arguments": [ { "name": "ret", "nodeType": "YulIdentifier", "src": "227:3:39" }, { "name": "ret", "nodeType": "YulIdentifier", "src": "232:3:39" }, { "kind": "number", "nodeType": "YulLiteral", "src": "237:1:39", "type": "", "value": "4" } ], "functionName": { "name": "returndatacopy", "nodeType": "YulIdentifier", "src": "212:14:39" },