UNPKG

@dnextco/tokenboost-solidity-erc223token

Version:

Solidity contracts for TokenBoost (ERC223Token)

956 lines 481 kB
{ "contractName": "CalculateERC223", "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": "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": "CalculateSelector", "outputs": [ { "name": "", "type": "bytes4" } ], "payable": false, "stateMutability": "pure", "type": "function" } ], "bytecode": "0x60806040526008805461ffff19169055600a805460ff191660121790553480156200002957600080fd5b50604051620026dc380380620026dc833981016040908152815160208301519183015160038054600160a060020a031916331790559092918201910182828282828282620000a07f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b600160a060020a0381161515620000b657600080fd5b6005805433600160a060020a03199182161790915560038054909116600160a060020a038316179055620001137f6125ede500000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b5081516200012990600690602085019062000226565b5080516200013f90600790602084019062000226565b50620001747ffd155c6700000000000000000000000000000000000000000000000000000000640100000000620001b9810204565b50620001ad91507fd0c381c9000000000000000000000000000000000000000000000000000000009050640100000000620001b9810204565b505050505050620002cb565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e957600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600460205260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026957805160ff191683800117855562000299565b8280016001018555821562000299579182015b82811115620002995782518255916020019190600101906200027c565b50620002a7929150620002ab565b5090565b620002c891905b80821115620002a75760008155600101620002b2565b90565b61240180620002db6000396000f3006080604052600436106102005763ffffffff60e060020a60003504166301ffc9a7811461020557806305d2035b1461025057806306fdde0314610265578063095ea7b3146102ef5780630988ca8c146103135780630f15f4c01461037c578063172d02bd1461039157806318160ddd146103d8578063186601ca146103ff57806319fa8f50146104145780631a4318d4146104295780632154dc391461043e578063217fe6c61461045357806323b872dd146104ba57806325d387b5146104e45780633092afd5146104fc578063313ce5671461051d5780633677584714610548578063378dc3dc1461055d5780633f4ba83a1461057257806340c10f191461058757806342966c68146105ab5780634bf365df146105c35780635c975abb146105d857806366188463146105ed5780636f2ddd931461061157806370a0823114610642578063715018a6146106635780637d64bcb4146106785780638456cb591461068d5780638da5cb5b146106a257806392afc33a146106b757806395d89b41146106cc578063983b2d56146106e1578063a07c7ce414610702578063a9059cbb14610717578063be45fd621461073b578063d73dd623146107a4578063dd62ed3e146107c8578063f2226de6146107ef578063f2fde38b146108a6578063f6368f8a146108c7578063fb499abc1461096e578063fbf964eb14610983575b600080fd5b34801561021157600080fd5b5061023c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610998565b604080519115158252519081900360200190f35b34801561025c57600080fd5b5061023c6109cc565b34801561027157600080fd5b5061027a6109da565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b457818101518382015260200161029c565b50505050905090810190601f1680156102e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fb57600080fd5b5061023c600160a060020a0360043516602435610a68565b34801561031f57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261037a958335600160a060020a0316953695604494919390910191908190840183828082843750949750610a949650505050505050565b005b34801561038857600080fd5b5061023c610b02565b34801561039d57600080fd5b506103a6610b4d565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b3480156103e457600080fd5b506103ed610b71565b60408051918252519081900360200190f35b34801561040b57600080fd5b5061023c610b77565b34801561042057600080fd5b506103a6610b87565b34801561043557600080fd5b506103a6610bab565b34801561044a57600080fd5b506103ed610c89565b34801561045f57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261023c958335600160a060020a0316953695604494919390910191908190840183828082843750949750610c8f9650505050505050565b3480156104c657600080fd5b5061023c600160a060020a0360043581169060243516604435610cfb565b3480156104f057600080fd5b5061037a600435610d29565b34801561050857600080fd5b5061037a600160a060020a0360043516610d5c565b34801561052957600080fd5b50610532610da3565b6040805160ff9092168252519081900360200190f35b34801561055457600080fd5b5061023c610dac565b34801561056957600080fd5b506103ed610dba565b34801561057e57600080fd5b5061037a610dc0565b34801561059357600080fd5b5061023c600160a060020a0360043516602435610e1d565b3480156105b757600080fd5b5061037a600435610e7f565b3480156105cf57600080fd5b5061023c610eb1565b3480156105e457600080fd5b5061023c610eba565b3480156105f957600080fd5b5061023c600160a060020a0360043516602435610ec3565b34801561061d57600080fd5b50610626610ee0565b60408051600160a060020a039092168252519081900360200190f35b34801561064e57600080fd5b506103ed600160a060020a0360043516610eef565b34801561066f57600080fd5b5061037a610f0a565b34801561068457600080fd5b5061023c610f78565b34801561069957600080fd5b5061037a610fe5565b3480156106ae57600080fd5b5061062661101d565b3480156106c357600080fd5b5061027a61102c565b3480156106d857600080fd5b5061027a611051565b3480156106ed57600080fd5b5061037a600160a060020a03600435166110ac565b34801561070e57600080fd5b5061023c6110f0565b34801561072357600080fd5b5061023c600160a060020a03600435166024356110f9565b34801561074757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261023c948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061111e9650505050505050565b3480156107b057600080fd5b5061023c600160a060020a0360043516602435611144565b3480156107d457600080fd5b506103ed600160a060020a0360043581169060243516611161565b3480156107fb57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261037a94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff8535169550505060208301359260408101351515925060608101351515915060800135151561118c565b3480156108b257600080fd5b5061037a600160a060020a036004351661122f565b3480156108d357600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261023c948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975061124f9650505050505050565b34801561097a57600080fd5b506103a661127f565b34801561098f57600080fd5b506103a66112a3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b600854610100900460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a605780601f10610a3557610100808354040283529160200191610a60565b820191906000526020600020905b815481529060010190602001808311610a4357829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610a8357600080fd5b610a8d83836112c7565b9392505050565b610afe826009836040518082805190602001908083835b60208310610aca5780518252601f199092019160209182019101610aab565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506112e4565b5050565b60055460009060a060020a900460ff1615610b1c57600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610b476112f9565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b604080517f7472616e7366657228616464726573732c75696e743235362c62797465732c7381527f7472696e67290000000000000000000000000000000000000000000000000000602082015281519081900360260181207f7472616e7366657228616464726573732c75696e743235362c627974657329008252825191829003601f0182207f7472616e7366657228616464726573732c75696e7432353629000000000000008352925191829003601901909120909118187f31b56f9a000000000000000000000000000000000000000000000000000000001890565b600d5481565b6000610a8d836009846040518082805190602001908083835b60208310610cc75780518252601f199092019160209182019101610ca8565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061131b565b60055460009060a060020a900460ff161515610d1657600080fd5b610d2184848461133a565b949350505050565b600354600160a060020a03163314610d4057600080fd5b60055460a060020a900460ff1615610d5757600080fd5b600d55565b600354600160a060020a03163314610d7357600080fd5b610da0816040805190810160405280600681526020016000805160206123b6833981519152815250611358565b50565b600a5460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610dd757600080fd5b60085460ff161515610de857600080fd5b6008805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460009060ff161515610e3157600080fd5b60055460a060020a900460ff161515610e4957600080fd5b6000600d541115610e7557600d54600154610e6a908463ffffffff61146916565b1115610e7557600080fd5b610a8d838361147c565b600e5460ff161515610e9057600080fd5b60055460a060020a900460ff161515610ea857600080fd5b610da081611599565b600c5460ff1681565b60085460ff1681565b60085460009060ff1615610ed657600080fd5b610a8d83836115a3565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610f2157600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a03163314610f9257600080fd5b600854610100900460ff1615610fa757600080fd5b6008805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff161515610ffb57600080fd5b60055460a060020a900460ff16151561101357600080fd5b61101b611694565b565b600354600160a060020a031681565b60408051808201909152600681526000805160206123b6833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a605780601f10610a3557610100808354040283529160200191610a60565b600354600160a060020a031633146110c357600080fd5b610da0816040805190810160405280600681526020016000805160206123b68339815191528152506116f3565b600e5460ff1681565b60055460009060a060020a900460ff16151561111457600080fd5b610a8d83836117c5565b60055460009060a060020a900460ff16151561113957600080fd5b610d218484846117e2565b60085460009060ff161561115757600080fd5b610a8d8383611800565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a031633146111a357600080fd5b60055460a060020a900460ff16156111ba57600080fd5b86516111cd9060069060208a019061231d565b5085516111e190600790602089019061231d565b50600a805460ff1990811660ff97909716969096179055600b93909355600c8054851692151592909217909155600e80549093169015151761ff001916610100911515919091021790555050565b600354600160a060020a0316331461124657600080fd5b610da081611899565b60055460009060a060020a900460ff16151561126a57600080fd5b61127685858585611917565b95945050505050565b7fd0c381c90000000000000000000000000000000000000000000000000000000081565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b60085460009060ff16156112da57600080fd5b610a8d8383611936565b6112ee828261131b565b1515610afe57600080fd5b600354600090600160a060020a0316331461131357600080fd5b610b4761199c565b600160a060020a03166000908152602091909152604090205460ff1690565b60085460009060ff161561134d57600080fd5b610d218484846119c5565b6113c2826009836040518082805190602001908083835b6020831061138e5780518252601f19909201916020918201910161136f565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611b3a565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561142b578181015183820152602001611413565b50505050905090810190601f1680156114585780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b8181018281101561147657fe5b92915050565b60006114ab336040805190810160405280600681526020016000805160206123b6833981519152815250610a94565b600854610100900460ff16156114c057600080fd5b6001546114d3908363ffffffff61146916565b600155600160a060020a0383166000908152602081905260409020546114ff908363ffffffff61146916565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b610da03382611b5c565b336000908152600260209081526040808320600160a060020a03861684529091528120548083106115f757336000908152600260209081526040808320600160a060020a038816845290915281205561162c565b611607818463ffffffff611c5d16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b600354600160a060020a031633146116ab57600080fd5b60085460ff16156116bb57600080fd5b6008805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b61175d826009836040518082805190602001908083835b602083106117295780518252601f19909201916020918201910161170a565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611c6f565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360008381101561142b578181015183820152602001611413565b60085460009060ff16156117d857600080fd5b610a8d8383611c94565b60085460009060ff16156117f557600080fd5b610d21848484611cb1565b336000908152600260209081526040808320600160a060020a0386168452909152812054611834908363ffffffff61146916565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03811615156118ae57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085460009060ff161561192a57600080fd5b61127685858585611cde565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6005805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a0383166000908152602081905260408120548211156119ea57600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611a1a57600080fd5b600160a060020a0383161515611a2f57600080fd5b600160a060020a038416600090815260208190526040902054611a58908363ffffffff611c5d16565b600160a060020a038086166000908152602081905260408082209390935590851681522054611a8d908363ffffffff61146916565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054611acf908363ffffffff611c5d16565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a038216600090815260208190526040902054811115611b8157600080fd5b600160a060020a038216600090815260208190526040902054611baa908263ffffffff611c5d16565b600160a060020a038316600090815260208190526040902055600154611bd6908263ffffffff611c5d16565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600082821115611c6957fe5b50900390565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b60085460009060ff1615611ca757600080fd5b610a8d8383611fbc565b6000611cbc84611feb565b15611cd357611ccc848484611ff3565b9050610a8d565b611ccc8484846121f6565b6000611ce985611feb565b15611faa5783611cf833610eef565b11611d0257600080fd5b611d1b84611d0f33610eef565b9063ffffffff611c5d16565b33600090815260208190526040902055611d4484611d3887610eef565b9063ffffffff61146916565b60008087600160a060020a0316600160a060020a031681526020019081526020016000208190555084600160a060020a03166000836040516020018082805190602001908083835b60208310611dab5780518252601f199092019160209182019101611d8c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310611e0e5780518252601f199092019160209182019101611def565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060e060020a9004903387876040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015611ea0578181015183820152602001611e88565b50505050905090810190601f168015611ecd5780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af193505050501515611eed57fe5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f67578181015183820152602001611f4f565b50505050905090810190601f168015611f945780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001610d21565b611fb58585856121f6565b9050610d21565b60006060611fc984611feb565b15611fe057611fd9848483611ff3565b915061168d565b611fd98484836121f6565b6000903b1190565b6000808361200033610eef565b1161200a57600080fd5b61201784611d0f33610eef565b3360009081526020819052604090205561203484611d3887610eef565b600160a060020a0386166000818152602081815260408083209490945592517fc0ee0b8a0000000000000000000000000000000000000000000000000000000081523360048201818152602483018a90526060604484019081528951606485015289518c9850959663c0ee0b8a9693958c958c956084909101928601918190849084905b838110156120d05781810151838201526020016120b8565b50505050905090810190601f1680156120fd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561211e57600080fd5b505af1158015612132573d6000803e3d6000fd5b5050505084600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156121b0578181015183820152602001612198565b50505050905090810190601f1680156121dd5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3506001949350505050565b60008261220233610eef565b1161220c57600080fd5b61221983611d0f33610eef565b3360009081526020819052604090205561223683611d3886610eef565b60008086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156122d85781810151838201526020016122c0565b50505050905090810190601f1680156123055780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061235e57805160ff191683800117855561238b565b8280016001018555821561238b579182015b8281111561238b578251825591602001919060010190612370565b5061239792915061239b565b5090565b610b4a91905b8082111561239757600081556001016123a156006d696e7465720000000000000000000000000000000000000000000000000000a165627a7a723058200ab4654171e2f6308a8b6e1d72582ed84d24d09211a010f352ce710c81b3a9890029", "deployedBytecode": "0x6080604052600436106102005763ffffffff60e060020a60003504166301ffc9a7811461020557806305d2035b1461025057806306fdde0314610265578063095ea7b3146102ef5780630988ca8c146103135780630f15f4c01461037c578063172d02bd1461039157806318160ddd146103d8578063186601ca146103ff57806319fa8f50146104145780631a4318d4146104295780632154dc391461043e578063217fe6c61461045357806323b872dd146104ba57806325d387b5146104e45780633092afd5146104fc578063313ce5671461051d5780633677584714610548578063378dc3dc1461055d5780633f4ba83a1461057257806340c10f191461058757806342966c68146105ab5780634bf365df146105c35780635c975abb146105d857806366188463146105ed5780636f2ddd931461061157806370a0823114610642578063715018a6146106635780637d64bcb4146106785780638456cb591461068d5780638da5cb5b146106a257806392afc33a146106b757806395d89b41146106cc578063983b2d56146106e1578063a07c7ce414610702578063a9059cbb14610717578063be45fd621461073b578063d73dd623146107a4578063dd62ed3e146107c8578063f2226de6146107ef578063f2fde38b146108a6578063f6368f8a146108c7578063fb499abc1461096e578063fbf964eb14610983575b600080fd5b34801561021157600080fd5b5061023c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610998565b604080519115158252519081900360200190f35b34801561025c57600080fd5b5061023c6109cc565b34801561027157600080fd5b5061027a6109da565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b457818101518382015260200161029c565b50505050905090810190601f1680156102e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fb57600080fd5b5061023c600160a060020a0360043516602435610a68565b34801561031f57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261037a958335600160a060020a0316953695604494919390910191908190840183828082843750949750610a949650505050505050565b005b34801561038857600080fd5b5061023c610b02565b34801561039d57600080fd5b506103a6610b4d565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b3480156103e457600080fd5b506103ed610b71565b60408051918252519081900360200190f35b34801561040b57600080fd5b5061023c610b77565b34801561042057600080fd5b506103a6610b87565b34801561043557600080fd5b506103a6610bab565b34801561044a57600080fd5b506103ed610c89565b34801561045f57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261023c958335600160a060020a0316953695604494919390910191908190840183828082843750949750610c8f9650505050505050565b3480156104c657600080fd5b5061023c600160a060020a0360043581169060243516604435610cfb565b3480156104f057600080fd5b5061037a600435610d29565b34801561050857600080fd5b5061037a600160a060020a0360043516610d5c565b34801561052957600080fd5b50610532610da3565b6040805160ff9092168252519081900360200190f35b34801561055457600080fd5b5061023c610dac565b34801561056957600080fd5b506103ed610dba565b34801561057e57600080fd5b5061037a610dc0565b34801561059357600080fd5b5061023c600160a060020a0360043516602435610e1d565b3480156105b757600080fd5b5061037a600435610e7f565b3480156105cf57600080fd5b5061023c610eb1565b3480156105e457600080fd5b5061023c610eba565b3480156105f957600080fd5b5061023c600160a060020a0360043516602435610ec3565b34801561061d57600080fd5b50610626610ee0565b60408051600160a060020a039092168252519081900360200190f35b34801561064e57600080fd5b506103ed600160a060020a0360043516610eef565b34801561066f57600080fd5b5061037a610f0a565b34801561068457600080fd5b5061023c610f78565b34801561069957600080fd5b5061037a610fe5565b3480156106ae57600080fd5b5061062661101d565b3480156106c357600080fd5b5061027a61102c565b3480156106d857600080fd5b5061027a611051565b3480156106ed57600080fd5b5061037a600160a060020a03600435166110ac565b34801561070e57600080fd5b5061023c6110f0565b34801561072357600080fd5b5061023c600160a060020a03600435166024356110f9565b34801561074757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261023c948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061111e9650505050505050565b3480156107b057600080fd5b5061023c600160a060020a0360043516602435611144565b3480156107d457600080fd5b506103ed600160a060020a0360043581169060243516611161565b3480156107fb57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261037a94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505060ff8535169550505060208301359260408101351515925060608101351515915060800135151561118c565b3480156108b257600080fd5b5061037a600160a060020a036004351661122f565b3480156108d357600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261023c948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975061124f9650505050505050565b34801561097a57600080fd5b506103a661127f565b34801561098f57600080fd5b506103a66112a3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526004602052604090205460ff1690565b600854610100900460ff1681565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a605780601f10610a3557610100808354040283529160200191610a60565b820191906000526020600020905b815481529060010190602001808311610a4357829003601f168201915b505050505081565b60055460009060a060020a900460ff161515610a8357600080fd5b610a8d83836112c7565b9392505050565b610afe826009836040518082805190602001908083835b60208310610aca5780518252601f199092019160209182019101610aab565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506112e4565b5050565b60055460009060a060020a900460ff1615610b1c57600080fd5b600b546001819055600354600160a060020a0316600090815260208190526040902055610b476112f9565b90505b90565b7ffd155c670000000000000000000000000000000000000000000000000000000081565b60015490565b60055460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b604080517f7472616e7366657228616464726573732c75696e743235362c62797465732c7381527f7472696e67290000000000000000000000000000000000000000000000000000602082015281519081900360260181207f7472616e7366657228616464726573732c75696e743235362c627974657329008252825191829003601f0182207f7472616e7366657228616464726573732c75696e7432353629000000000000008352925191829003601901909120909118187f31b56f9a000000000000000000000000000000000000000000000000000000001890565b600d5481565b6000610a8d836009846040518082805190602001908083835b60208310610cc75780518252601f199092019160209182019101610ca8565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061131b565b60055460009060a060020a900460ff161515610d1657600080fd5b610d2184848461133a565b949350505050565b600354600160a060020a03163314610d4057600080fd5b60055460a060020a900460ff1615610d5757600080fd5b600d55565b600354600160a060020a03163314610d7357600080fd5b610da0816040805190810160405280600681526020016000805160206123b6833981519152815250611358565b50565b600a5460ff1681565b600e54610100900460ff1681565b600b5481565b600354600160a060020a03163314610dd757600080fd5b60085460ff161515610de857600080fd5b6008805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460009060ff161515610e3157600080fd5b60055460a060020a900460ff161515610e4957600080fd5b6000600d541115610e7557600d54600154610e6a908463ffffffff61146916565b1115610e7557600080fd5b610a8d838361147c565b600e5460ff161515610e9057600080fd5b60055460a060020a900460ff161515610ea857600080fd5b610da081611599565b600c5460ff1681565b60085460ff1681565b60085460009060ff1615610ed657600080fd5b610a8d83836115a3565b600554600160a060020a031681565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610f2157600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a03163314610f9257600080fd5b600854610100900460ff1615610fa757600080fd5b6008805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600e54610100900460ff161515610ffb57600080fd5b60055460a060020a900460ff16151561101357600080fd5b61101b611694565b565b600354600160a060020a031681565b60408051808201909152600681526000805160206123b6833981519152602082015281565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a605780601f10610a3557610100808354040283529160200191610a60565b600354600160a060020a031633146110c357600080fd5b610da0816040805190810160405280600681526020016000805160206123b68339815191528152506116f3565b600e5460ff1681565b60055460009060a060020a900460ff16151561111457600080fd5b610a8d83836117c5565b60055460009060a060020a900460ff16151561113957600080fd5b610d218484846117e2565b60085460009060ff161561115757600080fd5b610a8d8383611800565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a031633146111a357600080fd5b60055460a060020a900460ff16156111ba57600080fd5b86516111cd9060069060208a019061231d565b5085516111e190600790602089019061231d565b50600a805460ff1990811660ff97909716969096179055600b93909355600c8054851692151592909217909155600e80549093169015151761ff001916610100911515919091021790555050565b600354600160a060020a0316331461124657600080fd5b610da081611899565b60055460009060a060020a900460ff16151561126a57600080fd5b61127685858585611917565b95945050505050565b7fd0c381c90000000000000000000000000000000000000000000000000000000081565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b60085460009060ff16156112da57600080fd5b610a8d8383611936565b6112ee828261131b565b1515610afe57600080fd5b600354600090600160a060020a0316331461131357600080fd5b610b4761199c565b600160a060020a03166000908152602091909152604090205460ff1690565b60085460009060ff161561134d57600080fd5b610d218484846119c5565b6113c2826009836040518082805190602001908083835b6020831061138e5780518252601f19909201916020918201910161136f565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611b3a565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561142b578181015183820152602001611413565b50505050905090810190601f1680156114585780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b8181018281101561147657fe5b92915050565b60006114ab336040805190810160405280600681526020016000805160206123b6833981519152815250610a94565b600854610100900460ff16156114c057600080fd5b6001546114d3908363ffffffff61146916565b600155600160a060020a0383166000908152602081905260409020546114ff908363ffffffff61146916565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b610da03382611b5c565b336000908152600260209081526040808320600160a060020a03861684529091528120548083106115f757336000908152600260209081526040808320600160a060020a038816845290915281205561162c565b611607818463ffffffff611c5d16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b600354600160a060020a031633146116ab57600080fd5b60085460ff16156116bb57600080fd5b6008805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b61175d826009836040518082805190602001908083835b602083106117295780518252601f19909201916020918201910161170a56