0x61010060405234801561001157600080fd5b5060405161142638038061142683398101604081905261003091610116565b816001600160a01b03811661005f57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b610068816100aa565b506001600160a01b0394851660805292841660a05290831660c05282166000908152600160208190526040909120805460ff191690911790551660e05261017b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461011157600080fd5b919050565b600080600080600060a0868803121561012e57600080fd5b610137866100fa565b9450610145602087016100fa565b9350610153604087016100fa565b9250610161606087016100fa565b915061016f608087016100fa565b90509295509295909350565b60805160a05160c05160e0516111ee6102386000396000818161019c0152818161070b0152818161077301528181610a0001528181610c2a01528181610ce501528181610da00152610e620152600081816101ff01528181610557015281816105ce01528181610b800152610dcf01526000818160f4015281816104170152818161048e01528181610af20152610d14015260008181610138015281816102d70152818161034e01528181610a5c0152610c5901526111ee6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063894760691161008c578063cabb89d111610066578063cabb89d1146101fa578063cce9a16e14610221578063ce2292c114610234578063f2fde38b1461027457600080fd5b806389476069146101ce5780638da5cb5b146101e15780638e9a40d9146101f257600080fd5b80634d4b5cef116100c85780634d4b5cef146101645780636ea69d6214610197578063715018a6146101be578063817d58c9146101c657600080fd5b806306d4dd0e146100ef57806343f7a1da1461013357806345114ee51461015a575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101167f000000000000000000000000000000000000000000000000000000000000000081565b610162610287565b005b610187610172366004611040565b60016020526000908152604090205460ff1681565b604051901515815260200161012a565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6101626106c6565b6101626106da565b6101626101dc366004611040565b61081a565b6000546001600160a01b0316610116565b6101626109cf565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b61016261022f366004611070565b610f05565b6102676040518060400160405280601481526020017314995dd85c99131bd859195c931bd8dac813919560621b81525081565b60405161012a91906110a7565b610162610282366004611040565b610f69565b3360009081526001602052604090205460ff166102bf5760405162461bcd60e51b81526004016102b6906110f6565b60405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a919061113a565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61038d6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611153565b506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a919061113a565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6104cd6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561051a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053e9190611153565b506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca919061113a565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61060d6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561065a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067e9190611153565b5060408051848152602081018490529081018290527f722fe2f51a23a8eb9672a8819650394d4cbaff31d769a6e470a0259556796500906060015b60405180910390a1505050565b6106ce610fa7565b6106d86000610fd4565b565b3360009081526001602052604090205460ff166107095760405162461bcd60e51b81526004016102b6906110f6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661074f5760405162461bcd60e51b81526004016102b690611170565b6040516305ed2ab760e41b81526000600482018190526024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ed2ab7090606401600060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b5050604080516000808252602082018190528183015290517f811fc1648f0f3b1613046ef02f0f35cf63c2f3626199b82cc14cf47b1371c03b9350908190036060019150a1565b610822610fa7565b806001600160a01b03811663a9059cbb6108446000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac919061113a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156108f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091b9190611153565b506040516370a0823160e01b81523060048201527f5cb97b1cdeb21b16148aae525eae61484b91b5a0936609e51af0fcea3c90f9ca9083906001600160a01b038416906370a0823190602401602060405180830381865afa158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a8919061113a565b604080516001600160a01b0390931683526020830191909152015b60405180910390a15050565b3360009081526001602052604090205460ff166109fe5760405162461bcd60e51b81526004016102b6906110f6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a445760405162461bcd60e51b81526004016102b690611170565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acf919061113a565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d919061113a565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610beb919061113a565b905082158015610bf9575081155b8015610c03575080155b15610c0d57505050565b8215610cc85760405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc69190611153565b505b8115610d835760405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d819190611153565b505b8015610e3e5760405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3c9190611153565b505b6040516305ed2ab760e41b81526004810184905260248101839052604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ed2ab7090606401600060405180830381600087803b158015610eae57600080fd5b505af1158015610ec2573d6000803e3d6000fd5b505060408051868152602081018690529081018490527f811fc1648f0f3b1613046ef02f0f35cf63c2f3626199b82cc14cf47b1371c03b925060600190506106b9565b610f0d610fa7565b6001600160a01b038216600081815260016020908152604091829020805460ff19168515159081179091558251938452908301527f7f53fa2384f7c5123312e267426c009f1a7927fb976db021b0e0d3ea9d01502c91016109c3565b610f71610fa7565b6001600160a01b038116610f9b57604051631e4fbdf760e01b8152600060048201526024016102b6565b610fa481610fd4565b50565b6000546001600160a01b031633146106d85760405163118cdaa760e01b81523360048201526024016102b6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461103b57600080fd5b919050565b60006020828403121561105257600080fd5b61105b82611024565b9392505050565b8015158114610fa457600080fd5b6000806040838503121561108357600080fd5b61108c83611024565b9150602083013561109c81611062565b809150509250929050565b60006020808352835180602085015260005b818110156110d5578581018301518582016040015282016110b9565b506000604082860101526040601f19601f8301168501019250505092915050565b60208082526024908201527f5265776172644c6f616465724c6f636b3a2063616c6c6572206e6f7420616c6c6040820152631bddd95960e21b606082015260800190565b60006020828403121561114c57600080fd5b5051919050565b60006020828403121561116557600080fd5b815161105b81611062565b60208082526028908201527f5265776172644c6f616465724c6f636b3a20726577617264436f6e7472616374604082015267081b9bdd081cd95d60c21b60608201526080019056fea26469706673582212202137369910fec54a4c57033d3e12e6e0c64f57d4cefb1cd3382f98b5cd8438c464736f6c634300081900330000000000000000000000004ffe9cc172527df1e40d0b2efe1e9f05884a13da000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000095cb2dd19ad95dba033889c2b0965e6fe357309000000000000000000000000bdc8a57abc29106497d4209f8c687b4ebd193d61