0x608060405234801561001057600080fd5b50610c3e806100206000396000f3fe60806040526004361061003f5760003560e01c80634c05e9f5146100445780635fac1b2e146100665780637eac3eba146100795780638b26dfa414610099575b600080fd5b34801561005057600080fd5b5061006461005f366004610959565b6100b9565b005b6100646100743660046109ee565b6102c0565b34801561008557600080fd5b50610064610094366004610856565b6103b5565b3480156100a557600080fd5b506100646100b4366004610959565b6104c7565b8382146100e15760405162461bcd60e51b81526004016100d890610b04565b60405180910390fd5b80156101c15760006101258484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506106e392505050565b6040516370a0823160e01b815233600482015290915081906001600160a01b038916906370a082319060240160206040518083038186803b15801561016957600080fd5b505afa15801561017d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a19190610a8f565b10156101bf5760405162461bcd60e51b81526004016100d890610b3b565b505b60005b848110156102b757866001600160a01b03166323b872dd338888858181106101ee576101ee610bcc565b90506020020160208101906102039190610815565b87878681811061021557610215610bcc565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401602060405180830381600087803b15801561026c57600080fd5b505af1158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a49190610a72565b50806102af81610b9b565b9150506101c4565b50505050505050565b8382146102df5760405162461bcd60e51b81526004016100d890610b04565b80156103485760006103238484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506106e392505050565b905033318111156103465760405162461bcd60e51b81526004016100d890610b3b565b505b60005b848110156103ad5761039b86868381811061036857610368610bcc565b905060200201602081019061037d9190610815565b85858481811061038f5761038f610bcc565b9050602002013561072f565b806103a581610b9b565b91505061034b565b505050505050565b86851480156103c357508683145b6103df5760405162461bcd60e51b81526004016100d890610b04565b60005b878110156104bb57896001600160a01b031663f242432a338b8b8581811061040c5761040c610bcc565b90506020020160208101906104219190610815565b8a8a8681811061043357610433610bcc565b9050602002013589898781811061044c5761044c610bcc565b9050602002013588886040518763ffffffff1660e01b815260040161047696959493929190610aa8565b600060405180830381600087803b15801561049057600080fd5b505af11580156104a4573d6000803e3d6000fd5b5050505080806104b390610b9b565b9150506103e2565b50505050505050505050565b8382146104e65760405162461bcd60e51b81526004016100d890610b04565b801561060d5760005b8281101561060b57866001600160a01b0316636352211e85858481811061051857610518610bcc565b905060200201356040518263ffffffff1660e01b815260040161053d91815260200190565b60206040518083038186803b15801561055557600080fd5b505afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d9190610839565b6001600160a01b0316336001600160a01b0316146105f95760405162461bcd60e51b8152602060048201526024808201527f596f7520617265206e6f7420746865206f776e6572206f66207468697320746f6044820152636b656e2160e01b60648201526084016100d8565b8061060381610b9b565b9150506104ef565b505b60005b848110156102b757866001600160a01b03166323b872dd3388888581811061063a5761063a610bcc565b905060200201602081019061064f9190610815565b87878681811061066157610661610bcc565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156106b857600080fd5b505af11580156106cc573d6000803e3d6000fd5b5050505080806106db90610b9b565b915050610610565b6000805b82518110156107295782818151811061070257610702610bcc565b6020026020010151826107159190610b83565b91508061072181610b9b565b9150506106e7565b50919050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461077c576040519150601f19603f3d011682016040523d82523d6000602084013e610781565b606091505b50509050806107c45760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016100d8565b505050565b60008083601f8401126107db57600080fd5b50813567ffffffffffffffff8111156107f357600080fd5b6020830191508360208260051b850101111561080e57600080fd5b9250929050565b60006020828403121561082757600080fd5b813561083281610be2565b9392505050565b60006020828403121561084b57600080fd5b815161083281610be2565b600080600080600080600080600060a08a8c03121561087457600080fd5b893561087f81610be2565b985060208a013567ffffffffffffffff8082111561089c57600080fd5b6108a88d838e016107c9565b909a50985060408c01359150808211156108c157600080fd5b6108cd8d838e016107c9565b909850965060608c01359150808211156108e657600080fd5b6108f28d838e016107c9565b909650945060808c013591508082111561090b57600080fd5b818c0191508c601f83011261091f57600080fd5b81358181111561092e57600080fd5b8d602082850101111561094057600080fd5b6020830194508093505050509295985092959850929598565b6000806000806000806080878903121561097257600080fd5b863561097d81610be2565b9550602087013567ffffffffffffffff8082111561099a57600080fd5b6109a68a838b016107c9565b909750955060408901359150808211156109bf57600080fd5b506109cc89828a016107c9565b90945092505060608701356109e081610bfa565b809150509295509295509295565b600080600080600060608688031215610a0657600080fd5b853567ffffffffffffffff80821115610a1e57600080fd5b610a2a89838a016107c9565b90975095506020880135915080821115610a4357600080fd5b50610a50888289016107c9565b9094509250506040860135610a6481610bfa565b809150509295509295909350565b600060208284031215610a8457600080fd5b815161083281610bfa565b600060208284031215610aa157600080fd5b5051919050565b6001600160a01b03878116825286166020820152604081018590526060810184905260a06080820181905281018290526000828460c0840137600060c0848401015260c0601f19601f8501168301019050979650505050505050565b60208082526017908201527f4172726179206c656e67746873206d69736d6174636821000000000000000000604082015260600190565b60208082526028908201527f6d73672e73656e64657220646f6573206e6f74206861766520656e6f7567682060408201526762616c616e63652160c01b606082015260800190565b60008219821115610b9657610b96610bb6565b500190565b6000600019821415610baf57610baf610bb6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610bf757600080fd5b50565b8015158114610bf757600080fdfea26469706673582212205f8e7f4f0c20f4f677ce21bd909e9b9e49536bb9a64d0f745cd3e0a2bf0e22a964736f6c63430008070033