0x60806040523480156200001157600080fd5b5060405162001b0f38038062001b0f833981016040819052620000349162000247565b6200003f33620001f7565b6001600160a01b0386166200009b5760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064015b60405180910390fd5b612710851115620000fd5760405162461bcd60e51b815260206004820152602560248201527f5f666972737452656c65617365206d757374206265206c657373207468616e20604482015264031303030360dc1b606482015260840162000092565b600082116200015b5760405162461bcd60e51b8152602060048201526024808201527f5f746f74616c506572696f6473206d75737420626520677265617465722074686044820152630616e20360e41b606482015260840162000092565b60008111620001bb5760405162461bcd60e51b815260206004820152602560248201527f5f74696d65506572506572696f64206d75737420626520677265617465722074604482015264068616e20360dc1b606482015260840162000092565b600280546001600160a01b0319166001600160a01b039790971696909617909555600393909355600491909155600755600555600655620002a8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008060008060c087890312156200026157600080fd5b86516001600160a01b03811681146200027957600080fd5b6020880151604089015160608a015160808b015160a0909b0151939c929b509099909850965090945092505050565b61185780620002b86000396000f3fe608060405234801561001057600080fd5b506004361061015f5760003560e01c806306bcf02f1461016457806313d033c0146101795780631959a0021461019557806330cc7ae0146101d157806330f9bc27146101e457806331e8e0a2146101f757806336facd8d1461022a57806341fe36e91461023d57806348c54b9d146102465780634d302df01461024e5780635a3e449b14610261578063715018a61461027457806378e979251461027c5780637ad3def2146102855780637ba8c12d1461029857806381ca7eba146102ab57806383ed0dfa146102be5780638da5cb5b146102d1578063bb9c9fad146102e6578063bff1f9e1146102f9578063c8d2342b14610302578063cf0f0e9c14610315578063d37fcebd1461031e578063d81685fc14610331578063da5db74814610344578063f2fde38b1461034d578063f4d5b75514610360578063fc0c546a14610373578063fea708f614610386575b600080fd5b610177610172366004611434565b61038f565b005b61018260075481565b6040519081526020015b60405180910390f35b6101bc6101a3366004611469565b6001602081905260009182526040909120805491015482565b6040805192835260208301919091520161018c565b6101776101df366004611469565b610476565b6101776101f236600461155f565b61050b565b61021a610205366004611469565b600a6020526000908152604090205460ff1681565b604051901515815260200161018c565b610177610238366004611469565b61066f565b61018260085481565b610177610710565b61018261025c366004611469565b610b88565b61017761026f366004611469565b610ca9565b610177610d11565b61018260045481565b610177610293366004611469565b610d4c565b6101776102a636600461161e565b610e0c565b6101776102b9366004611469565b610eb2565b6101776102cc366004611434565b610fcb565b6102d9611078565b60405161018c9190611648565b6101776102f4366004611434565b611087565b61018260095481565b610177610310366004611434565b6110d5565b61018260065481565b61017761032c36600461161e565b61117f565b61017761033f366004611469565b6111ed565b61018260035481565b61017761035b366004611469565b61128b565b61017761036e366004611434565b61132b565b6002546102d9906001600160a01b031681565b61018260055481565b336000908152600a602052604090205460ff16806103bc5750336103b1611078565b6001600160a01b0316145b6103e15760405162461bcd60e51b81526004016103d89061165c565b60405180910390fd5b42811161043b5760405162461bcd60e51b815260206004820152602260248201527f53746172742074696d652073686f756c6420626520696e207468652066757475604482015261726560f01b60648201526084016103d8565b60048190556040518181527f191dde3e99ae398f28f0457d7346866a4fa04805ac0b57190b944935b5aa75509060200160405180910390a150565b336000908152600a602052604090205460ff16806104a3575033610498611078565b6001600160a01b0316145b6104bf5760405162461bcd60e51b81526004016103d89061165c565b6001600160a01b0381166000818152600160208190526040808320838155909101829055517f54d30f626a5e3247856d9b6d01d9f243288fe16273fa9d14698d07d82f0a56369190a250565b336000908152600a602052604090205460ff168061053857503361052d611078565b6001600160a01b0316145b6105545760405162461bcd60e51b81526004016103d89061165c565b80518251146105945760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206461746160a01b60448201526064016103d8565b60005b825181101561066a576000600160008584815181106105b8576105b8611691565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020905080600001546000036106395760016009600082825461060191906116bd565b9250508190555082828151811061061a5761061a611691565b60200260200101516008600082825461063391906116bd565b90915550505b82828151811061064b5761064b611691565b6020908102919091010151905580610662816116d6565b915050610597565b505050565b33610678611078565b6001600160a01b03161461069e5760405162461bcd60e51b81526004016103d8906116ef565b6001600160a01b0381166106c45760405162461bcd60e51b81526004016103d890611724565b6001600160a01b0381166000818152600a6020526040808220805460ff19166001179055517f15a94be709049b6d6ac9d90d9a1ee40b18b9071a625486fad8ab1d45cedcc24d9190a250565b336000818152600160208190526040909120908101548154116107835760405162461bcd60e51b815260206004820152602560248201527f416c6c20746f6b656e7320636c61696d6564206f72206e6f742077686974656c6044820152641a5cdd195960da1b60648201526084016103d8565b60045442116107d15760405162461bcd60e51b815260206004820152601a60248201527915995cdd1a5b99c81a185cdb89dd081cdd185c9d1959081e595d60321b60448201526064016103d8565b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610802903090600401611648565b602060405180830381865afa15801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190611755565b9050600060045442610855919061176e565b90506000612710600354856000015461086e9190611781565b6108789190611798565b90506007548210156109c6576001840154156108cf5760405162461bcd60e51b8152602060048201526016602482015275151bdad95b9cc8185b1c9958591e4818db185a5b595960521b60448201526064016103d8565b808460010160008282546108e391906116bd565b9091555050808310156109085760405162461bcd60e51b81526004016103d8906117ba565b60025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061093a90889085906004016117e6565b6020604051808303816000875af1158015610959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097d91906117ff565b50846001600160a01b03167fe42df0d9493dfd0d7f69902c895b94c190a53e8c27876a86f45e7c997d9d8f7c826040516109b991815260200190565b60405180910390a2610b81565b6007546109d3908361176e565b91506000600654836109e59190611798565b6109f09060016116bd565b9050600554811115610a0157506005545b8454600090610a1190849061176e565b905060008660010154846005548585610a2a9190611781565b610a349190611798565b610a3e91906116bd565b610a48919061176e565b905060008111610a8b5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016103d8565b80861015610aab5760405162461bcd60e51b81526004016103d8906117ba565b80876001016000828254610abf91906116bd565b909155505060025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610af6908b9085906004016117e6565b6020604051808303816000875af1158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3991906117ff565b50876001600160a01b03167fe42df0d9493dfd0d7f69902c895b94c190a53e8c27876a86f45e7c997d9d8f7c82604051610b7591815260200190565b60405180910390a25050505b5050505050565b6001600160a01b03811660009081526001602081905260408220908101548154111580610bb6575060045442105b15610bc45750600092915050565b600060045442610bd4919061176e565b905060006127106003548460000154610bed9190611781565b610bf79190611798565b9050600754821015610c1c578260010154600003610c1757949350505050565b610ca1565b600754610c29908361176e565b9150600060065483610c3b9190611798565b610c469060016116bd565b9050600554811115610c5757506005545b8354600090610c6790849061176e565b90508460010154836005548484610c7e9190611781565b610c889190611798565b610c9291906116bd565b610c9c919061176e565b955050505b505050919050565b33610cb2611078565b6001600160a01b031614610cd85760405162461bcd60e51b81526004016103d8906116ef565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610d0d573d6000803e3d6000fd5b5050565b33610d1a611078565b6001600160a01b031614610d405760405162461bcd60e51b81526004016103d8906116ef565b610d4a60006113e4565b565b336000908152600a602052604090205460ff1680610d79575033610d6e611078565b6001600160a01b0316145b610d955760405162461bcd60e51b81526004016103d89061165c565b6001600160a01b038116610dea5760405162461bcd60e51b815260206004820152601c60248201527b546f6b656e20616464726573732063616e6e6f74206265207a65726f60201b60448201526064016103d8565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600a602052604090205460ff1680610e39575033610e2e611078565b6001600160a01b0316145b610e555760405162461bcd60e51b81526004016103d89061165c565b6001600160a01b03821660008181526001602081815260408084208681559283019390935591518481529092917f9673b736d6d459e4ac9b04562cda5dc89af4d2805f1f001e4293cb844cd6fbd3910160405180910390a2505050565b33610ebb611078565b6001600160a01b031614610ee15760405162461bcd60e51b81526004016103d8906116ef565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610f10903090600401611648565b602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190611755565b9050816001600160a01b031663a9059cbb610f6a611078565b836040518363ffffffff1660e01b8152600401610f889291906117e6565b6020604051808303816000875af1158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066a91906117ff565b336000908152600a602052604090205460ff1680610ff8575033610fed611078565b6001600160a01b0316145b6110145760405162461bcd60e51b81526004016103d89061165c565b600081116110735760405162461bcd60e51b815260206004820152602660248201527f54696d652070657220706572696f64206d75737420626520677265617465722060448201526507468616e20360d41b60648201526084016103d8565b600655565b6000546001600160a01b031690565b336000908152600a602052604090205460ff16806110b45750336110a9611078565b6001600160a01b0316145b6110d05760405162461bcd60e51b81526004016103d89061165c565b600755565b336000908152600a602052604090205460ff16806111025750336110f7611078565b6001600160a01b0316145b61111e5760405162461bcd60e51b81526004016103d89061165c565b6000811161117a5760405162461bcd60e51b8152602060048201526024808201527f546f74616c20706572696f6473206d75737420626520677265617465722074686044820152630616e20360e41b60648201526084016103d8565b600555565b336000908152600a602052604090205460ff16806111ac5750336111a1611078565b6001600160a01b0316145b6111c85760405162461bcd60e51b81526004016103d89061165c565b6001600160a01b03909116600090815260016020819052604082209283559190910155565b336111f6611078565b6001600160a01b03161461121c5760405162461bcd60e51b81526004016103d8906116ef565b6001600160a01b0381166112425760405162461bcd60e51b81526004016103d890611724565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517fce4df0698b95faea0f80f49bc274673a82e9cb758eb9df7c2951b3ab6732350f9190a250565b33611294611078565b6001600160a01b0316146112ba5760405162461bcd60e51b81526004016103d8906116ef565b6001600160a01b03811661131f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d8565b611328816113e4565b50565b336000908152600a602052604090205460ff168061135857503361134d611078565b6001600160a01b0316145b6113745760405162461bcd60e51b81526004016103d89061165c565b6127108111156113df5760405162461bcd60e51b815260206004820152603060248201527f46697273742072656c65617365206d757374206265206c657373207468616e2060448201526f6f7220657175616c20746f203130302560801b60648201526084016103d8565b600355565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561144657600080fd5b5035919050565b80356001600160a01b038116811461146457600080fd5b919050565b60006020828403121561147b57600080fd5b6114848261144d565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156114c9576114c961148b565b604052919050565b60006001600160401b038211156114ea576114ea61148b565b5060051b60200190565b600082601f83011261150557600080fd5b8135602061151a611515836114d1565b6114a1565b82815260059290921b8401810191818101908684111561153957600080fd5b8286015b84811015611554578035835291830191830161153d565b509695505050505050565b6000806040838503121561157257600080fd5b82356001600160401b038082111561158957600080fd5b818501915085601f83011261159d57600080fd5b813560206115ad611515836114d1565b82815260059290921b840181019181810190898411156115cc57600080fd5b948201945b838610156115f1576115e28661144d565b825294820194908201906115d1565b9650508601359250508082111561160757600080fd5b50611614858286016114f4565b9150509250929050565b6000806040838503121561163157600080fd5b61163a8361144d565b946020939093013593505050565b6001600160a01b0391909116815260200190565b6020808252818101527f43616c6c6572206973206e6f742061206d616e61676572206f72206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156116d0576116d06116a7565b92915050565b6000600182016116e8576116e86116a7565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260179082015276496e76616c6964206d616e61676572206164647265737360481b604082015260600190565b60006020828403121561176757600080fd5b5051919050565b818103818111156116d0576116d06116a7565b80820281158282048414176116d0576116d06116a7565b6000826117b557634e487b7160e01b600052601260045260246000fd5b500490565b6020808252601290820152714e6f7420656e6f7567682062616c616e636560701b604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561181157600080fd5b8151801515811461148457600080fdfea26469706673582212203feda54686c4562f71ec1badee721814dfc007bd3a84c6e0e3be9cd8dddf59a764736f6c634300081400330000000000000000000000004ca14968dc36208edfb1f7d434e849f9a240b7f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006763bf4a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001