60806040526007805460ff60b01b1916600160b01b1790553480156200002457600080fd5b50604080518082018252600a81526910dd5c985d194813919560b21b6020808301918252835180850190945260048452632c21aaa960e11b9084015281519192916200007391600091620000a4565b50805162000089906001906020840190620000a4565b5050600780546001600160a01b031916331790555062000187565b828054620000b2906200014a565b90600052602060002090601f016020900481019282620000d6576000855562000121565b82601f10620000f157805160ff191683800117855562000121565b8280016001018555821562000121579182015b828111156200012157825182559160200191906001019062000104565b506200012f92915062000133565b5090565b5b808211156200012f576000815560010162000134565b600181811c908216806200015f57607f821691505b602082108114156200018157634e487b7160e01b600052602260045260246000fd5b50919050565b6119b080620001976000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636c0360eb116100b8578063a22cb4651161007c578063a22cb46514610286578063b723b34e14610299578063b88d4fde146102ac578063c87b56dd146102bf578063e985e9c5146102d2578063eb699f221461030e57600080fd5b80636c0360eb1461023a57806370a08231146102425780637d55094d146102635780638da5cb5b1461026b57806395d89b411461027e57600080fd5b806323b872dd116100ff57806323b872dd146101da57806331f9c919146101ed57806342842e0e1461020157806355f804b3146102145780636352211e1461022757600080fd5b806301ffc9a71461013c57806306fdde0314610164578063081812fc14610179578063095ea7b3146101a457806318160ddd146101b9575b600080fd5b61014f61014a36600461132e565b610321565b60405190151581526020015b60405180910390f35b61016c610373565b60405161015b91906113a3565b61018c6101873660046113b6565b610405565b6040516001600160a01b03909116815260200161015b565b6101b76101b23660046113eb565b61049f565b005b600754600160a01b900461ffff1660405161ffff909116815260200161015b565b6101b76101e8366004611415565b6105b5565b60075461014f90600160b01b900460ff1681565b6101b761020f366004611415565b6105e6565b6101b76102223660046114f0565b610601565b61018c6102353660046113b6565b610642565b61016c6106b9565b610255610250366004611539565b610747565b60405190815260200161015b565b6101b76107ce565b60075461018c906001600160a01b031681565b61016c610819565b6101b7610294366004611554565b610828565b6101b76102a7366004611590565b6108ed565b6101b76102ba3660046115bc565b6109a9565b61016c6102cd3660046113b6565b6109e1565b61014f6102e0366004611638565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101b761031c366004611662565b610abc565b60006001600160e01b031982166380ac58cd60e01b148061035257506001600160e01b03198216635b5e139f60e01b145b8061036d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103829061171a565b80601f01602080910402602001604051908101604052809291908181526020018280546103ae9061171a565b80156103fb5780601f106103d0576101008083540402835291602001916103fb565b820191906000526020600020905b8154815290600101906020018083116103de57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166104835760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006104aa82610642565b9050806001600160a01b0316836001600160a01b031614156105185760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161047a565b336001600160a01b0382161480610534575061053481336102e0565b6105a65760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161047a565b6105b08383610bb4565b505050565b6105bf3382610c22565b6105db5760405162461bcd60e51b815260040161047a90611755565b6105b0838383610d19565b6105b0838383604051806020016040528060008152506109a9565b6007546001600160a01b0316331461062b5760405162461bcd60e51b815260040161047a906117a6565b805161063e90600690602084019061127c565b5050565b6000818152600260205260408120546001600160a01b03168061036d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161047a565b600680546106c69061171a565b80601f01602080910402602001604051908101604052809291908181526020018280546106f29061171a565b801561073f5780601f106107145761010080835404028352916020019161073f565b820191906000526020600020905b81548152906001019060200180831161072257829003601f168201915b505050505081565b60006001600160a01b0382166107b25760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161047a565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146107f85760405162461bcd60e51b815260040161047a906117a6565b6007805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6060600180546103829061171a565b6001600160a01b0382163314156108815760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161047a565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6007546001600160a01b031633146109175760405162461bcd60e51b815260040161047a906117a6565b600754600160b01b900460ff166109655760405162461bcd60e51b81526020600482015260126024820152714d696e74696e67206e6f742061637469766560701b604482015260640161047a565b61096f8183610eb9565b60078054600160a01b900461ffff1690601461098a836117df565b91906101000a81548161ffff021916908361ffff160217905550505050565b6109b33383610c22565b6109cf5760405162461bcd60e51b815260040161047a90611755565b6109db8484848461102f565b50505050565b6000818152600260205260409020546060906001600160a01b0316610a605760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161047a565b6000610a6a611062565b90506000815111610a8a5760405180602001604052806000815250610ab5565b80610a9484611071565b604051602001610aa5929190611801565b6040516020818303038152906040525b9392505050565b6007546001600160a01b03163314610ae65760405162461bcd60e51b815260040161047a906117a6565b600754600160b01b900460ff16610b345760405162461bcd60e51b81526020600482015260126024820152714d696e74696e67206e6f742061637469766560701b604482015260640161047a565b60005b82518161ffff1610156105b057610b6b82848361ffff1681518110610b5e57610b5e611830565b6020026020010151610eb9565b60078054600160a01b900461ffff16906014610b86836117df565b91906101000a81548161ffff021916908361ffff160217905550508080610bac906117df565b915050610b37565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610be982610642565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316610c9b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161047a565b6000610ca683610642565b9050806001600160a01b0316846001600160a01b03161480610ce15750836001600160a01b0316610cd684610405565b6001600160a01b0316145b80610d1157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610d2c82610642565b6001600160a01b031614610d945760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161047a565b6001600160a01b038216610df65760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161047a565b610e01600082610bb4565b6001600160a01b0383166000908152600360205260408120805460019290610e2a908490611846565b90915550506001600160a01b0382166000908152600360205260408120805460019290610e5890849061185d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610f0f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161047a565b6000818152600260205260409020546001600160a01b031615610f745760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161047a565b6001600160a01b0382166000908152600360205260408120805460019290610f9d90849061185d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611013600083836040518060200160405280600081525061116f565b61063e5760405162461bcd60e51b815260040161047a90611875565b61103a848484610d19565b6110468484848461116f565b6109db5760405162461bcd60e51b815260040161047a90611875565b6060600680546103829061171a565b6060816110955750506040805180820190915260018152600360fc1b602082015290565b8160005b81156110bf57806110a9816118c7565b91506110b89050600a836118f8565b9150611099565b60008167ffffffffffffffff8111156110da576110da611451565b6040519080825280601f01601f191660200182016040528015611104576020820181803683370190505b5090505b8415610d1157611119600183611846565b9150611126600a8661190c565b61113190603061185d565b60f81b81838151811061114657611146611830565b60200101906001600160f81b031916908160001a905350611168600a866118f8565b9450611108565b60006001600160a01b0384163b1561127157604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906111b3903390899088908890600401611920565b602060405180830381600087803b1580156111cd57600080fd5b505af19250505080156111fd575060408051601f3d908101601f191682019092526111fa9181019061195d565b60015b611257573d80801561122b576040519150601f19603f3d011682016040523d82523d6000602084013e611230565b606091505b50805161124f5760405162461bcd60e51b815260040161047a90611875565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610d11565b506001949350505050565b8280546112889061171a565b90600052602060002090601f0160209004810192826112aa57600085556112f0565b82601f106112c357805160ff19168380011785556112f0565b828001600101855582156112f0579182015b828111156112f05782518255916020019190600101906112d5565b506112fc929150611300565b5090565b5b808211156112fc5760008155600101611301565b6001600160e01b03198116811461132b57600080fd5b50565b60006020828403121561134057600080fd5b8135610ab581611315565b60005b8381101561136657818101518382015260200161134e565b838111156109db5750506000910152565b6000815180845261138f81602086016020860161134b565b601f01601f19169290920160200192915050565b602081526000610ab56020830184611377565b6000602082840312156113c857600080fd5b5035919050565b80356001600160a01b03811681146113e657600080fd5b919050565b600080604083850312156113fe57600080fd5b611407836113cf565b946020939093013593505050565b60008060006060848603121561142a57600080fd5b611433846113cf565b9250611441602085016113cf565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561149057611490611451565b604052919050565b600067ffffffffffffffff8311156114b2576114b2611451565b6114c5601f8401601f1916602001611467565b90508281528383830111156114d957600080fd5b828260208301376000602084830101529392505050565b60006020828403121561150257600080fd5b813567ffffffffffffffff81111561151957600080fd5b8201601f8101841361152a57600080fd5b610d1184823560208401611498565b60006020828403121561154b57600080fd5b610ab5826113cf565b6000806040838503121561156757600080fd5b611570836113cf565b91506020830135801515811461158557600080fd5b809150509250929050565b600080604083850312156115a357600080fd5b823591506115b3602084016113cf565b90509250929050565b600080600080608085870312156115d257600080fd5b6115db856113cf565b93506115e9602086016113cf565b925060408501359150606085013567ffffffffffffffff81111561160c57600080fd5b8501601f8101871361161d57600080fd5b61162c87823560208401611498565b91505092959194509250565b6000806040838503121561164b57600080fd5b611654836113cf565b91506115b3602084016113cf565b6000806040838503121561167557600080fd5b823567ffffffffffffffff8082111561168d57600080fd5b818501915085601f8301126116a157600080fd5b81356020828211156116b5576116b5611451565b8160051b92506116c6818401611467565b82815292840181019281810190898511156116e057600080fd5b948201945b848610156116fe578535825294820194908201906116e5565b965061170d90508782016113cf565b9450505050509250929050565b600181811c9082168061172e57607f821691505b6020821081141561174f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252600990820152682737ba1027bbb732b960b91b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600061ffff808316818114156117f7576117f76117c9565b6001019392505050565b6000835161181381846020880161134b565b83519083019061182781836020880161134b565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b600082821015611858576118586117c9565b500390565b60008219821115611870576118706117c9565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156118db576118db6117c9565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611907576119076118e2565b500490565b60008261191b5761191b6118e2565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061195390830184611377565b9695505050505050565b60006020828403121561196f57600080fd5b8151610ab58161131556fea2646970667358221220ee7ab515c664dc8f95a76a83b21b7433c91571595acd116b47c91a6a90ae9e4e64736f6c63430008090033