@ethsub/sol
Version:
ethsub contracts
334 lines • 1.36 MB
JSON
{
"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.6.12+commit.27d51765\"},\"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\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":\"ERC1155\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x24141d2f6b98d4cb77a8936eae8cbaad2e261d9062bdc08036096f4550092501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b710eb003944777135f027500a5a57b479fe857849f5f467c1ef9687401e3c95\",\"dweb:/ipfs/QmcELzi6KRzAs3DXwxdsoKWRJ13KSeipKQsJgD3unctdZM\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x3fef0eeb248c7109ce0f9adce59543d8b4141b78382d3ec34db33dabdbbc13f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f704e6539b9db8b7bf08b8a1c1cb2b44519129b5659211ed5af8f2aa5f264a2f\",\"dweb:/ipfs/QmYRPbn7p8oTEKNUrd7YMMA2J8W6vUeFmCcCMGvyWdZ6UB\"]},\"@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\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b506040516200182e3803806200182e833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052506200010191506301ffc9a760e01b905062000137565b6200010c81620001bc565b6200011e636cdb3d1360e11b62000137565b620001306303a24d0760e21b62000137565b5062000271565b6001600160e01b0319808216141562000197576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001d1906003906020840190620001d5565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021857805160ff191683800117855562000248565b8280016001018555821562000248579182015b82811115620002485782518255916020019190600101906200022b565b50620002569291506200025a565b5090565b5b808211156200025657600081556001016200025b565b6115ad80620002816000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461035a578063a22cb465146104cd578063e985e9c5146104fb578063f242432a1461052957610087565b8062fdd58e1461008c57806301ffc9a7146100ca5780630e89341c146101055780632eb2c2d614610197575b600080fd5b6100b8600480360360408110156100a257600080fd5b506001600160a01b0381351690602001356105f2565b60408051918252519081900360200190f35b6100f1600480360360208110156100e057600080fd5b50356001600160e01b031916610661565b604080519115158252519081900360200190f35b6101226004803603602081101561011b57600080fd5b5035610680565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610358600480360360a08110156101ad57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101e057600080fd5b8201836020820111156101f257600080fd5b803590602001918460208302840111600160201b8311171561021357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026257600080fd5b82018360208201111561027457600080fd5b803590602001918460208302840111600160201b8311171561029557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102e457600080fd5b8201836020820111156102f657600080fd5b803590602001918460018302840111600160201b8311171561031757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610718945050505050565b005b61047d6004803603604081101561037057600080fd5b810190602081018135600160201b81111561038a57600080fd5b82018360208201111561039c57600080fd5b803590602001918460208302840111600160201b831117156103bd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561040c57600080fd5b82018360208201111561041e57600080fd5b803590602001918460208302840111600160201b8311171561043f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a16945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104b95781810151838201526020016104a1565b505050509050019250505060405180910390f35b610358600480360360408110156104e357600080fd5b506001600160a01b0381351690602001351515610b02565b6100f16004803603604081101561051157600080fd5b506001600160a01b0381358116916020013516610bf1565b610358600480360360a081101561053f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561057e57600080fd5b82018360208201111561059057600080fd5b803590602001918460018302840111600160201b831117156105b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c1f945050505050565b60006001600160a01b0383166106395760405162461bcd60e51b815260040180806020018281038252602b815260200180611429602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561070c5780601f106106e15761010080835404028352916020019161070c565b820191906000526020600020905b8154815290600101906020018083116106ef57829003601f168201915b50505050509050919050565b81518351146107585760405162461bcd60e51b81526004018080602001828103825260288152602001806115506028913960400191505060405180910390fd5b6001600160a01b03841661079d5760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b6107a5610dea565b6001600160a01b0316856001600160a01b031614806107d057506107d0856107cb610dea565b610bf1565b61080b5760405162461bcd60e51b81526004018080602001828103825260328152602001806114a26032913960400191505060405180910390fd5b6000610815610dea565b9050610825818787878787610a0e565b60005b845181101561092657600085828151811061083f57fe5b60200260200101519050600085838151811061085757fe5b602002602001015190506108c4816040518060600160405280602a81526020016114d4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054610def9092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a16815220546108fb9082610e86565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610828565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109ac578181015183820152602001610994565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109eb5781810151838201526020016109d3565b5050505090500194505050505060405180910390a4610a0e818787878787610ee7565b505050505050565b60608151835114610a585760405162461bcd60e51b81526004018080602001828103825260298152602001806115276029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610a7257600080fd5b50604051908082528060200260200182016040528015610a9c578160200160208202803683370190505b50905060005b8451811015610afa57610adb858281518110610aba57fe5b6020026020010151858381518110610ace57fe5b60200260200101516105f2565b828281518110610ae757fe5b6020908102919091010152600101610aa2565b509392505050565b816001600160a01b0316610b14610dea565b6001600160a01b03161415610b5a5760405162461bcd60e51b81526004018080602001828103825260298152602001806114fe6029913960400191505060405180910390fd5b8060026000610b67610dea565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610bab610dea565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610c645760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b610c6c610dea565b6001600160a01b0316856001600160a01b03161480610c925750610c92856107cb610dea565b610ccd5760405162461bcd60e51b81526004018080602001828103825260298152602001806114546029913960400191505060405180910390fd5b6000610cd7610dea565b9050610cf7818787610ce888611166565b610cf188611166565b87610a0e565b610d3e836040518060600160405280602a81526020016114d4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190610def565b60008581526001602090815260408083206001600160a01b038b81168552925280832093909355871681522054610d759084610e86565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610a0e8187878787876111aa565b335b90565b60008184841115610e7e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e43578181015183820152602001610e2b565b50505050905090810190601f168015610e705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ee0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610ef9846001600160a01b031661131b565b15610a0e57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610f87578181015183820152602001610f6f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610fc6578181015183820152602001610fae565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611002578181015183820152602001610fea565b50505050905090810190601f16801561102f5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561105457600080fd5b505af192505050801561107957506040513d602081101561107457600080fd5b505160015b61110e57611085611327565b8061109057506110d7565b60405162461bcd60e51b8152602060048201818152835160248401528351849391928392604401919085019080838360008315610e43578181015183820152602001610e2b565b60405162461bcd60e51b81526004018080602001828103825260348152602001806113cd6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b50505050505050565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061119957fe5b602090810291909101015292915050565b6111bc846001600160a01b031661131b565b15610a0e57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561124b578181015183820152602001611233565b50505050905090810190601f1680156112785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112c057506040513d60208110156112bb57600080fd5b505160015b6112cc57611085611327565b6001600160e01b0319811663f23a6e6160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561133757610dec565b600481823e6308c379a061134b8251611321565b1461135557610dec565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156113855750505050610dec565b8284019250825191508082111561139f5750505050610dec565b503d830160208284010111156113b757505050610dec565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212209f68f1f423f8203ed19a867b53896e31477b10d7b0719535eeed1b1c4e6c7f8464736f6c634300060c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461035a578063a22cb465146104cd578063e985e9c5146104fb578063f242432a1461052957610087565b8062fdd58e1461008c57806301ffc9a7146100ca5780630e89341c146101055780632eb2c2d614610197575b600080fd5b6100b8600480360360408110156100a257600080fd5b506001600160a01b0381351690602001356105f2565b60408051918252519081900360200190f35b6100f1600480360360208110156100e057600080fd5b50356001600160e01b031916610661565b604080519115158252519081900360200190f35b6101226004803603602081101561011b57600080fd5b5035610680565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610358600480360360a08110156101ad57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101e057600080fd5b8201836020820111156101f257600080fd5b803590602001918460208302840111600160201b8311171561021357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026257600080fd5b82018360208201111561027457600080fd5b803590602001918460208302840111600160201b8311171561029557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102e457600080fd5b8201836020820111156102f657600080fd5b803590602001918460018302840111600160201b8311171561031757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610718945050505050565b005b61047d6004803603604081101561037057600080fd5b810190602081018135600160201b81111561038a57600080fd5b82018360208201111561039c57600080fd5b803590602001918460208302840111600160201b831117156103bd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561040c57600080fd5b82018360208201111561041e57600080fd5b803590602001918460208302840111600160201b8311171561043f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a16945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104b95781810151838201526020016104a1565b505050509050019250505060405180910390f35b610358600480360360408110156104e357600080fd5b506001600160a01b0381351690602001351515610b02565b6100f16004803603604081101561051157600080fd5b506001600160a01b0381358116916020013516610bf1565b610358600480360360a081101561053f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561057e57600080fd5b82018360208201111561059057600080fd5b803590602001918460018302840111600160201b831117156105b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c1f945050505050565b60006001600160a01b0383166106395760405162461bcd60e51b815260040180806020018281038252602b815260200180611429602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561070c5780601f106106e15761010080835404028352916020019161070c565b820191906000526020600020905b8154815290600101906020018083116106ef57829003601f168201915b50505050509050919050565b81518351146107585760405162461bcd60e51b81526004018080602001828103825260288152602001806115506028913960400191505060405180910390fd5b6001600160a01b03841661079d5760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b6107a5610dea565b6001600160a01b0316856001600160a01b031614806107d057506107d0856107cb610dea565b610bf1565b61080b5760405162461bcd60e51b81526004018080602001828103825260328152602001806114a26032913960400191505060405180910390fd5b6000610815610dea565b9050610825818787878787610a0e565b60005b845181101561092657600085828151811061083f57fe5b60200260200101519050600085838151811061085757fe5b602002602001015190506108c4816040518060600160405280602a81526020016114d4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054610def9092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a16815220546108fb9082610e86565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610828565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109ac578181015183820152602001610994565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109eb5781810151838201526020016109d3565b5050505090500194505050505060405180910390a4610a0e818787878787610ee7565b505050505050565b60608151835114610a585760405162461bcd60e51b81526004018080602001828103825260298152602001806115276029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610a7257600080fd5b50604051908082528060200260200182016040528015610a9c578160200160208202803683370190505b50905060005b8451811015610afa57610adb858281518110610aba57fe5b6020026020010151858381518110610ace57fe5b60200260200101516105f2565b828281518110610ae757fe5b6020908102919091010152600101610aa2565b509392505050565b816001600160a01b0316610b14610dea565b6001600160a01b03161415610b5a5760405162461bcd60e51b81526004018080602001828103825260298152602001806114fe6029913960400191505060405180910390fd5b8060026000610b67610dea565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610bab610dea565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610c645760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b610c6c610dea565b6001600160a01b0316856001600160a01b03161480610c925750610c92856107cb610dea565b610ccd5760405162461bcd60e51b81526004018080602001828103825260298152602001806114546029913960400191505060405180910390fd5b6000610cd7610dea565b9050610cf7818787610ce888611166565b610cf188611166565b87610a0e565b610d3e836040518060600160405280602a81526020016114d4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190610def565b60008581526001602090815260408083206001600160a01b038b81168552925280832093909355871681522054610d759084610e86565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610a0e8187878787876111aa565b335b90565b60008184841115610e7e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e43578181015183820152602001610e2b565b50505050905090810190601f168015610e705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ee0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610ef9846001600160a01b031661131b565b15610a0e57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610f87578181015183820152602001610f6f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610fc6578181015183820152602001610fae565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611002578181015183820152602001610fea565b50505050905090810190601f16801561102f5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561105457600080fd5b505af192505050801561107957506040513d602081101561107457600080fd5b505160015b61110e57611085611327565b8061109057506110d7565b60405162461bcd60e51b8152602060048201818152835160248401528351849391928392604401919085019080838360008315610e43578181015183820152602001610e2b565b60405162461bcd60e51b81526004018080602001828103825260348152602001806113cd6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b50505050505050565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061119957fe5b602090810291909101015292915050565b6111bc846001600160a01b031661131b565b15610a0e57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561124b578181015183820152602001611233565b50505050905090810190601f1680156112785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112c057506040513d60208110156112bb57600080fd5b505160015b6112cc57611085611327565b6001600160e01b0319811663f23a6e6160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561133757610dec565b600481823e6308c379a061134b8251611321565b1461135557610dec565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156113855750505050610dec565b8284019250825191508082111561139f5750505050610dec565b503d830160208284010111156113b757505050610dec565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212209f68f1f423f8203ed19a867b53896e31477b10d7b0719535eeed1b1c4e6c7f8464736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "522:13697:8:-:0;;;1976:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1976:354:8;;;;;;;;;;-1:-1:-1;1976:354:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1976:354:8;;-1:-1:-1;768:40:2;;-1:-1:-1;;;;787:20:2;-1:-1:-1;768:18:2;:40::i;:::-;2026:13:8;2034:4;2026:7;:13::i;:::-;2128:41;-1:-1:-1;;;2128:18:8;:41::i;:::-;2269:54;-1:-1:-1;;;2269:18:8;:54::i;:::-;1976:354;522:13697;;1507:198:2;-1:-1:-1;;;;;;1590:25:2;;;;;1582:66;;;;;-1:-1:-1;;;1582:66:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1658:33:2;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1658:40:2;1694:4;1658:40;;;1507:198::o;7541:86:8:-;7607:13;;;;:4;;:13;;;;;:::i;:::-;;7541:86;:::o;522:13697::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;522:13697:8;;;-1:-1:-1;522:13697:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "522:13697:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:228;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2976:228:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;965:148:2;;;;;;;;;;;;;;;;-1:-1:-1;965:148:2;-1:-1:-1;;;;;;965:148:2;;:::i;:::-;;;;;;;;;;;;;;;;;;2729:105:8;;;;;;;;;;;;;;;;-1:-1:-1;2729:105:8;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5534:1184;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5534:1184:8;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:8;;;;;;;;-1:-1:-1;5534:1184:8;;-1:-1:-1;;;;;5534:1184:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:8;;;;;;;;-1:-1:-1;5534:1184:8;;-1:-1:-1;;;;;5534:1184:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:8;;-1:-1:-1;5534:1184:8;;-1:-1:-1;;;;;5534:1184:8:i;:::-;;3361:530;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3361:530:8;;;;;;;;-1:-1:-1;3361:530:8;;-1:-1:-1;;;;;3361:530:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3361:530:8;;-1:-1:-1;3361:530:8;;-1:-1:-1;;;;;3361:530:8:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3959:306;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3959:306:8;;;;;;;;;;:::i;4332:166::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4332:166:8;;;;;;;;;;:::i;4565:897::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4565:897:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4565:897:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4565:897:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4565:897:8;;-1:-1:-1;4565:897:8;;-1:-1:-1;;;;;4565:897:8:i;2976:228::-;3062:7;-1:-1:-1;;;;;3089:21:8;;3081:77;;;;-1:-1:-1;;;3081:77:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3175:13:8;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3175:22:8;;;;;;;;;;;;2976:228::o;965:148:2:-;-1:-1:-1;;;;;;1073:33:2;1050:4;1073:33;;;;;;;;;;;;;;965:148::o;2729:105:8:-;2823:4;2816:11;;;;;;;;-1:-1:-1;;2816:11:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:13;;2816:11;;2823:4;;2816:11;;2823:4;2816:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2729:105;;;:::o;5534:1184::-;5788:7;:14;5774:3;:10;:28;5766:81;;;;-1:-1:-1;;;5766:81:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5865:16:8;;5857:66;;;;-1:-1:-1;;;5857:66:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5962:12;:10;:12::i;:::-;-1:-1:-1;;;;;5954:20:8;:4;-1:-1:-1;;;;;5954:20:8;;:60;;;;5978:36;5995:4;6001:12;:10;:12::i;:::-;5978:16;:36::i;:::-;5933:157;;;;-1:-1:-1;;;5933:157:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6101:16;6120:12;:10;:12::i;:::-;6101:31;;6143:60;6164:8;6174:4;6180:2;6184:3;6189:7;6198:4;6143:20;:60::i;:::-;6219:9;6214:349;6238:3;:10;6234:1;:14;6214:349;;;6269:10;6282:3;6286:1;6282:6;;;;;;;;;;;;;;6269:19;;6302:14;6319:7;6327:1;6319:10;;;;;;;;;;;;;;6302:27;;6366:123;6407:6;6366:123;;;;;;;;;;;;;;;;;:9;:13;6376:2;6366:13;;;;;;;;;;;:19;6380:4;-1:-1:-1;;;;;6366:19:8;-1:-1:-1;;;;;6366:19:8;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;6344:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6344:19:8;;;;;;;;;;:145;;;;6523:17;;;;;;:29;;6545:6;6523:21;:29::i;:::-;6503:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6503:17:8;;;;;;;;;;:49;-1:-1:-1;6250:3:8;6214:349;;;;6608:2;-1:-1:-1;;;;;6578:47:8;6602:4;-1:-1:-1;;;;;6578:47:8;6592:8;-1:-1:-1;;;;;6578:47:8;;6612:3;6617:7;6578:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6636:75;6672:8;6682:4;6688:2;6692:3;6697:7;6706:4;6636:35;:75::i;:::-;5534:1184;;;;;;:::o;3361:530::-;3534:16;3593:3;:10;3574:8;:15;:29;3566:83;;;;-1:-1:-1;;;3566:83:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3660:30;3707:8;:15;3693:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3693:30:8;;3660:63;;3739:9;3734:120;3758:8;:15;3754:1;:19;3734:120;;;3813:30;3823:8;3832:1;3823:11;;;;;;;;;;;;;;3836:3;3840:1;3836:6;;;;;;;;;;;;;;3813:9;:30::i;:::-;3794:13;3808:1;3794:16;;;;;;;;;;;;;;;;;:49;3775:3;;3734:120;;;-1:-1:-1;3871:13:8;3361:530;-1:-1:-1;;;3361:530:8:o;3959:306::-;4077:8;-1:-1:-1;;;;;4061:24:8;:12;:10;:12::i;:::-;-1:-1:-1;;;;;4061:24:8;;;4053:78;;;;-1:-1:-1;;;4053:78:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4187:8;4142:18;:32;4161:12;:10;:12::i;:::-;-1:-1:-1;;;;;4142:32:8;;;;;;;;;;;;;;;;;-1:-1:-1;4142:32:8;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;4142:53:8;;;;;;;;;;;4225:12;:10;:12::i;:::-;-1:-1:-1;;;;;4210:48:8;;4249:8;4210:48;;;;;;;;;;;;;;;;;;;;3959:306;;:::o;4332:166::-;-1:-1:-1;;;;;4454:27:8;;;4431:4;4454:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;4332:166::o;4565:897::-;-1:-1:-1;;;;;4780:16:8;;4772:66;;;;-1:-1:-1;;;4772:66:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:12;:10;:12::i;:::-;-1:-1:-1;;;;;4869:20:8;:4;-1:-1:-1;;;;;4869:20:8;;:60;;;;4893:36;4910:4;4916:12;:10;:12::i;4893:36::-;4848:148;;;;-1:-1:-1;;;4848:148:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5007:16;5026:12;:10;:12::i;:::-;5007:31;;5049:96;5070:8;5080:4;5086:2;5090:21;5108:2;5090:17;:21::i;:::-;5113:25;5131:6;5113:17;:25::i;:::-;5140:4;5049:20;:96::i;:::-;5178:77;5202:6;5178:77;;;;;;;;;;;;;;;;;:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5178:19:8;;;;;;;;;;;:77;:23;:77::i;:::-;5156:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5156:19:8;;;;;;;;;;:99;;;;5285:17;;;;;;:29;;5307:6;5285:21;:29::i;:::-;5265:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5265:17:8;;;;;;;;;;;;;:49;;;;5330:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5387:68;5418:8;5428:4;5434:2;5438;5442:6;5450:4;5387:30;:68::i;598:104:28:-;685:10;598:104;;:::o;5432:163:5:-;5518:7;5553:12;5545:6;;;;5537:29;;;;-1:-1:-1;;;5537:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:5;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:5:o;13240:778:8:-;13484:15;:2;-1:-1:-1;;;;;13484:13:8;;:15::i;:::-;13480:532;;;13536:2;-1:-1:-1;;;;;13519:43:8;;13563:8;13573:4;13579:3;13584:7;13593:4;13519:79;;;;;;;;;;;;;-1:-1:-1;;;;;13519:79:8;;;;;;-1:-1:-1;;;;;13519:79:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13519:79:8;;;13515:487;;;;:::i;:::-;;;;;;;;13871:14;;-1:-1:-1;;;13871:14:8;;;;;;;;;;;;;;;;;13878:6;;13871:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13515:487;13925:62;;-1:-1:-1;;;13925:62:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13515:487;-1:-1:-1;;;;;;13647:64:8;;-1:-1:-1;;;13647:64:8;13643:161;;13735:50;;-1:-1:-1;;;13735:50:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13643:161;13599:219;13240:778;;;;;;:::o;14024:193::-;14143:16;;;14157:1;14143:16;;;;;;;;;14090;;;;14143;;;;;;;;;;;;-1:-1:-1;14143:16:8;14118:41;;14180:7;14169:5;14175:1;14169:8;;;;;;;;;;;;;;;;;:18;14205:5;14024:193;-1:-1:-1;;14024:193:8:o;12493:741::-;12712:15;:2;-1:-1:-1;;;;;12712:13:8;;:15::i;:::-;12708:520;;;12764:2;-1:-1:-1;;;;;12747:38:8;;12786:8;12796:4;12802:2;12806:6;12814:4;12747:72;;;;;;;;;;;;;-1:-1:-1;;;;;12747:72:8;;;;;;-1:-1:-1;;;;;12747:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12747:72:8;;;12743:475;;;;:::i;:::-;-1:-1:-1;;;;;;12868:59:8;;-1:-1:-1;;;12868:59:8;12864:156;;12951:50;;-1:-1:-1;;;12951:50:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:413:27;1086:20;1124:8;;;726:413::o;110:106:-1:-;195:3;191:15;;163:53::o;224:739::-;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;-1:-1;;318:23;414:10;357:34;-1:-1;382:8;357:34;:::i;:::-;406:19;396:2;;429:5;;396:2;460;454:9;496:16;-1:-1;;492:24;339:1;454:9;468:49;543:4;537:11;624:16;576:18;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;;553:2;693:6;687:4;683:17;672:28;;725:3;719:10;705:24;;576:18;740:6;737:30;734:2;;;770:5;;;;;;734:2;;847:16;841:4;837:27;807:4;814:6;802:3;794:27;;829:36;826:2;;;868:5;;;;;826:2;89:7;73:14;-1:-1;;69:28;892:50;;807:4;892:50;460:2;881:62;900:3;-1:-1;;267:696;:::o",
"source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"./IERC1155.sol\";\nimport \"./IERC1155MetadataURI.sol\";\nimport \"./IERC1155Receiver.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../introspection/ERC165.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n *\n * @dev Implementation of the basic standard multi-token.\n * See https://eips.ethereum.org/EIPS/eip-1155\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\n *\n * _Available since v3.1._\n */\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\n using SafeMath for uint256;\n using Address for address;\n\n // Mapping from token ID to account balances\n mapping (uint256 => mapping(address => uint256)) private _balances;\n\n // Mapping from account to operator approvals\n mapping (address => mapping(address => bool)) private _operatorApprovals;\n\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\n string private _uri;\n\n /*\n * bytes4(keccak256('balanceOf(add