@levxdao/zero-money
Version:
World’s first genuine zero-value currency
674 lines (673 loc) • 43.5 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ZeroMoney",
"sourceName": "contracts/ZeroMoney.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_signer",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "signer",
"type": "address"
}
],
"name": "ChangeSigner",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "Claim",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "weiAmount",
"type": "uint256"
}
],
"name": "DividendsDistributed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "blacklisted",
"type": "bool"
}
],
"name": "SetBlacklisted",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Start",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weiAmount",
"type": "uint256"
}
],
"name": "Withdraw",
"type": "event"
},
{
"inputs": [],
"name": "FINAL_ERA",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "HALVING_PERIOD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAGNITUDE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "accumulativeDividendOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "blacklisted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_signer",
"type": "address"
}
],
"name": "changeSigner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "claim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "currentHalvingEra",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bool",
"name": "_blacklisted",
"type": "bool"
}
],
"name": "setBlacklisted",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "signer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "start",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "startedAt",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "withdrawDividend",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "withdrawableDividendOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "withdrawnDividendOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001e8c38038062001e8c83398101604081905262000034916200024c565b604080518082018252600a8152695a65726f204d6f6e657960b01b6020808301918252835180850190945260048452635a45524f60e01b9084015281519192916200008291600391620001a6565b50805162000098906004906020840190620001a6565b505050620000b5620000af6200015060201b60201c565b62000154565b600680546001600160a01b0319166001600160a01b03831690811790915530600090815260086020526040808220805460ff19166001179055517f2c4c2330e655d7c5374379a59a72351868d5364faf6af52488661fa4e344f9489190a26040516001815230907f1419b35ce324d7ecb9c6de0a648dc50d3ea421644bddd98935012f8c4013e8099060200160405180910390a250620002ba565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001b4906200027e565b90600052602060002090601f016020900481019282620001d8576000855562000223565b82601f10620001f357805160ff191683800117855562000223565b8280016001018555821562000223579182015b828111156200022357825182559160200191906001019062000206565b506200023192915062000235565b5090565b5b8082111562000231576000815560010162000236565b6000602082840312156200025f57600080fd5b81516001600160a01b03811681146200027757600080fd5b9392505050565b600181811c908216806200029357607f821691505b602082108103620002b457634e487b7160e01b600052602260045260246000fd5b50919050565b611bc280620002ca6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063aafd847a116100a2578063dbac26e911610071578063dbac26e9146103d4578063dd62ed3e146103f7578063f21f537d14610430578063f2fde38b1461043957600080fd5b8063aafd847a14610388578063ba9b07c3146103b1578063be9a6555146103b9578063d01dd6d2146103c157600080fd5b8063a457c2d7116100de578063a457c2d71461033c578063a8b9d2401461034f578063a9059cbb14610362578063aad2b7231461037557600080fd5b80638da5cb5b1461031b5780638e6bb8741461032c57806395d89b411461033457600080fd5b8063313ce5671161017c5780636a4740021161014b5780636a474002146102d75780636d3036a7146102df57806370a08231146102ea578063715018a61461031357600080fd5b8063313ce5671461029857806339509351146102a75780633adde9c1146102ba57806342966c68146102c457600080fd5b806318160ddd116101b857806318160ddd14610235578063238ac9331461024757806323b872dd1461027257806327ce01471461028557600080fd5b806306fdde03146101df578063095ea7b3146101fd57806309c8d17314610220575b600080fd5b6101e761044c565b6040516101f4919061174d565b60405180910390f35b61021061020b3660046117be565b6104de565b60405190151581526020016101f4565b61023361022e3660046117e8565b6104f8565b005b6002545b6040519081526020016101f4565b60065461025a906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b61021061028036600461182b565b6106ef565b610239610293366004611867565b610713565b604051601281526020016101f4565b6102106102b53660046117be565b61076f565b610239621baf8081565b6102336102d2366004611889565b6107ae565b6102336107f0565b610239600160801b81565b6102396102f8366004611867565b6001600160a01b031660009081526020819052604090205490565b6102336108ab565b6005546001600160a01b031661025a565b610239603c81565b6101e76108e1565b61021061034a3660046117be565b6108f0565b61023961035d366004611867565b610982565b6102106103703660046117be565b6109ae565b610233610383366004611867565b6109bc565b610239610396366004611867565b6001600160a01b03166000908152600c602052604090205490565b610239610a30565b610233610a7a565b6102336103cf3660046118a2565b610ae5565b6102106103e2366004611867565b60086020526000908152604090205460ff1681565b6102396104053660046118de565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61023960075481565b610233610447366004611867565b610b6e565b60606003805461045b90611911565b80601f016020809104026020016040519081016040528092919081815260200182805461048790611911565b80156104d45780601f106104a9576101008083540402835291602001916104d4565b820191906000526020600020905b8154815290600101906020018083116104b757829003601f168201915b5050505050905090565b6000336104ec818585610c09565b60019150505b92915050565b8361053d5760405162461bcd60e51b815260206004820152601060248201526f16915493ce881253959053125117d25160821b60448201526064015b60405180910390fd5b60008481526009602052604090205460ff161561058c5760405162461bcd60e51b815260206004820152600d60248201526c16915493ce8810d31052535151609a1b6044820152606401610534565b600084336040516020016105bc92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60408051601f1981840301815291905280516020909101206006549091506001600160a01b031661064561063d836040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b868686610d2e565b6001600160a01b0316146106905760405162461bcd60e51b815260206004820152601260248201527116915493ce8815539055551213d49256915160721b6044820152606401610534565b6000858152600960205260409020805460ff191660011790556106bb33670de0b6b3a7640000610d56565b604051339086907f15d625b4b35864ffb5bdbb3fc4b62ceb07b3c588af6945a1934ccb822a23975590600090a35050505050565b6000336106fd858285610da2565b610708858585610e34565b506001949350505050565b6001600160a01b0381166000908152600b602090815260408083205491839052822054600160801b916107659161075690600a546107519190611961565b610ee9565b6107609190611980565b610f57565b6104f291906119c1565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906104ec90829086906107a99087906119e3565b610c09565b6107b83382610fa9565b6107c981600a546107519190611961565b336000908152600b6020526040812080549091906107e8908490611980565b909155505050565b60006107fb33610982565b9050600081116108435760405162461bcd60e51b815260206004820152601360248201527216915493ce8816915493d7d112559251115391606a1b6044820152606401610534565b336000908152600c6020526040812080548392906108629084906119e3565b909155506108739050303383610e34565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250565b6005546001600160a01b031633146108d55760405162461bcd60e51b8152600401610534906119fb565b6108df60006110ef565b565b60606004805461045b90611911565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156109755760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610534565b6107088286868403610c09565b6001600160a01b0381166000908152600c60205260408120546109a483610713565b6104f29190611a30565b6000336104ec818585610e34565b6005546001600160a01b031633146109e65760405162461bcd60e51b8152600401610534906119fb565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f2c4c2330e655d7c5374379a59a72351868d5364faf6af52488661fa4e344f94890600090a250565b6000600754600003610a43575060001990565b6000621baf8060075442610a579190611a30565b610a6191906119c1565b905080603c10610a715780610a74565b603c5b91505090565b6005546001600160a01b03163314610aa45760405162461bcd60e51b8152600401610534906119fb565b610ab633610ab160025490565b610d56565b426007556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b6005546001600160a01b03163314610b0f5760405162461bcd60e51b8152600401610534906119fb565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f1419b35ce324d7ecb9c6de0a648dc50d3ea421644bddd98935012f8c4013e809910160405180910390a25050565b6005546001600160a01b03163314610b985760405162461bcd60e51b8152600401610534906119fb565b6001600160a01b038116610bfd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610534565b610c06816110ef565b50565b6001600160a01b038316610c6b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610534565b6001600160a01b038216610ccc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610534565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000806000610d3f87878787611141565b91509150610d4c8161122e565b5095945050505050565b610d6082826113e4565b610d7181600a546107519190611961565b6001600160a01b0383166000908152600b602052604081208054909190610d99908490611a47565b90915550505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610e2e5781811015610e215760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610534565b610e2e8484848403610c09565b50505050565b610e3f8383836114c3565b6000610e5282600a546107519190611961565b6001600160a01b0385166000908152600b6020526040812080549293508392909190610e7f908490611980565b90915550506001600160a01b0383166000908152600b602052604081208054839290610eac908490611a47565b909155505060075415801590610edb57506001600160a01b03841660009081526008602052604090205460ff16155b15610e2e57610e2e82611691565b60006001600160ff1b03821115610f535760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610534565b5090565b600080821215610f535760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610534565b6001600160a01b0382166110095760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610534565b6001600160a01b0382166000908152602081905260409020548181101561107d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610534565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110ac908490611a30565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d21565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156111785750600090506003611225565b8460ff16601b1415801561119057508460ff16601c14155b156111a15750600090506004611225565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156111f5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661121e57600060019250925050611225565b9150600090505b94509492505050565b600081600481111561124257611242611a86565b0361124a5750565b600181600481111561125e5761125e611a86565b036112ab5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610534565b60028160048111156112bf576112bf611a86565b0361130c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610534565b600381600481111561132057611320611a86565b036113785760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610534565b600481600481111561138c5761138c611a86565b03610c065760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610534565b6001600160a01b03821661143a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610534565b806002600082825461144c91906119e3565b90915550506001600160a01b038216600090815260208190526040812080548392906114799084906119e3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383166115275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610534565b6001600160a01b0382166115895760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610534565b6001600160a01b038316600090815260208190526040902054818110156116015760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610534565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906116389084906119e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161168491815260200190565b60405180910390a3610e2e565b6000621baf80600754426116a59190611a30565b6116af91906119c1565b905080603c116116bd575050565b6116c8816002611b80565b6116d290836119c1565b91506116dd60025490565b6116eb600160801b84611961565b6116f591906119c1565b600a600082825461170691906119e3565b9091555061171690503083610d56565b6040518281527f051019b59d3b24249903e46fd05b6def7f293fc3de54eca64b3d32743f27fc8e9060200160405180910390a15050565b600060208083528351808285015260005b8181101561177a5785810183015185820160400152820161175e565b8181111561178c576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146117b957600080fd5b919050565b600080604083850312156117d157600080fd5b6117da836117a2565b946020939093013593505050565b600080600080608085870312156117fe57600080fd5b84359350602085013560ff8116811461181657600080fd5b93969395505050506040820135916060013590565b60008060006060848603121561184057600080fd5b611849846117a2565b9250611857602085016117a2565b9150604084013590509250925092565b60006020828403121561187957600080fd5b611882826117a2565b9392505050565b60006020828403121561189b57600080fd5b5035919050565b600080604083850312156118b557600080fd5b6118be836117a2565b9150602083013580151581146118d357600080fd5b809150509250929050565b600080604083850312156118f157600080fd5b6118fa836117a2565b9150611908602084016117a2565b90509250929050565b600181811c9082168061192557607f821691505b60208210810361194557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561197b5761197b61194b565b500290565b600080821280156001600160ff1b03849003851316156119a2576119a261194b565b600160ff1b83900384128116156119bb576119bb61194b565b50500190565b6000826119de57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156119f6576119f661194b565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082821015611a4257611a4261194b565b500390565b60008083128015600160ff1b850184121615611a6557611a6561194b565b6001600160ff1b0384018313811615611a8057611a8061194b565b50500390565b634e487b7160e01b600052602160045260246000fd5b600181815b80851115611ad7578160001904821115611abd57611abd61194b565b80851615611aca57918102915b93841c9390800290611aa1565b509250929050565b600082611aee575060016104f2565b81611afb575060006104f2565b8160018114611b115760028114611b1b57611b37565b60019150506104f2565b60ff841115611b2c57611b2c61194b565b50506001821b6104f2565b5060208310610133831016604e8410600b8410161715611b5a575081810a6104f2565b611b648383611a9c565b8060001904821115611b7857611b7861194b565b029392505050565b60006118828383611adf56fea2646970667358221220ed154c640d7c9e9852bb5cba216533ec0c938fa5a830852291d8b19022a462b164736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063aafd847a116100a2578063dbac26e911610071578063dbac26e9146103d4578063dd62ed3e146103f7578063f21f537d14610430578063f2fde38b1461043957600080fd5b8063aafd847a14610388578063ba9b07c3146103b1578063be9a6555146103b9578063d01dd6d2146103c157600080fd5b8063a457c2d7116100de578063a457c2d71461033c578063a8b9d2401461034f578063a9059cbb14610362578063aad2b7231461037557600080fd5b80638da5cb5b1461031b5780638e6bb8741461032c57806395d89b411461033457600080fd5b8063313ce5671161017c5780636a4740021161014b5780636a474002146102d75780636d3036a7146102df57806370a08231146102ea578063715018a61461031357600080fd5b8063313ce5671461029857806339509351146102a75780633adde9c1146102ba57806342966c68146102c457600080fd5b806318160ddd116101b857806318160ddd14610235578063238ac9331461024757806323b872dd1461027257806327ce01471461028557600080fd5b806306fdde03146101df578063095ea7b3146101fd57806309c8d17314610220575b600080fd5b6101e761044c565b6040516101f4919061174d565b60405180910390f35b61021061020b3660046117be565b6104de565b60405190151581526020016101f4565b61023361022e3660046117e8565b6104f8565b005b6002545b6040519081526020016101f4565b60065461025a906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b61021061028036600461182b565b6106ef565b610239610293366004611867565b610713565b604051601281526020016101f4565b6102106102b53660046117be565b61076f565b610239621baf8081565b6102336102d2366004611889565b6107ae565b6102336107f0565b610239600160801b81565b6102396102f8366004611867565b6001600160a01b031660009081526020819052604090205490565b6102336108ab565b6005546001600160a01b031661025a565b610239603c81565b6101e76108e1565b61021061034a3660046117be565b6108f0565b61023961035d366004611867565b610982565b6102106103703660046117be565b6109ae565b610233610383366004611867565b6109bc565b610239610396366004611867565b6001600160a01b03166000908152600c602052604090205490565b610239610a30565b610233610a7a565b6102336103cf3660046118a2565b610ae5565b6102106103e2366004611867565b60086020526000908152604090205460ff1681565b6102396104053660046118de565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61023960075481565b610233610447366004611867565b610b6e565b60606003805461045b90611911565b80601f016020809104026020016040519081016040528092919081815260200182805461048790611911565b80156104d45780601f106104a9576101008083540402835291602001916104d4565b820191906000526020600020905b8154815290600101906020018083116104b757829003601f168201915b5050505050905090565b6000336104ec818585610c09565b60019150505b92915050565b8361053d5760405162461bcd60e51b815260206004820152601060248201526f16915493ce881253959053125117d25160821b60448201526064015b60405180910390fd5b60008481526009602052604090205460ff161561058c5760405162461bcd60e51b815260206004820152600d60248201526c16915493ce8810d31052535151609a1b6044820152606401610534565b600084336040516020016105bc92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60408051601f1981840301815291905280516020909101206006549091506001600160a01b031661064561063d836040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b868686610d2e565b6001600160a01b0316146106905760405162461bcd60e51b815260206004820152601260248201527116915493ce8815539055551213d49256915160721b6044820152606401610534565b6000858152600960205260409020805460ff191660011790556106bb33670de0b6b3a7640000610d56565b604051339086907f15d625b4b35864ffb5bdbb3fc4b62ceb07b3c588af6945a1934ccb822a23975590600090a35050505050565b6000336106fd858285610da2565b610708858585610e34565b506001949350505050565b6001600160a01b0381166000908152600b602090815260408083205491839052822054600160801b916107659161075690600a546107519190611961565b610ee9565b6107609190611980565b610f57565b6104f291906119c1565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906104ec90829086906107a99087906119e3565b610c09565b6107b83382610fa9565b6107c981600a546107519190611961565b336000908152600b6020526040812080549091906107e8908490611980565b909155505050565b60006107fb33610982565b9050600081116108435760405162461bcd60e51b815260206004820152601360248201527216915493ce8816915493d7d112559251115391606a1b6044820152606401610534565b336000908152600c6020526040812080548392906108629084906119e3565b909155506108739050303383610e34565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250565b6005546001600160a01b031633146108d55760405162461bcd60e51b8152600401610534906119fb565b6108df60006110ef565b565b60606004805461045b90611911565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156109755760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610534565b6107088286868403610c09565b6001600160a01b0381166000908152600c60205260408120546109a483610713565b6104f29190611a30565b6000336104ec818585610e34565b6005546001600160a01b031633146109e65760405162461bcd60e51b8152600401610534906119fb565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f2c4c2330e655d7c5374379a59a72351868d5364faf6af52488661fa4e344f94890600090a250565b6000600754600003610a43575060001990565b6000621baf8060075442610a579190611a30565b610a6191906119c1565b905080603c10610a715780610a74565b603c5b91505090565b6005546001600160a01b03163314610aa45760405162461bcd60e51b8152600401610534906119fb565b610ab633610ab160025490565b610d56565b426007556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b6005546001600160a01b03163314610b0f5760405162461bcd60e51b8152600401610534906119fb565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f1419b35ce324d7ecb9c6de0a648dc50d3ea421644bddd98935012f8c4013e809910160405180910390a25050565b6005546001600160a01b03163314610b985760405162461bcd60e51b8152600401610534906119fb565b6001600160a01b038116610bfd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610534565b610c06816110ef565b50565b6001600160a01b038316610c6b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610534565b6001600160a01b038216610ccc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610534565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000806000610d3f87878787611141565b91509150610d4c8161122e565b5095945050505050565b610d6082826113e4565b610d7181600a546107519190611961565b6001600160a01b0383166000908152600b602052604081208054909190610d99908490611a47565b90915550505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610e2e5781811015610e215760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610534565b610e2e8484848403610c09565b50505050565b610e3f8383836114c3565b6000610e5282600a546107519190611961565b6001600160a01b0385166000908152600b6020526040812080549293508392909190610e7f908490611980565b90915550506001600160a01b0383166000908152600b602052604081208054839290610eac908490611a47565b909155505060075415801590610edb57506001600160a01b03841660009081526008602052604090205460ff16155b15610e2e57610e2e82611691565b60006001600160ff1b03821115610f535760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610534565b5090565b600080821215610f535760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610534565b6001600160a01b0382166110095760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610534565b6001600160a01b0382166000908152602081905260409020548181101561107d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610534565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110ac908490611a30565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d21565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156111785750600090506003611225565b8460ff16601b1415801561119057508460ff16601c14155b156111a15750600090506004611225565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156111f5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661121e57600060019250925050611225565b9150600090505b94509492505050565b600081600481111561124257611242611a86565b0361124a5750565b600181600481111561125e5761125e611a86565b036112ab5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610534565b60028160048111156112bf576112bf611a86565b0361130c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610534565b600381600481111561132057611320611a86565b036113785760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610534565b600481600481111561138c5761138c611a86565b03610c065760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610534565b6001600160a01b03821661143a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610534565b806002600082825461144c91906119e3565b90915550506001600160a01b038216600090815260208190526040812080548392906114799084906119e3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383166115275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610534565b6001600160a01b0382166115895760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610534565b6001600160a01b038316600090815260208190526040902054818110156116015760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610534565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906116389084906119e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161168491815260200190565b60405180910390a3610e2e565b6000621baf80600754426116a59190611a30565b6116af91906119c1565b905080603c116116bd575050565b6116c8816002611b80565b6116d290836119c1565b91506116dd60025490565b6116eb600160801b84611961565b6116f591906119c1565b600a600082825461170691906119e3565b9091555061171690503083610d56565b6040518281527f051019b59d3b24249903e46fd05b6def7f293fc3de54eca64b3d32743f27fc8e9060200160405180910390a15050565b600060208083528351808285015260005b8181101561177a5785810183015185820160400152820161175e565b8181111561178c576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146117b957600080fd5b919050565b600080604083850312156117d157600080fd5b6117da836117a2565b946020939093013593505050565b600080600080608085870312156117fe57600080fd5b84359350602085013560ff8116811461181657600080fd5b93969395505050506040820135916060013590565b60008060006060848603121561184057600080fd5b611849846117a2565b9250611857602085016117a2565b9150604084013590509250925092565b60006020828403121561187957600080fd5b611882826117a2565b9392505050565b60006020828403121561189b57600080fd5b5035919050565b600080604083850312156118b557600080fd5b6118be836117a2565b9150602083013580151581146118d357600080fd5b809150509250929050565b600080604083850312156118f157600080fd5b6118fa836117a2565b9150611908602084016117a2565b90509250929050565b600181811c9082168061192557607f821691505b60208210810361194557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561197b5761197b61194b565b500290565b600080821280156001600160ff1b03849003851316156119a2576119a261194b565b600160ff1b83900384128116156119bb576119bb61194b565b50500190565b6000826119de57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156119f6576119f661194b565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082821015611a4257611a4261194b565b500390565b60008083128015600160ff1b850184121615611a6557611a6561194b565b6001600160ff1b0384018313811615611a8057611a8061194b565b50500390565b634e487b7160e01b600052602160045260246000fd5b600181815b80851115611ad7578160001904821115611abd57611abd61194b565b80851615611aca57918102915b93841c9390800290611aa1565b509250929050565b600082611aee575060016104f2565b81611afb575060006104f2565b8160018114611b115760028114611b1b57611b37565b60019150506104f2565b60ff841115611b2c57611b2c61194b565b50506001821b6104f2565b5060208310610133831016604e8410600b8410161715611b5a575081810a6104f2565b611b648383611a9c565b8060001904821115611b7857611b7861194b565b029392505050565b60006118828383611adf56fea2646970667358221220ed154c640d7c9e9852bb5cba216533ec0c938fa5a830852291d8b19022a462b164736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}