0x608060405234801561001057600080fd5b50604051610fa4380380610fa483398101604081905261002f91610085565b600080546001600160a01b03199081163317909155600780546001600160a01b03949094169382169390931790925560085560018054909116732951b42a2ce3bf3929fd885e1989a1895f8b29a71790556100bf565b6000806040838503121561009857600080fd5b82516001600160a01b03811681146100af57600080fd5b6020939093015192949293505050565b610ed6806100ce6000396000f3fe608060405234801561001057600080fd5b50600436106100f15760003560e01c80630ed7e96a146100f657806314d8bbf114610139578063158ef93e1461014e57806316d0c7441461015b578063238ac933146101835780633b3e13ab146101a35780634451d89f146101b657806345d92998146101c957806349ade988146101e05780634d2cb1fb146101f3578063547d1864146102065780636f94aaf21461020f5780638cc0802514610218578063c6195d361461023b578063cf464cc91461024e578063e63ea40814610261578063ef5d9ae814610274578063f851a44014610294578063fda95f67146102a7575b600080fd5b610124610104366004610ca7565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b61014c610147366004610cd1565b6102ba565b005b600a546101249060ff1681565b61016e610169366004610ca7565b61072c565b60408051928352602083019190915201610130565b600154610196906001600160a01b031681565b6040516101309190610d4d565b61014c6101b1366004610d61565b610853565b600754610196906001600160a01b031681565b6101d260085481565b604051908152602001610130565b6101d26101ee366004610d7c565b61089f565b610124610201366004610ca7565b6108cb565b6101d260095481565b6101d260065481565b610124610226366004610d61565b60036020526000908152604090205460ff1681565b61014c610249366004610ca7565b610906565b61014c61025c366004610da8565b6109bc565b61014c61026f366004610dd2565b610a66565b6101d2610282366004610d61565b60046020526000908152604090205481565b600054610196906001600160a01b031681565b600554610196906001600160a01b031681565b6007546040516370a0823160e01b815233916000916001600160a01b03909116906370a08231906102ef903090600401610d4d565b602060405180830381865afa15801561030c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103309190610e0e565b6040516001600160601b0319606085811b821660208401526034830189905230901b1660548201529091506000906103cd90606801604051602081830303815290604052805190602001206040517b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b6020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b600154604080516020601f89018190048102820181019092528781529293506001600160a01b039091169161041f918491908990899081908401838280828437600092019190915250610b1292505050565b6001600160a01b03161461046c5760405162461bcd60e51b815260206004820152600f60248201526e77726f6e67207369676e617475726560881b60448201526064015b60405180910390fd5b6007546001600160a01b03166104b45760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b6044820152606401610463565b60006008541180156104c7575060085442115b61050f5760405162461bcd60e51b815260206004820152601960248201527810db185a5b481a185cc81b9bdd081cdd185c9d1959081e595d603a1b6044820152606401610463565b6001600160a01b0383166000908152600460205260409020548610156105685760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610463565b600554604051631debb35d60e31b81526000916001600160a01b03169063ef5d9ae890610599908790600401610d4d565b602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190610e0e565b6001600160a01b0385166000908152600460205260409020546105fd9089610e3d565b6106079190610e3d565b9050806009600082825461061b9190610e50565b9091555050808310156106655760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f7567682062616c616e636560701b6044820152606401610463565b6000831180156106755750600081115b15610723576001600160a01b0384166000908152600360209081526040808320805460ff1916600117905560049091529020546106b3908290610e50565b6001600160a01b038086166000908152600460205260409020919091556007546106df91168583610b91565b604080518881524260208201526001600160a01b038616917fe2fe74462b9510a5af56b58cd6e3202a70f8f59484dc9010849ebaef3036a526910160405180910390a25b50505050505050565b600554604051631debb35d60e31b8152600091829182916001600160a01b03169063ef5d9ae890610761908890600401610d4d565b602060405180830381865afa15801561077e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a29190610e0e565b6001600160a01b0386166000908152600460205260409020546107c59086610e3d565b6107cf9190610e3d565b600554604051631debb35d60e31b81529192506000916001600160a01b039091169063ef5d9ae890610805908990600401610d4d565b602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108469190610e0e565b9196919550909350505050565b6000546001600160a01b0316331461087d5760405162461bcd60e51b815260040161046390610e63565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600460205260408120546108c29084610e3d565b90505b92915050565b6001600160a01b03821660009081526004602052604081205481906108f09084610e3d565b11156108fe575060016108c5565b5060006108c5565b6000546001600160a01b031633146109305760405162461bcd60e51b815260040161046390610e63565b600a5460ff1661094857600a805460ff191660011790555b6001600160a01b0382161561097357600780546001600160a01b0319166001600160a01b0384161790555b801561097f5760088190555b7fcf2d15cf678e586ed8ca7d050b1bbb358918a2227864183c9a242813b76be43482826040516109b0929190610e87565b60405180910390a15050565b6000546001600160a01b031633146109e65760405162461bcd60e51b815260040161046390610e63565b6001600160a01b038216610a385760405162461bcd60e51b81526020600482015260196024820152785f6e657741646d696e206973207a65726f206164647265737360381b6044820152606401610463565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055565b6000546001600160a01b03163314610aae5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b6044820152606401610463565b610ac26001600160a01b0384168383610b91565b604080516001600160a01b038086168252841660208201529081018290527f29055b1ae71a39572a67d16aa7c083a649dd66865b77bd9ac38691bed47e95839060600160405180910390a1505050565b600080600080610b2185610bee565b6040805160008152602081018083528b905260ff8516918101919091526060810183905260808101829052929550909350915060019060a0016020604051602081039080840390855afa158015610b7c573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b610be983846001600160a01b031663a9059cbb8585604051602401610bb7929190610e87565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610c1d565b505050565b60008060008351604114610c0157600080fd5b5050506020810151604082015160609092015160001a92909190565b600080602060008451602086016000885af180610c40576040513d6000823e3d81fd5b50506000513d91508115610c58578060011415610c65565b6001600160a01b0384163b155b15610c855783604051635274afe760e01b81526004016104639190610d4d565b50505050565b80356001600160a01b0381168114610ca257600080fd5b919050565b60008060408385031215610cba57600080fd5b610cc383610c8b565b946020939093013593505050565b600080600060408486031215610ce657600080fd5b83359250602084013567ffffffffffffffff80821115610d0557600080fd5b818601915086601f830112610d1957600080fd5b813581811115610d2857600080fd5b876020828501011115610d3a57600080fd5b6020830194508093505050509250925092565b6001600160a01b0391909116815260200190565b600060208284031215610d7357600080fd5b6108c282610c8b565b60008060408385031215610d8f57600080fd5b82359150610d9f60208401610c8b565b90509250929050565b60008060408385031215610dbb57600080fd5b610dc483610c8b565b9150610d9f60208401610c8b565b600080600060608486031215610de757600080fd5b610df084610c8b565b9250610dfe60208501610c8b565b9150604084013590509250925092565b600060208284031215610e2057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108c5576108c5610e27565b808201808211156108c5576108c5610e27565b6020808252600a908201526937b7363c9030b236b4b760b11b604082015260600190565b6001600160a01b0392909216825260208201526040019056fea2646970667358221220ddd5c9482c4bb95cb3746e068af1e41b36dcdc8d252466d8fa7df4a7d0d028b264736f6c634300081800330000000000000000000000004ca14968dc36208edfb1f7d434e849f9a240b7f00000000000000000000000000000000000000000000000000000000000000001