UNPKG

@dnextco/tokenboost-solidity-erc223token

Version:

Solidity contracts for TokenBoost (ERC223Token)

1,013 lines 158 kB
{ "contractName": "RenderableERC223Token", "abi": [ { "constant": true, "inputs": [ { "name": "_interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "mintingFinished", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "spender", "type": "address" }, { "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_operator", "type": "address" }, { "name": "_role", "type": "string" } ], "name": "checkRole", "outputs": [], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "activate", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "InterfaceId_Token", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "activated", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "InterfaceId_ERC165", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "maxMintable", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_operator", "type": "address" }, { "name": "_role", "type": "string" } ], "name": "hasRole", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_maxMintable", "type": "uint256" } ], "name": "setMaxMintable", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_minter", "type": "address" } ], "name": "removeMinter", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "pausable", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "initialSupply", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "unpause", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_value", "type": "uint256" } ], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "mintable", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "paused", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_spender", "type": "address" }, { "name": "_subtractedValue", "type": "uint256" } ], "name": "decreaseApproval", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "template", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "renounceOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "finishMinting", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "pause", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "renderer", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "ROLE_MINTER", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_minter", "type": "address" } ], "name": "addMinter", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "burnable", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" }, { "name": "_data", "type": "bytes" } ], "name": "transfer", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_spender", "type": "address" }, { "name": "_addedValue", "type": "uint256" } ], "name": "increaseApproval", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" }, { "name": "_spender", "type": "address" } ], "name": "allowance", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_name", "type": "string" }, { "name": "_symbol", "type": "string" }, { "name": "_decimals", "type": "uint8" }, { "name": "_initialSupply", "type": "uint256" }, { "name": "_mintable", "type": "bool" }, { "name": "_burnable", "type": "bool" }, { "name": "_pausable", "type": "bool" } ], "name": "update", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" }, { "name": "_data", "type": "bytes" }, { "name": "_custom_fallback", "type": "string" } ], "name": "transfer", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "InterfaceId_ERC223Token", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "InterfaceId_Contract", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "_owner", "type": "address" }, { "name": "_name", "type": "string" }, { "name": "_symbol", "type": "string" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "operator", "type": "address" }, { "indexed": false, "name": "role", "type": "string" } ], "name": "RoleAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "operator", "type": "address" }, { "indexed": false, "name": "role", "type": "string" } ], "name": "RoleRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MintFinished", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "burner", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Pause", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Unpause", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "previousOwner", "type": "address" } ], "name": "OwnershipRenounced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "previousOwner", "type": "address" }, { "indexed": true, "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "spender", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" }, { "indexed": false, "name": "data", "type": "bytes" } ], "name": "Transfer", "type": "event" }, { "constant": true, "inputs": [ { "name": "_locale", "type": "string" } ], "name": "adminWidgets", "outputs": [ { "name": "jsonObject", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_locale", "type": "string" } ], "name": "userWidgets", "outputs": [ { "name": "jsonObject", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_locale", "type": "string" } ], "name": "inputs", "outputs": [ { "name": "jsonArray", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040526008805461ffff19169055600a805460ff191660121790553480156200002957600080fd5b50604051620029c5380380620029c5833981016040908152815160208301519183015160038054600160a060020a031916331790559092918201910182828282828282620000a07f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b600160a060020a0381161515620000b657600080fd5b6005805433600160a060020a03199182161790915560038054909116600160a060020a038316179055620001137f6125ede500000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b5081516200012990600690602085019062000226565b5080516200013f90600790602084019062000226565b50620001747ffd155c6700000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b50620001ad91507fd0c381c9000000000000000000000000000000000000000000000000000000009050640100000000620001b9810204565b505050505050620002cb565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e957600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600460205260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026957805160ff191683800117855562000299565b8280016001018555821562000299579182015b82811115620002995782518255916020019190600101906200027c565b50620002a7929150620002ab565b5090565b620002c891905b80821115620002a75760008155600101620002b2565b90565b6126ea80620002db6000396000f3006080604052600436106102215763ffffffff60e060020a60003504166301bd3411811461022657806301ffc9a7146102f457806305d2035b1461033f57806306fdde0314610354578063095ea7b3146103695780630988ca8c1461038d5780630f15f4c0146103f6578063172d02bd1461040b57806318160ddd14610452578063186601ca1461047957806319fa8f501461048e5780632154dc39146104a3578063217fe6c6146104b857806323b872dd1461051f57806325d387b5146105495780633092afd514610561578063313ce5671461058257806336775847146105ad578063378dc3dc146105c25780633f4ba83a146105d757806340c10f19146105ec57806342966c68146106105780634bf365df146106285780635c975abb1461063d57806366188463146106525780636f2ddd931461067657806370a08231146106a7578063715018a6146106c85780637d64bcb4146106dd5780638456cb59146106f25780638ada6b0f146107075780638da5cb5b1461071c578063908ba6481461073157806392afc33a1461078a57806395d89b411461079f578063983b2d56146107b4578063a07c7ce4146107d5578063a3a8fd2c146107ea578063a9059cbb14610843578063be45fd6214610867578063d73dd623146108d0578063dd62ed3e146108f4578063f2226de61461091b578063f2fde38b146109d2578063f6368f8a146109f3578063fb499abc14610a9a578063fbf964eb14610aaf575b600080fd5b34801561023257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f943694929360249392840191908190840183828082843750949750610ac49650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b95781810151838201526020016102a1565b50505050905090810190601f1680156102e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030057600080fd5b5061032b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610c2d565b604080519115158252519081900360200190f35b34801561034b57600080fd5b5061032b610c61565b34801561036057600080fd5b5061027f610c6f565b34801561037557600080fd5b5061032b600160a060020a0360043516602435610cfd565b34801561039957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103f4958335600160a060020a0316953695604494919390910191908190840183828082843750949750610d299650505050505050565b005b34801561040257600080fd5b5061032b610d97565b34801561041757600080fd5b50610420610de2565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561045e57600080fd5b50610467610e06565b60408051918252519081900360200190f35b34801561048557600080fd5b5061032b610e0c565b34801561049a57600080fd5b50610420610e1c565b3480156104af57600080fd5b50610467610e40565b3480156104c457600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261032b958335600160a060020a0316953695604494919390910191908190840183828082843750949750610e469650505050505050565b34801561052b57600080fd5b5061032b600160a060020a0360043581169060243516604435610eb2565b34801561055557600080fd5b506103f4600435610ee0565b34801561056d57600080fd5b506103f4600160a060020a0360043516610f13565b34801561058e57600080fd5b50610597610f5a565b6040805160ff9092168252519081900360200190f35b3480156105b957600080fd5b5061032b610f63565b3480156105ce57600080fd5b50610467610f71565b3480156105e357600080fd5b506103f4610f77565b3480156105f857600080fd5b5061032b600160a060020a0360043516602435610fd4565b34801561061c57600080fd5b506103f4600435611036565b34801561063457600080fd5b5061032b611068565b34801561064957600080fd5b5061032b611071565b34801561065e57600080fd5b5061032b600160a060020a036004351660243561107a565b34801561068257600080fd5b5061068b611097565b60408051600160a060020a039092168252519081900360200190f35b3480156106b357600080fd5b50610467600160a060020a03600435166110a6565b3480156106d457600080fd5b506103f46110c1565b3480156106e957600080fd5b5061032b61112f565b3480156106fe57600080fd5b506103f461119c565b34801561071357600080fd5b5061068b6111d4565b34801561072857600080fd5b5061068b6111ec565b34801561073d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f9436949293602493928401919081908401838280828437509497506111fb9650505050505050565b34801561079657600080fd5b5061027f611288565b3480156107ab57600080fd5b5061027f6112ad565b3480156107c057600080fd5b506103f4600160a060020a0360043516611308565b3480156107e157600080fd5b5061032b61134c565b3480156107f657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f9436949293602493928401919081908401838280828437509497506113559650505050505050565b34801561084f57600080fd5b5061032b600160a060020a03600435166024356113e2565b34801561087357600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261032b948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506114079650505050505050565b3480156108dc57600080fd5b5061032b600160a060020a036004351660243561142d565b34801561090057600080fd5b50610467600160a060020a036004358116906024351661144a565b34801561092757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103f494369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff85351695505050602083013592604081013515159250606081013515159150608001351515611475565b3480156109de57600080fd5b506103f4600160a060020a0360043516611518565b3480156109ff57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261032b948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506115389650505050505050565b348015610aa657600080fd5b50610420611568565b348015610abb57600080fd5b5061042061158c565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363bf3bed549387939092918291606490910190602086019080838360005b83811015610b52578181015183820152602001610b3a565b50505050905090810190601f168015610b7f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610b9f57600080fd5b505af1158015610bb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bdc57600080fd5b810190808051640100000000811115610bf457600080fd5b82016020810184811115610c0757600080fd5b8151640100000000811182820187101715610c2157600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b600854610100900460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf55780601f10610cca57610100808354040283529160200191610cf5565b820191906000526020600020905b815481529060010190602001808311610cd857829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610d1857600080fd5b610d2283836115b0565b9392505050565b610d93826009836040518082805190602001908083835b60208310610d5f5780518252601f199092019160209182019101610d40565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506115cd565b5050565b60055460009060a060020a900460ff1615610db157600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610ddc6115e2565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600d5481565b6000610d22836009846040518082805190602001908083835b60208310610e7e5780518252601f199092019160209182019101610e5f565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611604565b60055460009060a060020a900460ff161515610ecd57600080fd5b610ed8848484611623565b949350505050565b600354600160a060020a03163314610ef757600080fd5b60055460a060020a900460ff1615610f0e57600080fd5b600d55565b600354600160a060020a03163314610f2a57600080fd5b610f578160408051908101604052806006815260200160008051602061269f833981519152815250611641565b50565b600a5460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610f8e57600080fd5b60085460ff161515610f9f57600080fd5b6008805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460009060ff161515610fe857600080fd5b60055460a060020a900460ff16151561100057600080fd5b6000600d54111561102c57600d54600154611021908463ffffffff61175216565b111561102c57600080fd5b610d228383611765565b600e5460ff16151561104757600080fd5b60055460a060020a900460ff16151561105f57600080fd5b610f5781611882565b600c5460ff1681565b60085460ff1681565b60085460009060ff161561108d57600080fd5b610d22838361188c565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031633146110d857600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a0316331461114957600080fd5b600854610100900460ff161561115e57600080fd5b6008805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff1615156111b257600080fd5b60055460a060020a900460ff1615156111ca57600080fd5b6111d261197d565b565b735f455243323233546f6b656e52656e646572657281565b600354600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363e77cee3d93879390929182916064909101906020860190808383600083811015610b52578181015183820152602001610b3a565b604080518082019091526006815260008051602061269f833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf55780601f10610cca57610100808354040283529160200191610cf5565b600354600160a060020a0316331461131f57600080fd5b610f578160408051908101604052806006815260200160008051602061269f8339815191528152506119dc565b600e5460ff1681565b604080517fe9499555000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363e949955593879390929182916064909101906020860190808383600083811015610b52578181015183820152602001610b3a565b60055460009060a060020a900460ff1615156113fd57600080fd5b610d228383611aae565b60055460009060a060020a900460ff16151561142257600080fd5b610ed8848484611acb565b60085460009060ff161561144057600080fd5b610d228383611ae9565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a0316331461148c57600080fd5b60055460a060020a900460ff16156114a357600080fd5b86516114b69060069060208a0190612606565b5085516114ca906007906020890190612606565b50600a805460ff1990811660ff97909716969096179055600b93909355600c8054851692151592909217909155600e80549093169015151761ff001916610100911515919091021790555050565b600354600160a060020a0316331461152f57600080fd5b610f5781611b82565b60055460009060a060020a900460ff16151561155357600080fd5b61155f85858585611c00565b95945050505050565b7fd0c381c90000000000000000000000000000000000000000000000000000000081565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b60085460009060ff16156115c357600080fd5b610d228383611c1f565b6115d78282611604565b1515610d9357600080fd5b600354600090600160a060020a031633146115fc57600080fd5b610ddc611c85565b600160a060020a03166000908152602091909152604090205460ff1690565b60085460009060ff161561163657600080fd5b610ed8848484611cae565b6116ab826009836040518082805190602001908083835b602083106116775780518252601f199092019160209182019101611658565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611e23565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156117145781810151838201526020016116fc565b50505050905090810190601f1680156117415780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b8181018281101561175f57fe5b92915050565b60006117943360408051908101604052806006815260200160008051602061269f833981519152815250610d29565b600854610100900460ff16156117a957600080fd5b6001546117bc908363ffffffff61175216565b600155600160a060020a0383166000908152602081905260409020546117e8908363ffffffff61175216565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b610f573382611e45565b336000908152600260209081526040808320600160a060020a03861684529091528120548083106118e057336000908152600260209081526040808320600160a060020a0388168452909152812055611915565b6118f0818463ffffffff611f4616565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b600354600160a060020a0316331461199457600080fd5b60085460ff16156119a457600080fd5b6008805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b611a46826009836040518082805190602001908083835b60208310611a125780518252601f1990920191602091820191016119f3565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611f58565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982604051808060200182810382528381815181526020019150805190602001908083836000838110156117145781810151838201526020016116fc565b60085460009060ff1615611ac157600080fd5b610d228383611f7d565b60085460009060ff1615611ade57600080fd5b610ed8848484611f9a565b336000908152600260209081526040808320600160a060020a0386168452909152812054611b1d908363ffffffff61175216565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a0381161515611b9757600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff1615611c1357600080fd5b61155f85858585611fc7565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6005805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a038316600090815260208190526040812054821115611cd357600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611d0357600080fd5b600160a060020a0383161515611d1857600080fd5b600160a060020a038416600090815260208190526040902054611d41908363ffffffff611f4616565b600160a060020a038086166000908152602081905260408082209390935590851681522054611d76908363ffffffff61175216565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054611db8908363ffffffff611f4616565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038216600090815260208190526040902054811115611e6a57600080fd5b600160a060020a038216600090815260208190526040902054611e93908263ffffffff611f4616565b600160a060020a038316600090815260208190526040902055600154611ebf908263ffffffff611f4616565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600082821115611f5257fe5b50900390565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b60085460009060ff1615611f9057600080fd5b610d2283836122a5565b6000611fa5846122d4565b15611fbc57611fb58484846122dc565b9050610d22565b611fb58484846124df565b6000611fd2856122d4565b156122935783611fe1336110a6565b11611feb57600080fd5b61200484611ff8336110a6565b9063ffffffff611f4616565b3360009081526020819052604090205561202d84612021876110a6565b9063ffffffff61175216565b60008087600160a060020a0316600160a060020a031681526020019081526020016000208190555084600160a060020a03166000836040516020018082805190602001908083835b602083106120945780518252601f199092019160209182019101612075565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106120f75780518252601f1990920191602091820191016120d8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060e060020a9004903387876040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015612189578181015183820152602001612171565b50505050905090810190601f1680156121b65780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af1935050505015156121d657fe5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612250578181015183820152602001612238565b50505050905090810190601f16801561227d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001610ed8565b61229e8585856124df565b9050610ed8565b600060606122b2846122d4565b156122c9576122c28484836122dc565b9150611976565b6122c28484836124df565b6000903b1190565b600080836122e9336110a6565b116122f357600080fd5b61230084611ff8336110a6565b3360009081526020819052604090205561231d84612021876110a6565b600160a060020a0386166000818152602081815260408083209490945592517fc0ee0b8a0000000000000000000000000000000000000000000000000000000081523360048201818152602483018a90526060604484019081528951606485015289518c9850959663c0ee0b8a9693958c958c956084909101928601918190849084905b838110156123b95781810151838201526020016123a1565b50505050905090810190601f1680156123e65780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561240757600080fd5b505af115801561241b573d6000803e3d6000fd5b5050505084600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612499578181015183820152602001612481565b50505050905090810190601f1680156124c65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b6000826124eb336110a6565b116124f557600080fd5b61250283611ff8336110a6565b3360009081526020819052604090205561251f83612021866110a6565b60008086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c15781810151838201526020016125a9565b50505050905090810190601f1680156125ee5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061264757805160ff1916838001178555612674565b82800160010185558215612674579182015b82811115612674578251825591602001919060010190612659565b50612680929150612684565b5090565b610ddf91905b80821115612680576000815560010161268a56006d696e7465720000000000000000000000000000000000000000000000000000a165627a7a723058200ba424ca4b49ff8a7ae101432c9815a4e15d0e470de6462556b1b021535dfcdd0029", "deployedBytecode": "0x6080604052600436106102215763ffffffff60e060020a60003504166301bd3411811461022657806301ffc9a7146102f457806305d2035b1461033f57806306fdde0314610354578063095ea7b3146103695780630988ca8c1461038d5780630f15f4c0146103f6578063172d02bd1461040b57806318160ddd14610452578063186601ca1461047957806319fa8f501461048e5780632154dc39146104a3578063217fe6c6146104b857806323b872dd1461051f57806325d387b5146105495780633092afd514610561578063313ce5671461058257806336775847146105ad578063378dc3dc146105c25780633f4ba83a146105d757806340c10f19146105ec57806342966c68146106105780634bf365df146106285780635c975abb1461063d57806366188463146106525780636f2ddd931461067657806370a08231146106a7578063715018a6146106c85780637d64bcb4146106dd5780638456cb59146106f25780638ada6b0f146107075780638da5cb5b1461071c578063908ba6481461073157806392afc33a1461078a57806395d89b411461079f578063983b2d56146107b4578063a07c7ce4146107d5578063a3a8fd2c146107ea578063a9059cbb14610843578063be45fd6214610867578063d73dd623146108d0578063dd62ed3e146108f4578063f2226de61461091b578063f2fde38b146109d2578063f6368f8a146109f3578063fb499abc14610a9a578063fbf964eb14610aaf575b600080fd5b34801561023257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f943694929360249392840191908190840183828082843750949750610ac49650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b95781810151838201526020016102a1565b50505050905090810190601f1680156102e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030057600080fd5b5061032b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610c2d565b604080519115158252519081900360200190f35b34801561034b57600080fd5b5061032b610c61565b34801561036057600080fd5b5061027f610c6f565b34801561037557600080fd5b5061032b600160a060020a0360043516602435610cfd565b34801561039957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103f4958335600160a060020a0316953695604494919390910191908190840183828082843750949750610d299650505050505050565b005b34801561040257600080fd5b5061032b610d97565b34801561041757600080fd5b50610420610de2565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561045e57600080fd5b50610467610e06565b60408051918252519081900360200190f35b34801561048557600080fd5b5061032b610e0c565b34801561049a57600080fd5b50610420610e1c565b3480156104af57600080fd5b50610467610e40565b3480156104c457600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261032b958335600160a060020a0316953695604494919390910191908190840183828082843750949750610e469650505050505050565b34801561052b57600080fd5b5061032b600160a060020a0360043581169060243516604435610eb2565b34801561055557600080fd5b506103f4600435610ee0565b34801561056d57600080fd5b506103f4600160a060020a0360043516610f13565b34801561058e57600080fd5b50610597610f5a565b6040805160ff9092168252519081900360200190f35b3480156105b957600080fd5b5061032b610f63565b3480156105ce57600080fd5b50610467610f71565b3480156105e357600080fd5b506103f4610f77565b3480156105f857600080fd5b5061032b600160a060020a0360043516602435610fd4565b34801561061c57600080fd5b506103f4600435611036565b34801561063457600080fd5b5061032b611068565b34801561064957600080fd5b5061032b611071565b34801561065e57600080fd5b5061032b600160a060020a036004351660243561107a565b34801561068257600080fd5b5061068b611097565b60408051600160a060020a039092168252519081900360200190f35b3480156106b357600080fd5b50610467600160a060020a03600435166110a6565b3480156106d457600080fd5b506103f46110c1565b3480156106e957600080fd5b5061032b61112f565b3480156106fe57600080fd5b506103f461119c565b34801561071357600080fd5b5061068b6111d4565b34801561072857600080fd5b5061068b6111ec565b34801561073d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f9436949293602493928401919081908401838280828437509497506111fb9650505050505050565b34801561079657600080fd5b5061027f611288565b3480156107ab57600080fd5b5061027f6112ad565b3480156107c057600080fd5b506103f4600160a060020a0360043516611308565b3480156107e157600080fd5b5061032b61134c565b3480156107f657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261027f9436949293602493928401919081908401838280828437509497506113559650505050505050565b34801561084f57600080fd5b5061032b600160a060020a03600435166024356113e2565b34801561087357600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261032b948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506114079650505050505050565b3480156108dc57600080fd5b5061032b600160a060020a036004351660243561142d565b34801561090057600080fd5b50610467600160a060020a036004358116906024351661144a565b34801561092757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103f494369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff85351695505050602083013592604081013515159250606081013515159150608001351515611475565b3480156109de57600080fd5b506103f4600160a060020a0360043516611518565b3480156109ff57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261032b948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506115389650505050505050565b348015610aa657600080fd5b50610420611568565b348015610abb57600080fd5b5061042061158c565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f455243323233546f6b656e52656e64657265729363bf3bed549387939092918291606490910190602086019080838360005b83811015610b52578181015183820152602001610b3a565b50505050905090810190601f168015610b7f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610b9f57600080fd5b505af1158015610bb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bdc57600080fd5b810190808051640100000000811115610bf457600080fd5b82016020810184811115610c0757600080fd5b8151640100000000811182820187101715610c2157600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b600854610100900460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf55780601f10610cca57610100808354040283529160200191610cf5565b820191906000526020600020905b815481529060010190602001808311610cd857829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610d1857600080fd5b610d2283836115b0565b9392505050565b610d93826009836040518082805190602001908083835b60208310610d5f5780518252601f199092019160209182019101610d40565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506115cd565b5050565b60055460009060a060020a900460ff1615610db157600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610ddc6115e2565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600d5481565b6000610d22836009846040518082805190602001908083835b60208310610e7e5780518252601f199092019160209182019101610e5f565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611604565b60055460009060a060020a900460ff161515610ecd57600080fd5b610ed8848484611623565b949350505050565b600354600160a060020a03163314610ef757600080fd5b60055460a060020a900460ff1615610f0e57600080fd5b600d55565b600354600160a060020a03163314610f2a57600080fd5b610f578160408051908101604052806006815260200160008051602061269f833981519152815250611641565b50565b600a5460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610f8e57600080fd5b60085460ff161515610f9f57600080fd5b6008805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460009060ff161515610fe857600080fd5b60055460a060020a900460ff16151561100057600080fd5b6000600d54111561102c57600d54600154611021908463ffffffff61175216565b111561102c57600080fd5b610d228383611765565b600e5460ff16151561104757600080fd5b60055460a060020a900460ff16151561105f57600080fd5b610f5781611882565b600c5460ff1681565b60085460ff1681565b60085460009060ff161561108d57600080fd5b610d22838361188c565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031633146110d857600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a0316331461114957600080fd5b600854610100900460ff161561115e57600080fd5b6008805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff1615156111b257600080fd5b60055460a060020a900460ff1615156111ca57600080fd5b6111d261197d565b565b735f455243323233546f6b656e52656e646572657281565b600354600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905