0x6080604052600436106100fd575f3560e01c8063751039fc116100925780639fac68cb116100625780639fac68cb146102c1578063a9059cbb146102e0578063a9128ff0146102ff578063cc1776d31461031e578063dd62ed3e1461033e575f80fd5b8063751039fc146102475780638a8c523c1461025b5780638da5cb5b1461026f57806395d89b4114610295575f80fd5b8063313ce567116100cd578063313ce567146101bd5780634f7041a5146101de57806370a08231146101fd578063715018a614610231575f80fd5b806306fdde0314610108578063095ea7b31461014d57806318160ddd1461017c57806323b872dd1461019e575f80fd5b3661010457005b5f80fd5b348015610113575f80fd5b5060408051808201909152600b81526a534f4e204f46205045504560a81b60208201525b6040516101449190610ed1565b60405180910390f35b348015610158575f80fd5b5061016c610167366004610f1a565b610382565b6040519015158152602001610144565b348015610187575f80fd5b50610190610398565b604051908152602001610144565b3480156101a9575f80fd5b5061016c6101b8366004610f44565b6103b8565b3480156101c8575f80fd5b5060125b60405160ff9091168152602001610144565b3480156101e9575f80fd5b506003546101cc9062010000900460ff1681565b348015610208575f80fd5b50610190610217366004610f82565b6001600160a01b03165f9081526001602052604090205490565b34801561023c575f80fd5b50610245610409565b005b348015610252575f80fd5b50610245610483565b348015610266575f80fd5b506102456104c4565b34801561027a575f80fd5b505f546040516001600160a01b039091168152602001610144565b3480156102a0575f80fd5b50604080518082019091526004815263534f504560e01b6020820152610137565b3480156102cc575f80fd5b506102456102db366004610f9d565b610710565b3480156102eb575f80fd5b5061016c6102fa366004610f1a565b610790565b34801561030a575f80fd5b50610245610319366004610fe4565b61079c565b348015610329575f80fd5b506003546101cc906301000000900460ff1681565b348015610349575f80fd5b50610190610358366004611015565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f61038e338484610849565b5060015b92915050565b5f6103a56012600a611138565b6103b390633b9aca00611146565b905090565b5f6103c484848461096d565b6001600160a01b0384165f908152600260209081526040808320338085529252909120546103fe9186916103f990869061115d565b610849565b5060015b9392505050565b5f546001600160a01b0316331461043b5760405162461bcd60e51b815260040161043290611170565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104ac5760405162461bcd60e51b815260040161043290611170565b6104b4610398565b6005556104bf610398565b600655565b5f546001600160a01b031633146104ed5760405162461bcd60e51b815260040161043290611170565b60035460ff16156105325760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610432565b6003805460ff1916600117905543600a55600b54600780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004818101926020929091908290030181865afa15801561059d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c191906111a5565b6001600160a01b031663e6a439053060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610620573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064491906111a5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561068d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b191906111a5565b600880546001600160a01b0319166001600160a01b0392909216918217905561070e5760405162461bcd60e51b815260206004820152600f60248201526e139bc81c185a5c8818dc99585d1959608a1b6044820152606401610432565b565b5f546001600160a01b031633146107395760405162461bcd60e51b815260040161043290611170565b801561076857335f908152600160205260408120805484929061075d90849061115d565b9091555061078c9050565b335f90815260016020526040812080548492906107869084906111c0565b90915550505b5050565b5f61038e33848461096d565b5f546001600160a01b031633146107c55760405162461bcd60e51b815260040161043290611170565b60638260ff16111580156107dd575060638160ff1611155b6108175760405162461bcd60e51b815260206004820152600b60248201526a092dcecc2d8d2c840a8c2f60ab1b6044820152606401610432565b6003805463ffff000019166201000060ff9485160263ff00000019161763010000009290931691909102919091179055565b6001600160a01b0383166108ab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610432565b6001600160a01b03821661090c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610432565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f81116109aa5760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610432565b60035460ff16610a06575f546001600160a01b03848116911614610a065760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610432565b6008546001600160a01b03848116911614801590610a3257506008546001600160a01b03838116911614155b80610a5457506001600160a01b0383165f908152600c602052604090205460ff165b80610a7657506001600160a01b0382165f908152600c602052604090205460ff165b80610a885750600354610100900460ff165b15610a9d57610a98838383610c1d565b505050565b6008546001600160a01b0390811690831603610b1257600454305f9081526001602052604090205410610b12576003805461ff001916610100179055610aff610afa306001600160a01b03165f9081526001602052604090205490565b610cbc565b6003805461ff0019169055610b12610e0f565b6008546001600160a01b038481169116148015610b3d5750600b546001600160a01b03838116911614155b15610bf657600554811115610b865760405162461bcd60e51b815260206004820152600f60248201526e151e08185b5bdd5b9d081b1a5b5a5d608a1b6044820152606401610432565b60065481610ba8846001600160a01b03165f9081526001602052604090205490565b610bb291906111c0565b1115610bf65760405162461bcd60e51b815260206004820152601360248201527215d85b1b195d08185b5bdd5b9d081b1a5b5a5d606a1b6044820152606401610432565b600854610c1490849083906001600160a01b03868116911614610e4e565b9050610a988383835b6001600160a01b0383165f9081526001602052604081208054839290610c4490849061115d565b90915550506001600160a01b0382165f9081526001602052604081208054839290610c709084906111c0565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096091815260200190565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610cef57610cef6111d3565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a91906111a5565b81600181518110610d7d57610d7d6111d3565b6001600160a01b039283166020918202929092010152600754610da39130911684610849565b60075460095460405163791ac94760e01b81526001600160a01b039283169263791ac94792610ddf9287925f92889291169042906004016111e7565b5f604051808303815f87803b158015610df6575f80fd5b505af1925050508015610e07575060015b61078c575050565b471561070e576009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610e4b573d5f803e3d5ffd5b50565b5f600a544303610e5f575081610402565b5f82610e765760035462010000900460ff16610e84565b6003546301000000900460ff165b60ff169050805f03610e995783915050610402565b5f6064610ea68387611146565b610eb09190611257565b9050610ebd863083610c1d565b610ec7818661115d565b9695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610e4b575f80fd5b5f8060408385031215610f2b575f80fd5b8235610f3681610f06565b946020939093013593505050565b5f805f60608486031215610f56575f80fd5b8335610f6181610f06565b92506020840135610f7181610f06565b929592945050506040919091013590565b5f60208284031215610f92575f80fd5b813561040281610f06565b5f8060408385031215610fae575f80fd5b8235915060208301358015158114610fc4575f80fd5b809150509250929050565b803560ff81168114610fdf575f80fd5b919050565b5f8060408385031215610ff5575f80fd5b610ffe83610fcf565b915061100c60208401610fcf565b90509250929050565b5f8060408385031215611026575f80fd5b823561103181610f06565b91506020830135610fc481610f06565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156110905780850481111561107457611074611041565b600184161561108257908102905b60019390931c928002611059565b935093915050565b5f826110a657506001610392565b816110b257505f610392565b81600181146110c857600281146110d2576110ee565b6001915050610392565b60ff8411156110e3576110e3611041565b50506001821b610392565b5060208310610133831016604e8410600b8410161715611111575081810a610392565b61111d5f198484611055565b805f190482111561113057611130611041565b029392505050565b5f61040260ff841683611098565b808202811582820484141761039257610392611041565b8181038181111561039257610392611041565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156111b5575f80fd5b815161040281610f06565b8082018082111561039257610392611041565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156112375783516001600160a01b0316835260209384019390920191600101611210565b50506001600160a01b039590951660608401525050608001529392505050565b5f8261127157634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212201e8f71b565a7f7e59fccce437554b3c4c826c75ef3126e00f4a4ab60cf28ac0f64736f6c634300081a0033
0x60806040526003805463ffff00001916630f0a00001790556127106100266012600a61035a565b61003490633b9aca0061036f565b61003f90601961036f565b6100499190610386565b600455606461005a6012600a61035a565b61006890633b9aca0061036f565b61007390603261036f565b61007d9190610386565b600555606461008e6012600a61035a565b61009c90633b9aca0061036f565b6100a790603261036f565b6100b19190610386565b600655600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790553480156100e5575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506101326012600a61035a565b61014090633b9aca0061036f565b60015f6101545f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205561017e5f546001600160a01b031690565b600980546001600160a01b0319166001600160a01b0392909216919091179055305f908152600c602081905260408220805460ff19166001908117909155916101ce5f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556102065f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61023d6012600a61035a565b61024b90633b9aca0061036f565b60405190815260200160405180910390a36103a5565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102b05780850481111561029457610294610261565b60018416156102a257908102905b60019390931c928002610279565b935093915050565b5f826102c657506001610354565b816102d257505f610354565b81600181146102e857600281146102f25761030e565b6001915050610354565b60ff84111561030357610303610261565b50506001821b610354565b5060208310610133831016604e8410600b8410161715610331575081810a610354565b61033d5f198484610275565b805f190482111561035057610350610261565b0290505b92915050565b5f61036860ff8416836102b8565b9392505050565b808202811582820484141761035457610354610261565b5f826103a057634e487b7160e01b5f52601260045260245ffd5b500490565b6112ac806103b25f395ff3fe6080604052600436106100fd575f3560e01c8063751039fc116100925780639fac68cb116100625780639fac68cb146102c1578063a9059cbb146102e0578063a9128ff0146102ff578063cc1776d31461031e578063dd62ed3e1461033e575f80fd5b8063751039fc146102475780638a8c523c1461025b5780638da5cb5b1461026f57806395d89b4114610295575f80fd5b8063313ce567116100cd578063313ce567146101bd5780634f7041a5146101de57806370a08231146101fd578063715018a614610231575f80fd5b806306fdde0314610108578063095ea7b31461014d57806318160ddd1461017c57806323b872dd1461019e575f80fd5b3661010457005b5f80fd5b348015610113575f80fd5b5060408051808201909152600b81526a534f4e204f46205045504560a81b60208201525b6040516101449190610ed1565b60405180910390f35b348015610158575f80fd5b5061016c610167366004610f1a565b610382565b6040519015158152602001610144565b348015610187575f80fd5b50610190610398565b604051908152602001610144565b3480156101a9575f80fd5b5061016c6101b8366004610f44565b6103b8565b3480156101c8575f80fd5b5060125b60405160ff9091168152602001610144565b3480156101e9575f80fd5b506003546101cc9062010000900460ff1681565b348015610208575f80fd5b50610190610217366004610f82565b6001600160a01b03165f9081526001602052604090205490565b34801561023c575f80fd5b50610245610409565b005b348015610252575f80fd5b50610245610483565b348015610266575f80fd5b506102456104c4565b34801561027a575f80fd5b505f546040516001600160a01b039091168152602001610144565b3480156102a0575f80fd5b50604080518082019091526004815263534f504560e01b6020820152610137565b3480156102cc575f80fd5b506102456102db366004610f9d565b610710565b3480156102eb575f80fd5b5061016c6102fa366004610f1a565b610790565b34801561030a575f80fd5b50610245610319366004610fe4565b61079c565b348015610329575f80fd5b506003546101cc906301000000900460ff1681565b348015610349575f80fd5b50610190610358366004611015565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f61038e338484610849565b5060015b92915050565b5f6103a56012600a611138565b6103b390633b9aca00611146565b905090565b5f6103c484848461096d565b6001600160a01b0384165f908152600260209081526040808320338085529252909120546103fe9186916103f990869061115d565b610849565b5060015b9392505050565b5f546001600160a01b0316331461043b5760405162461bcd60e51b815260040161043290611170565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104ac5760405162461bcd60e51b815260040161043290611170565b6104b4610398565b6005556104bf610398565b600655565b5f546001600160a01b031633146104ed5760405162461bcd60e51b815260040161043290611170565b60035460ff16156105325760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610432565b6003805460ff1916600117905543600a55600b54600780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004818101926020929091908290030181865afa15801561059d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c191906111a5565b6001600160a01b031663e6a439053060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610620573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064491906111a5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561068d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b191906111a5565b600880546001600160a01b0319166001600160a01b0392909216918217905561070e5760405162461bcd60e51b815260206004820152600f60248201526e139bc81c185a5c8818dc99585d1959608a1b6044820152606401610432565b565b5f546001600160a01b031633146107395760405162461bcd60e51b815260040161043290611170565b801561076857335f908152600160205260408120805484929061075d90849061115d565b9091555061078c9050565b335f90815260016020526040812080548492906107869084906111c0565b90915550505b5050565b5f61038e33848461096d565b5f546001600160a01b031633146107c55760405162461bcd60e51b815260040161043290611170565b60638260ff16111580156107dd575060638160ff1611155b6108175760405162461bcd60e51b815260206004820152600b60248201526a092dcecc2d8d2c840a8c2f60ab1b6044820152606401610432565b6003805463ffff000019166201000060ff9485160263ff00000019161763010000009290931691909102919091179055565b6001600160a01b0383166108ab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610432565b6001600160a01b03821661090c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610432565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f81116109aa5760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610432565b60035460ff16610a06575f546001600160a01b03848116911614610a065760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610432565b6008546001600160a01b03848116911614801590610a3257506008546001600160a01b03838116911614155b80610a5457506001600160a01b0383165f908152600c602052604090205460ff165b80610a7657506001600160a01b0382165f908152600c602052604090205460ff165b80610a885750600354610100900460ff165b15610a9d57610a98838383610c1d565b505050565b6008546001600160a01b0390811690831603610b1257600454305f9081526001602052604090205410610b12576003805461ff001916610100179055610aff610afa306001600160a01b03165f9081526001602052604090205490565b610cbc565b6003805461ff0019169055610b12610e0f565b6008546001600160a01b038481169116148015610b3d5750600b546001600160a01b03838116911614155b15610bf657600554811115610b865760405162461bcd60e51b815260206004820152600f60248201526e151e08185b5bdd5b9d081b1a5b5a5d608a1b6044820152606401610432565b60065481610ba8846001600160a01b03165f9081526001602052604090205490565b610bb291906111c0565b1115610bf65760405162461bcd60e51b815260206004820152601360248201527215d85b1b195d08185b5bdd5b9d081b1a5b5a5d606a1b6044820152606401610432565b600854610c1490849083906001600160a01b03868116911614610e4e565b9050610a988383835b6001600160a01b0383165f9081526001602052604081208054839290610c4490849061115d565b90915550506001600160a01b0382165f9081526001602052604081208054839290610c709084906111c0565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096091815260200190565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610cef57610cef6111d3565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a91906111a5565b81600181518110610d7d57610d7d6111d3565b6001600160a01b039283166020918202929092010152600754610da39130911684610849565b60075460095460405163791ac94760e01b81526001600160a01b039283169263791ac94792610ddf9287925f92889291169042906004016111e7565b5f604051808303815f87803b158015610df6575f80fd5b505af1925050508015610e07575060015b61078c575050565b471561070e576009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610e4b573d5f803e3d5ffd5b50565b5f600a544303610e5f575081610402565b5f82610e765760035462010000900460ff16610e84565b6003546301000000900460ff165b60ff169050805f03610e995783915050610402565b5f6064610ea68387611146565b610eb09190611257565b9050610ebd863083610c1d565b610ec7818661115d565b9695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610e4b575f80fd5b5f8060408385031215610f2b575f80fd5b8235610f3681610f06565b946020939093013593505050565b5f805f60608486031215610f56575f80fd5b8335610f6181610f06565b92506020840135610f7181610f06565b929592945050506040919091013590565b5f60208284031215610f92575f80fd5b813561040281610f06565b5f8060408385031215610fae575f80fd5b8235915060208301358015158114610fc4575f80fd5b809150509250929050565b803560ff81168114610fdf575f80fd5b919050565b5f8060408385031215610ff5575f80fd5b610ffe83610fcf565b915061100c60208401610fcf565b90509250929050565b5f8060408385031215611026575f80fd5b823561103181610f06565b91506020830135610fc481610f06565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156110905780850481111561107457611074611041565b600184161561108257908102905b60019390931c928002611059565b935093915050565b5f826110a657506001610392565b816110b257505f610392565b81600181146110c857600281146110d2576110ee565b6001915050610392565b60ff8411156110e3576110e3611041565b50506001821b610392565b5060208310610133831016604e8410600b8410161715611111575081810a610392565b61111d5f198484611055565b805f190482111561113057611130611041565b029392505050565b5f61040260ff841683611098565b808202811582820484141761039257610392611041565b8181038181111561039257610392611041565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156111b5575f80fd5b815161040281610f06565b8082018082111561039257610392611041565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156112375783516001600160a01b0316835260209384019390920191600101611210565b50506001600160a01b039590951660608401525050608001529392505050565b5f8261127157634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212201e8f71b565a7f7e59fccce437554b3c4c826c75ef3126e00f4a4ab60cf28ac0f64736f6c634300081a0033