0x6080604052600436106100fd575f3560e01c8063751039fc116100925780639fac68cb116100625780639fac68cb146102c8578063a9059cbb146102e7578063a9128ff014610306578063cc1776d314610325578063dd62ed3e14610345575f80fd5b8063751039fc1461024d5780638a8c523c146102615780638da5cb5b1461027557806395d89b411461029b575f80fd5b8063313ce567116100cd578063313ce567146101c35780634f7041a5146101e457806370a0823114610203578063715018a614610237575f80fd5b806306fdde0314610108578063095ea7b31461015357806318160ddd1461018257806323b872dd146101a4575f80fd5b3661010457005b5f80fd5b348015610113575f80fd5b506040805180820190915260118152704f6273696469616e204552432d3139313960781b60208201525b60405161014a9190610ed8565b60405180910390f35b34801561015e575f80fd5b5061017261016d366004610f21565b610389565b604051901515815260200161014a565b34801561018d575f80fd5b5061019661039f565b60405190815260200161014a565b3480156101af575f80fd5b506101726101be366004610f4b565b6103bf565b3480156101ce575f80fd5b5060125b60405160ff909116815260200161014a565b3480156101ef575f80fd5b506003546101d29062010000900460ff1681565b34801561020e575f80fd5b5061019661021d366004610f89565b6001600160a01b03165f9081526001602052604090205490565b348015610242575f80fd5b5061024b610410565b005b348015610258575f80fd5b5061024b61048a565b34801561026c575f80fd5b5061024b6104cb565b348015610280575f80fd5b505f546040516001600160a01b03909116815260200161014a565b3480156102a6575f80fd5b5060408051808201909152600581526413d094d25160da1b602082015261013d565b3480156102d3575f80fd5b5061024b6102e2366004610fa4565b610717565b3480156102f2575f80fd5b50610172610301366004610f21565b610797565b348015610311575f80fd5b5061024b610320366004610feb565b6107a3565b348015610330575f80fd5b506003546101d2906301000000900460ff1681565b348015610350575f80fd5b5061019661035f36600461101c565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f610395338484610850565b5060015b92915050565b5f6103ac6012600a61113c565b6103ba90630124d86f61114a565b905090565b5f6103cb848484610974565b6001600160a01b0384165f90815260026020908152604080832033808552925290912054610405918691610400908690611161565b610850565b5060015b9392505050565b5f546001600160a01b031633146104425760405162461bcd60e51b815260040161043990611174565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104b35760405162461bcd60e51b815260040161043990611174565b6104bb61039f565b6005556104c661039f565b600655565b5f546001600160a01b031633146104f45760405162461bcd60e51b815260040161043990611174565b60035460ff16156105395760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610439565b6003805460ff1916600117905543600a55600b54600780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004818101926020929091908290030181865afa1580156105a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c891906111a9565b6001600160a01b031663e6a439053060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610627573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064b91906111a9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b891906111a9565b600880546001600160a01b0319166001600160a01b039290921691821790556107155760405162461bcd60e51b815260206004820152600f60248201526e139bc81c185a5c8818dc99585d1959608a1b6044820152606401610439565b565b5f546001600160a01b031633146107405760405162461bcd60e51b815260040161043990611174565b801561076f57335f9081526001602052604081208054849290610764908490611161565b909155506107939050565b335f908152600160205260408120805484929061078d9084906111c4565b90915550505b5050565b5f610395338484610974565b5f546001600160a01b031633146107cc5760405162461bcd60e51b815260040161043990611174565b60638260ff16111580156107e4575060638160ff1611155b61081e5760405162461bcd60e51b815260206004820152600b60248201526a092dcecc2d8d2c840a8c2f60ab1b6044820152606401610439565b6003805463ffff000019166201000060ff9485160263ff00000019161763010000009290931691909102919091179055565b6001600160a01b0383166108b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610439565b6001600160a01b0382166109135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610439565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f81116109b15760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610439565b60035460ff16610a0d575f546001600160a01b03848116911614610a0d5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610439565b6008546001600160a01b03848116911614801590610a3957506008546001600160a01b03838116911614155b80610a5b57506001600160a01b0383165f908152600c602052604090205460ff165b80610a7d57506001600160a01b0382165f908152600c602052604090205460ff165b80610a8f5750600354610100900460ff165b15610aa457610a9f838383610c24565b505050565b6008546001600160a01b0390811690831603610b1957600454305f9081526001602052604090205410610b19576003805461ff001916610100179055610b06610b01306001600160a01b03165f9081526001602052604090205490565b610cc3565b6003805461ff0019169055610b19610e16565b6008546001600160a01b038481169116148015610b445750600b546001600160a01b03838116911614155b15610bfd57600554811115610b8d5760405162461bcd60e51b815260206004820152600f60248201526e151e08185b5bdd5b9d081b1a5b5a5d608a1b6044820152606401610439565b60065481610baf846001600160a01b03165f9081526001602052604090205490565b610bb991906111c4565b1115610bfd5760405162461bcd60e51b815260206004820152601360248201527215d85b1b195d08185b5bdd5b9d081b1a5b5a5d606a1b6044820152606401610439565b600854610c1b90849083906001600160a01b03868116911614610e55565b9050610a9f8383835b6001600160a01b0383165f9081526001602052604081208054839290610c4b908490611161565b90915550506001600160a01b0382165f9081526001602052604081208054839290610c779084906111c4565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096791815260200190565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610cf657610cf66111d7565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7191906111a9565b81600181518110610d8457610d846111d7565b6001600160a01b039283166020918202929092010152600754610daa9130911684610850565b60075460095460405163791ac94760e01b81526001600160a01b039283169263791ac94792610de69287925f92889291169042906004016111eb565b5f604051808303815f87803b158015610dfd575f80fd5b505af1925050508015610e0e575060015b610793575050565b4715610715576009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610e52573d5f803e3d5ffd5b50565b5f600a544303610e66575081610409565b5f82610e7d5760035462010000900460ff16610e8b565b6003546301000000900460ff165b60ff169050805f03610ea05783915050610409565b5f6064610ead838761114a565b610eb7919061125c565b9050610ec4863083610c24565b610ece8186611161565b9695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610e52575f80fd5b5f8060408385031215610f32575f80fd5b8235610f3d81610f0d565b946020939093013593505050565b5f805f60608486031215610f5d575f80fd5b8335610f6881610f0d565b92506020840135610f7881610f0d565b929592945050506040919091013590565b5f60208284031215610f99575f80fd5b813561040981610f0d565b5f8060408385031215610fb5575f80fd5b8235915060208301358015158114610fcb575f80fd5b809150509250929050565b803560ff81168114610fe6575f80fd5b919050565b5f8060408385031215610ffc575f80fd5b61100583610fd6565b915061101360208401610fd6565b90509250929050565b5f806040838503121561102d575f80fd5b823561103881610f0d565b91506020830135610fcb81610f0d565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561109657815f190482111561107c5761107c611048565b8085161561108957918102915b93841c9390800290611061565b509250929050565b5f826110ac57506001610399565b816110b857505f610399565b81600181146110ce57600281146110d8576110f4565b6001915050610399565b60ff8411156110e9576110e9611048565b50506001821b610399565b5060208310610133831016604e8410600b8410161715611117575081810a610399565b611121838361105c565b805f190482111561113457611134611048565b029392505050565b5f61040960ff84168361109e565b808202811582820484141761039957610399611048565b8181038181111561039957610399611048565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156111b9575f80fd5b815161040981610f0d565b8082018082111561039957610399611048565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561123b5784516001600160a01b031683529383019391830191600101611216565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261127657634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220b45799cecf0220dc759982f7cbaef009b9e77739dc78d8f678a8fda2168ffb4a64736f6c63430008190033
0x60806040526003805463ffff00001916630a0a00001790556127106100266012600a610357565b61003490630124d86f61036c565b61003f90601961036c565b6100499190610383565b600455606461005a6012600a610357565b61006890630124d86f61036c565b61007390603261036c565b61007d9190610383565b600555606461008e6012600a610357565b61009c90630124d86f61036c565b6100a790603261036c565b6100b19190610383565b600655600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790553480156100e5575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506101326012600a610357565b61014090630124d86f61036c565b60015f6101545f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205561017e5f546001600160a01b031690565b600980546001600160a01b0319166001600160a01b0392909216919091179055305f908152600c602081905260408220805460ff19166001908117909155916101ce5f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556102065f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61023d6012600a610357565b61024b90630124d86f61036c565b60405190815260200160405180910390a36103a2565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156102af57815f190482111561029557610295610261565b808516156102a257918102915b93841c939080029061027a565b509250929050565b5f826102c557506001610351565b816102d157505f610351565b81600181146102e757600281146102f15761030d565b6001915050610351565b60ff84111561030257610302610261565b50506001821b610351565b5060208310610133831016604e8410600b8410161715610330575081810a610351565b61033a8383610275565b805f190482111561034d5761034d610261565b0290505b92915050565b5f61036560ff8416836102b7565b9392505050565b808202811582820484141761035157610351610261565b5f8261039d57634e487b7160e01b5f52601260045260245ffd5b500490565b6112b1806103af5f395ff3fe6080604052600436106100fd575f3560e01c8063751039fc116100925780639fac68cb116100625780639fac68cb146102c8578063a9059cbb146102e7578063a9128ff014610306578063cc1776d314610325578063dd62ed3e14610345575f80fd5b8063751039fc1461024d5780638a8c523c146102615780638da5cb5b1461027557806395d89b411461029b575f80fd5b8063313ce567116100cd578063313ce567146101c35780634f7041a5146101e457806370a0823114610203578063715018a614610237575f80fd5b806306fdde0314610108578063095ea7b31461015357806318160ddd1461018257806323b872dd146101a4575f80fd5b3661010457005b5f80fd5b348015610113575f80fd5b506040805180820190915260118152704f6273696469616e204552432d3139313960781b60208201525b60405161014a9190610ed8565b60405180910390f35b34801561015e575f80fd5b5061017261016d366004610f21565b610389565b604051901515815260200161014a565b34801561018d575f80fd5b5061019661039f565b60405190815260200161014a565b3480156101af575f80fd5b506101726101be366004610f4b565b6103bf565b3480156101ce575f80fd5b5060125b60405160ff909116815260200161014a565b3480156101ef575f80fd5b506003546101d29062010000900460ff1681565b34801561020e575f80fd5b5061019661021d366004610f89565b6001600160a01b03165f9081526001602052604090205490565b348015610242575f80fd5b5061024b610410565b005b348015610258575f80fd5b5061024b61048a565b34801561026c575f80fd5b5061024b6104cb565b348015610280575f80fd5b505f546040516001600160a01b03909116815260200161014a565b3480156102a6575f80fd5b5060408051808201909152600581526413d094d25160da1b602082015261013d565b3480156102d3575f80fd5b5061024b6102e2366004610fa4565b610717565b3480156102f2575f80fd5b50610172610301366004610f21565b610797565b348015610311575f80fd5b5061024b610320366004610feb565b6107a3565b348015610330575f80fd5b506003546101d2906301000000900460ff1681565b348015610350575f80fd5b5061019661035f36600461101c565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f610395338484610850565b5060015b92915050565b5f6103ac6012600a61113c565b6103ba90630124d86f61114a565b905090565b5f6103cb848484610974565b6001600160a01b0384165f90815260026020908152604080832033808552925290912054610405918691610400908690611161565b610850565b5060015b9392505050565b5f546001600160a01b031633146104425760405162461bcd60e51b815260040161043990611174565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104b35760405162461bcd60e51b815260040161043990611174565b6104bb61039f565b6005556104c661039f565b600655565b5f546001600160a01b031633146104f45760405162461bcd60e51b815260040161043990611174565b60035460ff16156105395760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610439565b6003805460ff1916600117905543600a55600b54600780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004818101926020929091908290030181865afa1580156105a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c891906111a9565b6001600160a01b031663e6a439053060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610627573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064b91906111a9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b891906111a9565b600880546001600160a01b0319166001600160a01b039290921691821790556107155760405162461bcd60e51b815260206004820152600f60248201526e139bc81c185a5c8818dc99585d1959608a1b6044820152606401610439565b565b5f546001600160a01b031633146107405760405162461bcd60e51b815260040161043990611174565b801561076f57335f9081526001602052604081208054849290610764908490611161565b909155506107939050565b335f908152600160205260408120805484929061078d9084906111c4565b90915550505b5050565b5f610395338484610974565b5f546001600160a01b031633146107cc5760405162461bcd60e51b815260040161043990611174565b60638260ff16111580156107e4575060638160ff1611155b61081e5760405162461bcd60e51b815260206004820152600b60248201526a092dcecc2d8d2c840a8c2f60ab1b6044820152606401610439565b6003805463ffff000019166201000060ff9485160263ff00000019161763010000009290931691909102919091179055565b6001600160a01b0383166108b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610439565b6001600160a01b0382166109135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610439565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f81116109b15760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610439565b60035460ff16610a0d575f546001600160a01b03848116911614610a0d5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610439565b6008546001600160a01b03848116911614801590610a3957506008546001600160a01b03838116911614155b80610a5b57506001600160a01b0383165f908152600c602052604090205460ff165b80610a7d57506001600160a01b0382165f908152600c602052604090205460ff165b80610a8f5750600354610100900460ff165b15610aa457610a9f838383610c24565b505050565b6008546001600160a01b0390811690831603610b1957600454305f9081526001602052604090205410610b19576003805461ff001916610100179055610b06610b01306001600160a01b03165f9081526001602052604090205490565b610cc3565b6003805461ff0019169055610b19610e16565b6008546001600160a01b038481169116148015610b445750600b546001600160a01b03838116911614155b15610bfd57600554811115610b8d5760405162461bcd60e51b815260206004820152600f60248201526e151e08185b5bdd5b9d081b1a5b5a5d608a1b6044820152606401610439565b60065481610baf846001600160a01b03165f9081526001602052604090205490565b610bb991906111c4565b1115610bfd5760405162461bcd60e51b815260206004820152601360248201527215d85b1b195d08185b5bdd5b9d081b1a5b5a5d606a1b6044820152606401610439565b600854610c1b90849083906001600160a01b03868116911614610e55565b9050610a9f8383835b6001600160a01b0383165f9081526001602052604081208054839290610c4b908490611161565b90915550506001600160a01b0382165f9081526001602052604081208054839290610c779084906111c4565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096791815260200190565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610cf657610cf66111d7565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7191906111a9565b81600181518110610d8457610d846111d7565b6001600160a01b039283166020918202929092010152600754610daa9130911684610850565b60075460095460405163791ac94760e01b81526001600160a01b039283169263791ac94792610de69287925f92889291169042906004016111eb565b5f604051808303815f87803b158015610dfd575f80fd5b505af1925050508015610e0e575060015b610793575050565b4715610715576009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610e52573d5f803e3d5ffd5b50565b5f600a544303610e66575081610409565b5f82610e7d5760035462010000900460ff16610e8b565b6003546301000000900460ff165b60ff169050805f03610ea05783915050610409565b5f6064610ead838761114a565b610eb7919061125c565b9050610ec4863083610c24565b610ece8186611161565b9695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610e52575f80fd5b5f8060408385031215610f32575f80fd5b8235610f3d81610f0d565b946020939093013593505050565b5f805f60608486031215610f5d575f80fd5b8335610f6881610f0d565b92506020840135610f7881610f0d565b929592945050506040919091013590565b5f60208284031215610f99575f80fd5b813561040981610f0d565b5f8060408385031215610fb5575f80fd5b8235915060208301358015158114610fcb575f80fd5b809150509250929050565b803560ff81168114610fe6575f80fd5b919050565b5f8060408385031215610ffc575f80fd5b61100583610fd6565b915061101360208401610fd6565b90509250929050565b5f806040838503121561102d575f80fd5b823561103881610f0d565b91506020830135610fcb81610f0d565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561109657815f190482111561107c5761107c611048565b8085161561108957918102915b93841c9390800290611061565b509250929050565b5f826110ac57506001610399565b816110b857505f610399565b81600181146110ce57600281146110d8576110f4565b6001915050610399565b60ff8411156110e9576110e9611048565b50506001821b610399565b5060208310610133831016604e8410600b8410161715611117575081810a610399565b611121838361105c565b805f190482111561113457611134611048565b029392505050565b5f61040960ff84168361109e565b808202811582820484141761039957610399611048565b8181038181111561039957610399611048565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156111b9575f80fd5b815161040981610f0d565b8082018082111561039957610399611048565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561123b5784516001600160a01b031683529383019391830191600101611216565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261127657634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220b45799cecf0220dc759982f7cbaef009b9e77739dc78d8f678a8fda2168ffb4a64736f6c63430008190033