326 txs
296 calls
constructor
constructor()
functions
constantContractAddress
viewfunction constantContractAddress() view returns (address)
deposits
viewfunction deposits(address) view returns (uint16 numDeposits, uint256 withdrawn)
getAllUserDeposits
viewfunction getAllUserDeposits(address user) view returns (uint8[], uint32[], uint256[], uint256[], uint256[], bool[])
getCommision
viewfunction getCommision() view returns (uint256)
getUserDepositsByIndexes
viewfunction getUserDepositsByIndexes(address user, uint16[] depositIndexes) view returns (uint8[] depositTariffIds, uint32[] depositAts, uint256[] depositAmounts, uint256[] depositPaidOuts, uint256[] depositPercentsMonthly, bool[] depositClosed)
getWithdrawValue
viewfunction getWithdrawValue(address user) view returns (uint256)
investorContractAddress
viewfunction investorContractAddress() view returns (address)
state
viewfunction state() view returns (bool)
votes1
viewfunction votes1() view returns (bool)
votes2
viewfunction votes2() view returns (bool)
votes3
viewfunction votes3() view returns (bool)
deposit
payablefunction deposit(uint8 _tariff, address _referrer) payable returns (address, uint8, uint256)
depositForUser
nonpayablefunction depositForUser(uint256 value, uint8 _tariff, address _referrer, address _wallet, uint32 _at, uint32 _paid_out, uint32 _to_pay, uint32 _percents) returns (address, uint8, uint256)
devfee
payablefunction devfee(uint256 _fee) payable
migrate
nonpayablefunction migrate(address wallet, uint16[] depositIndexes, address contractAddress)
setConstantContractAddress
nonpayablefunction setConstantContractAddress(address contractAddress) returns (address)
setInvestorContractAddress
nonpayablefunction setInvestorContractAddress(address contractAddress) returns (address)
toggleDeposit
nonpayablefunction toggleDeposit(address wallet, uint16 depositIndex) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
turnOff
nonpayablefunction turnOff() returns (bool)
turnOn
nonpayablefunction turnOn() returns (bool)
voting
nonpayablefunction voting() returns (bool)
withdraw
nonpayablefunction withdraw()
withdrawThreeVoices
nonpayablefunction withdrawThreeVoices(uint256 amount)
events
DepositEvent
event DepositEvent(address indexed _user, uint8 tariff, uint256 indexed _amount)
withdrawEvent
event withdrawEvent(address indexed _user, uint256 indexed _amount)
errors
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x60806040526001805460ff60201b19169055348015601c57600080fd5b5060016000819055805463ffffffff196501000000000033021664ff00000001600160c81b031990911617905561569c806100586000396000f3fe6080604052600436106101775760003560e01c8063af10c810116100ca578063ea5bb94611610079578063f2fde38b11610056578063f2fde38b14610446578063fc7e286d14610466578063fce1ccca146104bb57005b8063ea5bb946146103e6578063ec715e5814610406578063ec7dced51461042657005b8063ba33ed7d116100a7578063ba33ed7d14610399578063c19d93fb146103ae578063cf314735146103c657005b8063af10c81014610339578063b01326c01461034e578063b9f43fd81461038657005b80633fcd0aec11610126578063878c13df11610103578063878c13df146102bf5780639a14051e146102df578063ab94d9501461032657005b80633fcd0aec1461025c5780635b4405961461027f5780635ec201bf1461029f57005b80632c7a2e5b116101545780632c7a2e5b14610206578063332336df146102265780633ccfd60b1461024757005b80630b5dfd3d146101805780631327e258146101a05780632516b3c1146101d457005b3661017e57005b005b34801561018c57600080fd5b5061017e61019b366004614d48565b6104d0565b3480156101ac57600080fd5b506001546101bf90610100900460ff1681565b60405190151581526020015b60405180910390f35b3480156101e057600080fd5b506101f46101ef366004614dac565b6109c6565b6040516101cb96959493929190614e78565b34801561021257600080fd5b506001546101bf9062010000900460ff1681565b34801561023257600080fd5b506001546101bf906301000000900460ff1681565b34801561025357600080fd5b5061017e610ebd565b34801561026857600080fd5b50610271611310565b6040519081526020016101cb565b34801561028b57600080fd5b5061027161029a366004614dac565b611373565b3480156102ab57600080fd5b506101bf6102ba366004614f27565b611a88565b3480156102cb57600080fd5b5061017e6102da366004614f60565b611c26565b3480156102eb57600080fd5b506102ff6102fa366004614f9a565b611d84565b604080516001600160a01b03909416845260ff9092166020840152908201526060016101cb565b6102ff61033436600461503a565b6120de565b34801561034557600080fd5b506101bf6124be565b34801561035a57600080fd5b5061036e610369366004614dac565b61252e565b6040516001600160a01b0390911681526020016101cb565b61017e610394366004614f60565b6125bc565b3480156103a557600080fd5b506101bf61269e565b3480156103ba57600080fd5b5060015460ff166101bf565b3480156103d257600080fd5b5061036e6103e1366004614dac565b61270a565b3480156103f257600080fd5b5060025461036e906001600160a01b031681565b34801561041257600080fd5b5060035461036e906001600160a01b031681565b34801561043257600080fd5b506101f4610441366004615068565b612796565b34801561045257600080fd5b5061017e610461366004614dac565b612d78565b34801561047257600080fd5b506104a1610481366004614dac565b6005602052600090815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016101cb565b3480156104c757600080fd5b506101bf612e27565b6001546501000000000090046001600160a01b0316331461052e5760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b60448201526064015b60405180910390fd5b6001600160a01b0381166105845760405162461bcd60e51b815260206004820152601a60248201527f46726f6d20636f6e7472616374206e6f742073657475707065640000000000006044820152606401610525565b6060806060806060806000885111610624576040517f2516b3c10000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152881690632516b3c1906024016000604051808303816000875af11580156105f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261061f9190810190615259565b6106b2565b6040517fec7dced50000000000000000000000000000000000000000000000000000000081526001600160a01b0388169063ec7dced59061066b908c908c9060040161536f565b6000604051808303816000875af115801561068a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106b29190810190615259565b949a5092985090965094509250905060005b86518161ffff1610156109ba57604051806101200160405280888361ffff16815181106106f3576106f36153cb565b602002602001015160ff168152602001868361ffff1681518110610719576107196153cb565b60200260200101518152602001858361ffff168151811061073c5761073c6153cb565b6020026020010151815260200160008152602001878361ffff1681518110610766576107666153cb565b602002602001015163ffffffff168152602001600260009054906101000a90046001600160a01b03166001600160a01b031663e8f2be528a8561ffff16815181106107b3576107b36153cb565b60200260200101516040518263ffffffff1660e01b81526004016107e0919060ff91909116815260200190565b60a060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082191906153e1565b60000151888461ffff168151811061083b5761083b6153cb565b602002602001015161084d9190615486565b63ffffffff168152602001838361ffff168151811061086e5761086e6153cb565b60200260200101511515815260200160008152602001868361ffff168151811061089a5761089a6153cb565b6020908102919091018101519091526001600160a01b038c166000908152600590915260408120805460028201929161ffff90911690826108da836154a2565b825461ffff91821661010093840a90810290830219909116179092559116825260208083019390935260409182016000208451815460ff90911660ff1990911617815592840151600184015590830151600283015560608301516003830155608083015160048301805460a086015160c08701511515600160401b0268ff00000000000000001963ffffffff9283166401000000000267ffffffffffffffff199094169290951691909117919091179290921691909117905560e083015160058301559190910151600690910155806109b2816154a2565b9150506106c4565b50505050505050505050565b60025460405163dbac26e960e01b8152336004820152606091829182918291829182916001600160a01b039091169063dbac26e990602401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f91906154c3565b15610a4957600080fd5b6001600160a01b03871660009081526005602052604081205461ffff1667ffffffffffffffff811115610a7e57610a7e614c2e565b604051908082528060200260200182016040528015610aa7578160200160208202803683370190505b506001600160a01b0389166000908152600560205260408120549192509061ffff1667ffffffffffffffff811115610ae157610ae1614c2e565b604051908082528060200260200182016040528015610b0a578160200160208202803683370190505b506001600160a01b038a166000908152600560205260408120549192509061ffff1667ffffffffffffffff811115610b4457610b44614c2e565b604051908082528060200260200182016040528015610b6d578160200160208202803683370190505b506001600160a01b038b166000908152600560205260408120549192509061ffff1667ffffffffffffffff811115610ba757610ba7614c2e565b604051908082528060200260200182016040528015610bd0578160200160208202803683370190505b506001600160a01b038c166000908152600560205260408120549192509061ffff1667ffffffffffffffff811115610c0a57610c0a614c2e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b506001600160a01b038d166000908152600560205260408120549192509061ffff1667ffffffffffffffff811115610c6d57610c6d614c2e565b604051908082528060200260200182016040528015610c96578160200160208202803683370190505b50905060005b6001600160a01b038e1660009081526005602052604090205461ffff9081169082161015610ea8576001600160a01b038e16600090815260056020908152604080832061ffff8516808552600290910190925290912054885160ff9091169189918110610d0b57610d0b6153cb565b60ff9092166020928302919091018201526001600160a01b038f16600090815260058252604080822061ffff85168084526002909101909352902060040154875163ffffffff9091169188918110610d6557610d656153cb565b63ffffffff9092166020928302919091018201526001600160a01b038f16600090815260058252604080822061ffff851680845260029091019093529020600101548651909187918110610dbb57610dbb6153cb565b6020908102919091018101919091526001600160a01b038f16600090815260058252604080822061ffff85168084526002918201909452912001548551909186918110610e0a57610e0a6153cb565b6020908102919091018101919091526001600160a01b038f16600090815260058252604080822061ffff851680845260029091019093529020600401548351600160401b90910460ff169184918110610e6557610e656153cb565b91151560209283029190910190910152610e7f8e82612efe565b838261ffff1681518110610e9557610e956153cb565b6020908102919091010152600101610c9c565b50949c939b5091995097509550909350915050565b60025460405163dbac26e960e01b81523360048201526001600160a01b039091169063dbac26e990602401602060405180830381865afa158015610f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2991906154c3565b15610f3357600080fd5b610f3b61330a565b60015460ff1615610f8e5760405162461bcd60e51b815260206004820152601860248201527f5769746864726177616c73206172652064697361626c656400000000000000006044820152606401610525565b33610fdb5760405162461bcd60e51b815260206004820152600e60248201527f496e76616c69642073656e6465720000000000000000000000000000000000006044820152606401610525565b6000610fe63361334d565b90508047116110375760405162461bcd60e51b815260206004820152601860248201527f436f6e747261637420686173206c6f772062616c616e636500000000000000006044820152606401610525565b600254604080517fb0a46a8200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163b0a46a829160048083019260209291908290030181865afa15801561109a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110be91906154de565b6001600160801b031690508082116111185760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420616d6f756e74206166746572206665650000006044820152606401610525565b60005b3360009081526005602052604090205461ffff90811690821610156111f35733600090815260056020908152604080832061ffff851684526002019091529020600401544264010000000090910463ffffffff16116111bf5733600090815260056020908152604080832061ffff85168452600290810190925290912060048101805468ff00000000000000001916600160401b17905560038101549101556111eb565b33600090815260056020818152604080842061ffff861685526002908101909252909220908101549101555b60010161111b565b503360009081526005602052604081206001018054849290611216908490615507565b92505081905550806004600082825461122f9190615507565b909155506000905033611242838561551a565b604051600081818185875af1925050503d806000811461127e576040519150601f19603f3d011682016040523d82523d6000602084013e611283565b606091505b50509050806112d45760405162461bcd60e51b815260206004820152601860248201527f5769746864726177207472616e73666572206661696c656400000000000000006044820152606401610525565b604051839033907f87d5f4772963d1f9b76047158b4ae97c420a1b3bff2a746c828beffd9e7c3e2690600090a350505061130e6001600055565b565b6001546000906501000000000090046001600160a01b0316331461136c5760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b5060045490565b6001600160a01b03811660009081526005602052604081205481908190819061ffff1667ffffffffffffffff8111156113ae576113ae614c2e565b60405190808252806020026020018201604052801561143f57816020015b61142c604051806101200160405280600060ff168152602001600081526020016000815260200160008152602001600063ffffffff168152602001600063ffffffff16815260200160001515815260200160008152602001600081525090565b8152602001906001900390816113cc5790505b50905060005b6001600160a01b03861660009081526005602052604090205461ffff9081169082161015611a6657600260009054906101000a90046001600160a01b03166001600160a01b03166367b0c1156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e491906154de565b6001600160a01b038716600090815260056020818152604080842061ffff871685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e0830152600601546101008201526001600160801b03919091169061159e90613972565b10156115ab57600061187a565b600254604080516367b0c11560e01b815290516064926001600160a01b0316916367b0c1159160048083019260209291908290030181865afa1580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161991906154de565b6001600160a01b038816600090815260056020818152604080842061ffff881685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e0830152600601546101008201526001600160801b0391909116906116d390613972565b6116dd9190615543565b6001600160a01b038816600090815260056020818152604080842061ffff881685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e08301526006015461010082015261178a90613972565b611794919061551a565b600280546001600160a01b038a8116600090815260056020908152604080832061ffff8a16845290950190528390205492516374795f2960e11b815260ff9093166004840152169063e8f2be529060240160a060405180830381865afa158015611802573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182691906153e1565b6020908101516001600160a01b038a16600090815260058352604080822061ffff8816835260020190935291909120600601546118669160ff1690615557565b6118709190615557565b61187a919061556e565b828261ffff1681518110611890576118906153cb565b60209081029190910181015160e001919091526001600160a01b038716600090815260058252604080822061ffff851683526002908101909352902001546118d89084615507565b6001600160a01b038716600090815260056020908152604080832061ffff86168452600201909152902060040154909350600160401b900460ff168061195a57506001600160a01b038616600090815260056020908152604080832061ffff851684526002019091529020600401544264010000000090910463ffffffff1611155b156119e6576001600160a01b038616600090815260056020908152604080832061ffff851680855260029091019092529091206006015483519091849181106119a5576119a56153cb565b602002602001015160e001516119bb9190615507565b828261ffff16815181106119d1576119d16153cb565b60200260200101516060018181525050611a2f565b818161ffff16815181106119fc576119fc6153cb565b602002602001015160e00151828261ffff1681518110611a1e57611a1e6153cb565b602002602001015160600181815250505b818161ffff1681518110611a4557611a456153cb565b60200260200101516060015184611a5c9190615507565b9350600101611445565b50818311611a75576000611a7f565b611a7f828461551a565b95945050505050565b6001546000906501000000000090046001600160a01b03163314611ae45760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b6001600160a01b03831660009081526005602052604090205461ffff16611b4d5760405162461bcd60e51b815260206004820152600c60248201527f57726f6e672077616c6c657400000000000000000000000000000000000000006044820152606401610525565b6001600160a01b038316600090815260056020908152604080832061ffff86168452600201909152902060010154611bc75760405162461bcd60e51b815260206004820152601360248201527f57726f6e67206465706f73697420696e646578000000000000000000000000006044820152606401610525565b506001600160a01b038216600090815260056020908152604080832061ffff851684526002019091529020600401805460ff600160401b808304821615810268ff00000000000000001990931692909217928390559104165b92915050565b6001546501000000000090046001600160a01b03163314611c7f5760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b600154610100900460ff168015611c9e575060015462010000900460ff165b8015611cb357506001546301000000900460ff165b611cff5760405162461bcd60e51b815260206004820152600c60248201527f4e656564203320766f74657300000000000000000000000000000000000000006044820152606401610525565b600154610100900460ff168015611d1e575060015462010000900460ff165b8015611d3357506001546301000000900460ff165b15611d815747811115611d4557600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611d72573d6000803e3d6000fd5b506001805463ffffff00191690555b50565b600154600090819081906501000000000090046001600160a01b03163314611de45760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b876001600160a01b0316896001600160a01b031603611e455760405162461bcd60e51b815260206004820152601a60248201527f57616c6c65742063616e6e6f74206265207265666572726572210000000000006044820152606401610525565b6003546040516337bde4df60e11b81526001600160a01b038b811660048301526000921690636f7bc9be9060240160e0604051808303816000875af1158015611e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb69190615582565b5163ffffffff1611611f0a5760405162461bcd60e51b815260206004820152601b60248201527f4e6f20726566657272657220666f756e6420696e2073797374656d00000000006044820152606401610525565b6003546040516337bde4df60e11b81526001600160a01b038a811660048301526000921690636f7bc9be9060240160e0604051808303816000875af1158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7b9190615582565b5163ffffffff16111561206c576003546040516337bde4df60e11b81526001600160a01b038a8116600483015290911690636f7bc9be9060240160e0604051808303816000875af1158015611fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff89190615582565b602001516001600160a01b0316896001600160a01b03161461206c5760405162461bcd60e51b815260206004820152602760248201527f5265666572726572206d69736d6174636820666f72206578697374696e672069604482015266373b32b9ba37b960c91b6064820152608401610525565b60006120cb8c8c8c8c60405180608001604052808e63ffffffff1663ffffffff1681526020018d63ffffffff1663ffffffff1681526020018c63ffffffff1663ffffffff1681526020018b63ffffffff1663ffffffff16815250613a31565b989c9a9b50979998505050505050505050565b60008080336001600160a01b0385160361213a5760405162461bcd60e51b815260206004820181905260248201527f596f752063616e6e6f7420626520796f7572206f776e207265666572726572216044820152606401610525565b6003546040516337bde4df60e11b81526001600160a01b0386811660048301526000921690636f7bc9be9060240160e0604051808303816000875af1158015612187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ab9190615582565b5163ffffffff16116121ff5760405162461bcd60e51b815260206004820152601b60248201527f4e6f20726566657272657220666f756e6420696e2073797374656d00000000006044820152606401610525565b6003546040516337bde4df60e11b81523360048201526000916001600160a01b031690636f7bc9be9060240160e0604051808303816000875af115801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226e9190615582565b5163ffffffff16111561235d576003546040516337bde4df60e11b81523360048201526001600160a01b0390911690636f7bc9be9060240160e0604051808303816000875af11580156122c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e99190615582565b602001516001600160a01b0316846001600160a01b03161461235d5760405162461bcd60e51b815260206004820152602760248201527f5265666572726572206d69736d6174636820666f72206578697374696e672069604482015266373b32b9ba37b960c91b6064820152608401610525565b6000612421600260009054906101000a90046001600160a01b03166001600160a01b031663fdaad9136040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d991906154de565b6123ec906001600160801b03163461551a565b6040805160808101825263ffffffff421681526000602082018190529181018290526060810191909152889088903390613a31565b9050600260009054906101000a90046001600160a01b03166001600160a01b031663fdaad9136040518163ffffffff1660e01b8152600401602060405180830381865afa158015612476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249a91906154de565b6001600160801b03166004546124b09190615507565b600455339690945092505050565b6001546000906501000000000090046001600160a01b0316331461251a5760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b506001805464ffffffffff19169055600090565b6001546000906501000000000090046001600160a01b0316331461258a5760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b506002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091555b919050565b730ef1380a6114ae398f163fb43d90fdc3bc1cf422600080826125e0856006615557565b604051600081818185875af1925050503d806000811461261c576040519150601f19603f3d011682016040523d82523d6000602084013e612621565b606091505b5091509150816126985760405162461bcd60e51b8152602060048201526024808201527f4665652066726f6d2063757272656e74206465706f736974206973206e6f742060448201527f73656e74000000000000000000000000000000000000000000000000000000006064820152608401610525565b50505050565b6001546000906501000000000090046001600160a01b031633146126fa5760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b506001805460ff19168117815590565b6001546000906501000000000090046001600160a01b031633146127665760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216918217905590565b60025460405163dbac26e960e01b8152336004820152606091829182918291829182916001600160a01b039091169063dbac26e990602401602060405180830381865afa1580156127eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280f91906154c3565b1561281957600080fd5b865167ffffffffffffffff81111561283357612833614c2e565b60405190808252806020026020018201604052801561285c578160200160208202803683370190505b509550865167ffffffffffffffff81111561287957612879614c2e565b6040519080825280602002602001820160405280156128a2578160200160208202803683370190505b509450865167ffffffffffffffff8111156128bf576128bf614c2e565b6040519080825280602002602001820160405280156128e8578160200160208202803683370190505b509350865167ffffffffffffffff81111561290557612905614c2e565b60405190808252806020026020018201604052801561292e578160200160208202803683370190505b509250865167ffffffffffffffff81111561294b5761294b614c2e565b604051908082528060200260200182016040528015612974578160200160208202803683370190505b509150865167ffffffffffffffff81111561299157612991614c2e565b6040519080825280602002602001820160405280156129ba578160200160208202803683370190505b50905060005b87518161ffff161015612d6d576000600560008b6001600160a01b03166001600160a01b0316815260200190815260200160002060020160008a8461ffff1681518110612a0f57612a0f6153cb565b602002602001015161ffff1661ffff168152602001908152602001600020600101541115612d5b57600560008a6001600160a01b03166001600160a01b031681526020019081526020016000206002016000898361ffff1681518110612a7757612a776153cb565b602002602001015161ffff1661ffff16815260200190815260200160002060000160009054906101000a900460ff16878261ffff1681518110612abc57612abc6153cb565b602002602001019060ff16908160ff1681525050600560008a6001600160a01b03166001600160a01b031681526020019081526020016000206002016000898361ffff1681518110612b1057612b106153cb565b602002602001015161ffff1661ffff16815260200190815260200160002060040160009054906101000a900463ffffffff16868261ffff1681518110612b5857612b586153cb565b602002602001019063ffffffff16908163ffffffff1681525050600560008a6001600160a01b03166001600160a01b031681526020019081526020016000206002016000898361ffff1681518110612bb257612bb26153cb565b602002602001015161ffff1661ffff16815260200190815260200160002060010154858261ffff1681518110612bea57612bea6153cb565b602002602001018181525050600560008a6001600160a01b03166001600160a01b031681526020019081526020016000206002016000898361ffff1681518110612c3657612c366153cb565b602002602001015161ffff1661ffff16815260200190815260200160002060020154848261ffff1681518110612c6e57612c6e6153cb565b602002602001018181525050600560008a6001600160a01b03166001600160a01b031681526020019081526020016000206002016000898361ffff1681518110612cba57612cba6153cb565b602002602001015161ffff1661ffff16815260200190815260200160002060040160089054906101000a900460ff16828261ffff1681518110612cff57612cff6153cb565b602002602001019015159081151581525050612d3889898361ffff1681518110612d2b57612d2b6153cb565b6020026020010151612efe565b838261ffff1681518110612d4e57612d4e6153cb565b6020026020010181815250505b80612d65816154a2565b9150506129c0565b509295509295509295565b6001546501000000000090046001600160a01b03163314612dd15760405162461bcd60e51b8152602060048201526013602482015272139bc81cdd59999a58da595b9d081c9a59da1d606a1b6044820152606401610525565b6001600160a01b038116612de457600080fd5b600180546001600160a01b0390921665010000000000027fffffffffffffff0000000000000000000000000000000000000000ffffffffff909216919091179055565b60007fffffffffffffffffffffffffde315239d97a9e0f41768b94d9cd419d72eb76c63301612e6c57506001805461ff00191661010090811791829055900460ff1690565b7fffffffffffffffffffffffffb4f4baabeb4e6720ac6c60c1915e7c90549d333e3301612eb157506001805462ff000019166201000090811791829055900460ff1690565b7fffffffffffffffffffffffff4503530aefa4b4d9c462e1d60cab29c66e3815ea3301612ef857506001805463ff0000001916630100000090811791829055900460ff1690565b50600090565b600254604080516367b0c11560e01b815290516000926001600160a01b0316916367b0c1159160048083019260209291908290030181865afa158015612f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6c91906154de565b6001600160a01b038416600090815260056020818152604080842061ffff881685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e0830152600601546101008201526001600160801b03919091169061302690613972565b1061330157600254604080516367b0c11560e01b815290516064926001600160a01b0316916367b0c1159160048083019260209291908290030181865afa158015613075573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309991906154de565b6001600160a01b038516600090815260056020818152604080842061ffff891685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e0830152600601546101008201526001600160801b03919091169061315390613972565b61315d9190615543565b6001600160a01b038516600090815260056020818152604080842061ffff891685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e08301526006015461010082015261320a90613972565b613214919061551a565b600280546001600160a01b03878116600090815260056020908152604080832061ffff8b16845290950190528390205492516374795f2960e11b815260ff9093166004840152169063e8f2be529060240160a060405180830381865afa158015613282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a691906153e1565b6020908101516001600160a01b038716600090815260058352604080822061ffff8916835260020190935291909120600601546132e69160ff1690615557565b6132f09190615557565b6132fa919061556e565b9050611c20565b50600092915050565b600260005403613346576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60008080805b6001600160a01b03851660009081526005602052604090205461ffff908116908216101561395157600260009054906101000a90046001600160a01b03166001600160a01b03166367b0c1156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f291906154de565b6001600160a01b038616600090815260056020818152604080842061ffff871685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e0830152600601546101008201526001600160801b0391909116906134ac90613972565b10156134b9576000613788565b600254604080516367b0c11560e01b815290516064926001600160a01b0316916367b0c1159160048083019260209291908290030181865afa158015613503573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352791906154de565b6001600160a01b038716600090815260056020818152604080842061ffff881685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e0830152600601546101008201526001600160801b0391909116906135e190613972565b6135eb9190615543565b6001600160a01b038716600090815260056020818152604080842061ffff881685526002908101835293819020815161012081018352815460ff9081168252600183015494820194909452948101549185019190915260038101546060850152600481015463ffffffff808216608087015264010000000082041660a0860152600160401b9004909116151560c08401529081015460e08301526006015461010082015261369890613972565b6136a2919061551a565b600280546001600160a01b03898116600090815260056020908152604080832061ffff8a16845290950190528390205492516374795f2960e11b815260ff9093166004840152169063e8f2be529060240160a060405180830381865afa158015613710573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373491906153e1565b6020908101516001600160a01b038916600090815260058352604080822061ffff8816835260020190935291909120600601546137749160ff1690615557565b61377e9190615557565b613788919061556e565b6001600160a01b038616600090815260056020818152604080842061ffff8716855260029081019092529092209081019290925501546137c89083615507565b6001600160a01b038616600090815260056020908152604080832061ffff86168452600201909152902060040154909250600160401b900460ff168061384a57506001600160a01b038516600090815260056020908152604080832061ffff851684526002019091529020600401544264010000000090910463ffffffff1611155b156138d9576001600160a01b038516600090815260056020818152604080842061ffff8616855260020190915290912060048101805468ff00000000000000001916600160401b17905560068101549101546138a69190615507565b6001600160a01b038616600090815260056020908152604080832061ffff8616845260020190915290206003015561390f565b6001600160a01b038516600090815260056020818152604080842061ffff86168552600201909152909120908101546003909101555b6001600160a01b038516600090815260056020908152604080832061ffff851684526002019091529020600301546139479084615507565b9250600101613353565b5080821161396057600061396a565b61396a818361551a565b949350505050565b60025481516040516374795f2960e11b815260ff90911660048201526000916001600160a01b03169063e8f2be529060240160a060405180830381865afa1580156139c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e591906153e1565b6080015163ffffffff16826080015163ffffffff168360a0015163ffffffff164210613a1b578360a0015163ffffffff16613a1d565b425b613a27919061551a565b611c20919061556e565b60006001600160a01b038316331480613a5d57506001546501000000000090046001600160a01b031633145b613aa95760405162461bcd60e51b815260206004820152600960248201527f4e6f2061636365737300000000000000000000000000000000000000000000006044820152606401610525565b6002546040516374795f2960e11b815260ff8716600482015287916001600160a01b03169063e8f2be529060240160a060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1891906153e1565b606001511515600003613b6d5760405162461bcd60e51b815260206004820152601960248201527f5468697320746172696666206973207475726e6564206f6666000000000000006044820152606401610525565b86156147a8576003546040516337bde4df60e11b81526001600160a01b0386811660048301526000921690636f7bc9be9060240160e0604051808303816000875af1158015613bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be49190615582565b805190915063ffffffff16600003613c8a576003546040517faa6773540000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529091169063aa6773549060440160e0604051808303816000875af1158015613c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c879190615582565b90505b805160009063ffffffff1615801590613ca9575060a082015115156001145b8015613cb6575060ff8816155b825190915063ffffffff1615801590613cd5575060a082015115156001145b8015613ce2575060ff8816155b15613d2f5760405162461bcd60e51b815260206004820152601660248201527f39302064617973206465706f73697473206578697374000000000000000000006044820152606401610525565b600260009054906101000a90046001600160a01b03166001600160a01b031663e1e158a56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da691906154de565b6001600160801b0316891015613dfe5760405162461bcd60e51b815260206004820152601860248201527f4d696e696d616c206465706f73697420726571756972656400000000000000006044820152606401610525565b600260009054906101000a90046001600160a01b03166001600160a01b031663dd5967c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7591906154de565b6001600160801b031689111580613f175750600260009054906101000a90046001600160a01b03166001600160a01b031663c34c53f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efe91906154de565b6001600160801b03168911158015613f17575060ff8816155b613f635760405162461bcd60e51b815260206004820152601760248201527f4465706f736974206c696d6974206578636565646564210000000000000000006044820152606401610525565b6002546040516374795f2960e11b815260ff8a1660048201526001600160a01b039091169063e8f2be529060240160a060405180830381865afa158015613fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fd291906153e1565b604001518911156140255760405162461bcd60e51b815260206004820152601460248201527f4d6178206c696d697420666f72207461726966660000000000000000000000006044820152606401610525565b600154640100000000900460ff161561403d57600080fd5b6001805464ff000000001916640100000000179055600061405f60648b61556e565b905061406a816125bc565b600260009054906101000a90046001600160a01b03166001600160a01b031663a6c455cc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e191906154de565b6001600160801b03161561419657600254604080517fa6c455cc00000000000000000000000000000000000000000000000000000000815290516064926001600160a01b03169163a6c455cc9160048083019260209291908290030181865afa158015614152573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417691906154de565b614189906001600160801b031686615557565b614193919061556e565b93505b604080516101208101825260ff8b16808252602080830188905289015163ffffffff908116838501528984015181166060840152895116608083015260025483516374795f2960e11b815260048101929092529251919260a0808501936001600160a01b039092169263e8f2be5292602480830193928290030181865afa158015614225573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061424991906153e1565b5188516142569190615486565b63ffffffff168152600060208201526040018760036020908102919091015163ffffffff1682529081018690526001600160a01b0389166000908152600590915260408120805460028201929161ffff90911690826142b4836154a2565b825461ffff91821661010093840a908102908302199091161790925591168252602080830193909352604091820160009081208551815460ff91821660ff1990911617825594860151600182015592850151600284015560608501516003840155608085015160048401805460a088015160c08901511515600160401b0268ff00000000000000001963ffffffff9283166401000000000267ffffffffffffffff199094169290951691909117919091179290921691909117905560e085015160058401559301516006909101558a16810361438e575060015b600254604080517f7968a7c800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691637968a7c89160048083019260209291908290030181865afa1580156143f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144159190615616565b60ff16111561454e576000896001600160a01b03166064600260009054906101000a90046001600160a01b03166001600160a01b0316637968a7c86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561447f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a39190615616565b6144b09060ff168f615557565b6144ba919061556e565b604051600081818185875af1925050503d80600081146144f6576040519150601f19603f3d011682016040523d82523d6000602084013e6144fb565b606091505b505090508061454c5760405162461bcd60e51b815260206004820152600f60248201527f7061795f746f5f524546206661696c00000000000000000000000000000000006044820152606401610525565b505b6001805464ff00000000191690556003546040517fc25d361d0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018e90526044820188905283151560648301529091169063c25d361d90608401600060405180830381600087803b1580156145d257600080fd5b505af11580156145e6573d6000803e3d6000fd5b50506002546040805163aa26d0ed60e01b81529051600094506001600160a01b03909216925063aa26d0ed9160048083019260209291908290030181865afa158015614636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465a9190615633565b6001600160a01b0316146147a3576002546040516374795f2960e11b815260ff8c1660048201526147a3918a916001600160a01b039091169063e8f2be529060240160a060405180830381865afa1580156146b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146dd91906153e1565b6020015160ff166146ef60648961556e565b6146f99190615557565b6001600160801b03168960006020020151600260009054906101000a90046001600160a01b03166001600160a01b031663e8f2be528f60ff166040518263ffffffff1660e01b815260040161475091815260200190565b60a060405180830381865afa15801561476d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061479191906153e1565b518b5161479e9190615486565b6147f5565b505050505b60405160ff8716815281906001600160a01b038616907f06417103c5093d12990826b58599d5c19605dc971709b37d7df2b8ee67ff4e699060200160405180910390a39695505050505050565b6003546040516337bde4df60e11b81526001600160a01b0386811660048301526000921690636f7bc9be9060240160e0604051808303816000875af1158015614842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148669190615582565b805190915063ffffffff1615614c125760208101516001600160a01b03811615614c10576003546040516337bde4df60e11b81526001600160a01b0383811660048301526000921690636f7bc9be9060240160e0604051808303816000875af11580156148d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148fb9190615582565b9050600060058260c00151600881111561491757614917615650565b60ff1611614929578160c0015161492c565b60055b6002549091506001600160a01b031663fb2391fc82600881111561495257614952615650565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260ff9091166004820152602401602060405180830381865afa1580156149a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149cc9190615616565b60ff1615614c0d576002546040805163aa26d0ed60e01b815290516000926001600160a01b03169163aa26d0ed9160048083019260209291908290030181865afa158015614a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a429190615633565b6002546001600160a01b03918216916378f12f72918a918a9189916003911663fb2391fc896008811115614a7857614a78615650565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260ff9091166004820152602401602060405180830381865afa158015614ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614af29190615616565b60ff1660648f614b02919061556e565b614b0c9190615557565b614b16919061556e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815263ffffffff94851660048201529290931660248301526001600160a01b031660448201526001600160801b0390911660648201526084016020604051808303816000875af1158015614b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bbc91906154c3565b905080614c0b5760405162461bcd60e51b815260206004820152601160248201527f426f6e7573206e6f7420616363727565640000000000000000000000000000006044820152606401610525565b505b50505b505b5050505050565b6001600160a01b0381168114611d8157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715614c6757614c67614c2e565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c9657614c96614c2e565b604052919050565b600067ffffffffffffffff821115614cb857614cb8614c2e565b5060051b60200190565b61ffff81168114611d8157600080fd5b600082601f830112614ce357600080fd5b8135614cf6614cf182614c9e565b614c6d565b8082825260208201915060208360051b860101925085831115614d1857600080fd5b602085015b83811015614d3e578035614d3081614cc2565b835260209283019201614d1d565b5095945050505050565b600080600060608486031215614d5d57600080fd5b8335614d6881614c19565b9250602084013567ffffffffffffffff811115614d8457600080fd5b614d9086828701614cd2565b9250506040840135614da181614c19565b809150509250925092565b600060208284031215614dbe57600080fd5b8135614dc981614c19565b9392505050565b600081518084526020840193506020830160005b82811015614e0857815163ffffffff16865260209586019590910190600101614de4565b5093949350505050565b600081518084526020840193506020830160005b82811015614e08578151865260209586019590910190600101614e26565b600081518084526020840193506020830160005b82811015614e085781511515865260209586019590910190600101614e58565b60c08082528751908201819052600090602089019060e0840190835b81811015614eb557835160ff16835260209384019390920191600101614e94565b50508381036020850152614ec9818a614dd0565b9150508281036040840152614ede8188614e12565b90508281036060840152614ef28187614e12565b90508281036080840152614f068186614e12565b905082810360a0840152614f1a8185614e44565b9998505050505050505050565b60008060408385031215614f3a57600080fd5b8235614f4581614c19565b91506020830135614f5581614cc2565b809150509250929050565b600060208284031215614f7257600080fd5b5035919050565b60ff81168114611d8157600080fd5b63ffffffff81168114611d8157600080fd5b600080600080600080600080610100898b031215614fb757600080fd5b883597506020890135614fc981614f79565b96506040890135614fd981614c19565b95506060890135614fe981614c19565b94506080890135614ff981614f88565b935060a089013561500981614f88565b925060c089013561501981614f88565b915060e089013561502981614f88565b809150509295985092959890939650565b6000806040838503121561504d57600080fd5b823561505881614f79565b91506020830135614f5581614c19565b6000806040838503121561507b57600080fd5b823561508681614c19565b9150602083013567ffffffffffffffff8111156150a257600080fd5b6150ae85828601614cd2565b9150509250929050565b600082601f8301126150c957600080fd5b81516150d7614cf182614c9e565b8082825260208201915060208360051b8601019250858311156150f957600080fd5b602085015b83811015614d3e57805161511181614f79565b8352602092830192016150fe565b600082601f83011261513057600080fd5b815161513e614cf182614c9e565b8082825260208201915060208360051b86010192508583111561516057600080fd5b602085015b83811015614d3e57805161517881614f88565b835260209283019201615165565b600082601f83011261519757600080fd5b81516151a5614cf182614c9e565b8082825260208201915060208360051b8601019250858311156151c757600080fd5b602085015b83811015614d3e5780518352602092830192016151cc565b805180151581146125b757600080fd5b600082601f83011261520557600080fd5b8151615213614cf182614c9e565b8082825260208201915060208360051b86010192508583111561523557600080fd5b602085015b83811015614d3e5761524b816151e4565b83526020928301920161523a565b60008060008060008060c0878903121561527257600080fd5b865167ffffffffffffffff81111561528957600080fd5b61529589828a016150b8565b965050602087015167ffffffffffffffff8111156152b257600080fd5b6152be89828a0161511f565b955050604087015167ffffffffffffffff8111156152db57600080fd5b6152e789828a01615186565b945050606087015167ffffffffffffffff81111561530457600080fd5b61531089828a01615186565b935050608087015167ffffffffffffffff81111561532d57600080fd5b61533989828a01615186565b92505060a087015167ffffffffffffffff81111561535657600080fd5b61536289828a016151f4565b9150509295509295509295565b6000604082016001600160a01b03851683526040602084015280845180835260608501915060208601925060005b818110156153bf57835161ffff1683526020938401939092019160010161539d565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b600060a08284031280156153f457600080fd5b5060405160a0810167ffffffffffffffff8111828210171561541857615418614c2e565b604052825161542681614f88565b8152602083015161543681614f79565b602082015260408381015190820152615451606084016151e4565b6060820152608083015161546481614f88565b60808201529392505050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190811115611c2057611c20615470565b600061ffff821661ffff81036154ba576154ba615470565b60010192915050565b6000602082840312156154d557600080fd5b614dc9826151e4565b6000602082840312156154f057600080fd5b81516001600160801b0381168114614dc957600080fd5b80820180821115611c2057611c20615470565b81810381811115611c2057611c20615470565b634e487b7160e01b600052601260045260246000fd5b6000826155525761555261552d565b500690565b8082028115828204841417611c2057611c20615470565b60008261557d5761557d61552d565b500490565b600060e082840312801561559557600080fd5b5060006155a0614c44565b83516155ab81614f88565b815260208401516155bb81614c19565b602082015260408401516155ce81614cc2565b604082015260608481015190820152608080850151908201526155f360a085016151e4565b60a082015260c084015160098110615609578283fd5b60c0820152949350505050565b60006020828403121561562857600080fd5b8151614dc981614f79565b60006020828403121561564557600080fd5b8151614dc981614c19565b634e487b7160e01b600052602160045260246000fdfea264697066735822122011e52bc290fdd2b8fb043b9303d3560a82137790762ab19c8fb391ea563baccc64736f6c634300081a0033