60806040526006805461ffff60a01b1916905566d19c2ff9bf80006007556009805460ff191690553480156200003457600080fd5b50604051620022d7380380620022d7833981016040819052620000579162000261565b604080518082018252600d81526c0213ab7373c902237b7b236329609d1b60208083019182528351808501909452600584526442554e4e5960d81b908401528151919291620000a991600091620001bb565b508051620000bf906001906020840190620001bb565b505050620000dc620000d6620000ee60201b60201c565b620000f2565b620000e78162000144565b50620003b8565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200014e620000ee565b6001600160a01b031662000161620001ac565b6001600160a01b031614620001935760405162461bcd60e51b81526004016200018a9062000330565b60405180910390fd5b8051620001a8906008906020840190620001bb565b5050565b6006546001600160a01b031690565b828054620001c99062000365565b90600052602060002090601f016020900481019282620001ed576000855562000238565b82601f106200020857805160ff191683800117855562000238565b8280016001018555821562000238579182015b82811115620002385782518255916020019190600101906200021b565b50620002469291506200024a565b5090565b5b808211156200024657600081556001016200024b565b6000602080838503121562000274578182fd5b82516001600160401b03808211156200028b578384fd5b818501915085601f8301126200029f578384fd5b815181811115620002b457620002b4620003a2565b604051601f8201601f1916810185018381118282101715620002da57620002da620003a2565b6040528181528382018501881015620002f1578586fd5b8592505b81831015620003145783830185015181840186015291840191620002f5565b818311156200032557858583830101525b979650505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6002810460018216806200037a57607f821691505b602082108114156200039c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b611f0f80620003c86000396000f3fe6080604052600436106101665760003560e01c8063715018a6116100d1578063a22cb4651161008a578063b88d4fde11610064578063b88d4fde146103dc578063c87b56dd146103fc578063e985e9c51461041c578063f2fde38b1461043c57610166565b8063a22cb46514610389578063a2b40d19146103a9578063ad0be4bd146103c957610166565b8063715018a61461030b5780637d8966e4146103205780638da5cb5b1461033557806395d89b411461034a57806399288dbb1461035f578063a035b1fe1461037457610166565b806332cb6b0c1161012357806332cb6b0c146102545780633ccfd60b1461027657806342842e0e1461028b57806355f804b3146102ab5780636352211e146102cb57806370a08231146102eb57610166565b806301ffc9a71461016b57806306fdde03146101a1578063081812fc146101c3578063095ea7b3146101f057806318160ddd1461021257806323b872dd14610234575b600080fd5b34801561017757600080fd5b5061018b6101863660046115f7565b61045c565b604051610198919061173c565b60405180910390f35b3480156101ad57600080fd5b506101b66104a4565b6040516101989190611747565b3480156101cf57600080fd5b506101e36101de366004611675565b610536565b60405161019891906116eb565b3480156101fc57600080fd5b5061021061020b3660046115ce565b610582565b005b34801561021e57600080fd5b5061022761061a565b6040516101989190611d32565b34801561024057600080fd5b5061021061024f3660046114af565b61062b565b34801561026057600080fd5b50610269610663565b6040516101989190611d41565b34801561028257600080fd5b50610210610669565b34801561029757600080fd5b506102106102a63660046114af565b610727565b3480156102b757600080fd5b506102106102c636600461162f565b610742565b3480156102d757600080fd5b506101e36102e6366004611675565b610798565b3480156102f757600080fd5b50610269610306366004611463565b6107cd565b34801561031757600080fd5b50610210610811565b34801561032c57600080fd5b5061021061085c565b34801561034157600080fd5b506101e36108af565b34801561035657600080fd5b506101b66108be565b34801561036b57600080fd5b5061018b6108cd565b34801561038057600080fd5b506102696108d6565b34801561039557600080fd5b506102106103a4366004611563565b6108dc565b3480156103b557600080fd5b506102106103c4366004611675565b6109aa565b6102106103d736600461159d565b6109ee565b3480156103e857600080fd5b506102106103f73660046114ea565b610b95565b34801561040857600080fd5b506101b6610417366004611675565b610bce565b34801561042857600080fd5b5061018b61043736600461147d565b610c51565b34801561044857600080fd5b50610210610457366004611463565b610c7f565b60006001600160e01b031982166380ac58cd60e01b148061048d57506001600160e01b03198216635b5e139f60e01b145b8061049c575061049c82610ced565b90505b919050565b6060600080546104b390611df5565b80601f01602080910402602001604051908101604052809291908181526020018280546104df90611df5565b801561052c5780601f106105015761010080835404028352916020019161052c565b820191906000526020600020905b81548152906001019060200180831161050f57829003601f168201915b5050505050905090565b600061054182610d06565b6105665760405162461bcd60e51b815260040161055d90611a91565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061058d82610798565b9050806001600160a01b0316836001600160a01b031614156105c15760405162461bcd60e51b815260040161055d90611c46565b806001600160a01b03166105d3610d23565b6001600160a01b031614806105ef57506105ef81610437610d23565b61060b5760405162461bcd60e51b815260040161055d9061196c565b6106158383610d27565b505050565b600654600160a01b900461ffff1690565b61063c610636610d23565b82610d95565b6106585760405162461bcd60e51b815260040161055d90611ce1565b610615838383610e1a565b61045781565b610671610d23565b6001600160a01b03166106826108af565b6001600160a01b0316146106a85760405162461bcd60e51b815260040161055d90611b2c565b6000336001600160a01b0316476040516106c1906116e8565b60006040518083038185875af1925050503d80600081146106fe576040519150601f19603f3d011682016040523d82523d6000602084013e610703565b606091505b50509050806107245760405162461bcd60e51b815260040161055d90611cb7565b50565b61061583838360405180602001604052806000815250610b95565b61074a610d23565b6001600160a01b031661075b6108af565b6001600160a01b0316146107815760405162461bcd60e51b815260040161055d90611b2c565b8051610794906008906020840190611343565b5050565b6000818152600260205260408120546001600160a01b03168061049c5760405162461bcd60e51b815260040161055d90611a13565b60006001600160a01b0382166107f55760405162461bcd60e51b815260040161055d906119c9565b506001600160a01b031660009081526003602052604090205490565b610819610d23565b6001600160a01b031661082a6108af565b6001600160a01b0316146108505760405162461bcd60e51b815260040161055d90611b2c565b61085a6000610f47565b565b610864610d23565b6001600160a01b03166108756108af565b6001600160a01b03161461089b5760405162461bcd60e51b815260040161055d90611b2c565b6009805460ff19811660ff90911615179055565b6006546001600160a01b031690565b6060600180546104b390611df5565b60095460ff1681565b60075481565b6108e4610d23565b6001600160a01b0316826001600160a01b031614156109155760405162461bcd60e51b815260040161055d906118bb565b8060056000610922610d23565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610966610d23565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161099e919061173c565b60405180910390a35050565b6109b2610d23565b6001600160a01b03166109c36108af565b6001600160a01b0316146109e95760405162461bcd60e51b815260040161055d90611b2c565b600755565b60006109f861061a565b9050610457610a078383611d4a565b61ffff161115610a295760405162461bcd60e51b815260040161055d90611c87565b60008261ffff1611610a4d5760405162461bcd60e51b815260040161055d9061175a565b610a556108af565b6001600160a01b0316336001600160a01b031614610ae55760095460ff16610a8f5760405162461bcd60e51b815260040161055d906118f2565b60148261ffff161115610ab45760405162461bcd60e51b815260040161055d90611b61565b8161ffff16600754610ac69190611d93565b341015610ae55760405162461bcd60e51b815260040161055d90611add565b81600660148282829054906101000a900461ffff16610b049190611d4a565b92506101000a81548161ffff021916908361ffff16021790555060005b8261ffff16811015610b8f57610b4684610b3a84611e30565b93508361ffff16610f99565b7f176b02bb2d12439ff7a20b59f402cca16c76f50508b13ef3166a600eb719354a82604051610b759190611d32565b60405180910390a180610b8781611e52565b915050610b21565b50505050565b610ba6610ba0610d23565b83610d95565b610bc25760405162461bcd60e51b815260040161055d90611ce1565b610b8f84848484610fb3565b6060610bd982610d06565b610bf55760405162461bcd60e51b815260040161055d90611bf7565b6000610bff610fe6565b90506000815111610c1f5760405180602001604052806000815250610c4a565b80610c2984610ff5565b604051602001610c3a9291906116b9565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610c87610d23565b6001600160a01b0316610c986108af565b6001600160a01b031614610cbe5760405162461bcd60e51b815260040161055d90611b2c565b6001600160a01b038116610ce45760405162461bcd60e51b815260040161055d906117fa565b61072481610f47565b6001600160e01b031981166301ffc9a760e01b14919050565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610d5c82610798565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610da082610d06565b610dbc5760405162461bcd60e51b815260040161055d90611920565b6000610dc783610798565b9050806001600160a01b0316846001600160a01b03161480610e025750836001600160a01b0316610df784610536565b6001600160a01b0316145b80610e125750610e128185610c51565b949350505050565b826001600160a01b0316610e2d82610798565b6001600160a01b031614610e535760405162461bcd60e51b815260040161055d90611bae565b6001600160a01b038216610e795760405162461bcd60e51b815260040161055d90611877565b610e84838383610615565b610e8f600082610d27565b6001600160a01b0383166000908152600360205260408120805460019290610eb8908490611db2565b90915550506001600160a01b0382166000908152600360205260408120805460019290610ee6908490611d67565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610794828260405180602001604052806000815250611110565b610fbe848484610e1a565b610fca84848484611143565b610b8f5760405162461bcd60e51b815260040161055d906117a8565b6060600880546104b390611df5565b60608161101a57506040805180820190915260018152600360fc1b602082015261049f565b8160005b8115611044578061102e81611e52565b915061103d9050600a83611d7f565b915061101e565b60008167ffffffffffffffff81111561106d57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611097576020820181803683370190505b5090505b8415610e12576110ac600183611db2565b91506110b9600a86611e6d565b6110c4906030611d67565b60f81b8183815181106110e757634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611109600a86611d7f565b945061109b565b61111a838361125e565b6111276000848484611143565b6106155760405162461bcd60e51b815260040161055d906117a8565b6000611157846001600160a01b031661133d565b1561125357836001600160a01b031663150b7a02611173610d23565b8786866040518563ffffffff1660e01b815260040161119594939291906116ff565b602060405180830381600087803b1580156111af57600080fd5b505af19250505080156111df575060408051601f3d908101601f191682019092526111dc91810190611613565b60015b611239573d80801561120d576040519150601f19603f3d011682016040523d82523d6000602084013e611212565b606091505b5080516112315760405162461bcd60e51b815260040161055d906117a8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610e12565b506001949350505050565b6001600160a01b0382166112845760405162461bcd60e51b815260040161055d90611a5c565b61128d81610d06565b156112aa5760405162461bcd60e51b815260040161055d90611840565b6112b660008383610615565b6001600160a01b03821660009081526003602052604081208054600192906112df908490611d67565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b3b151590565b82805461134f90611df5565b90600052602060002090601f01602090048101928261137157600085556113b7565b82601f1061138a57805160ff19168380011785556113b7565b828001600101855582156113b7579182015b828111156113b757825182559160200191906001019061139c565b506113c39291506113c7565b5090565b5b808211156113c357600081556001016113c8565b600067ffffffffffffffff808411156113f7576113f7611ead565b604051601f8501601f19168101602001828111828210171561141b5761141b611ead565b60405284815291508183850186101561143357600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b038116811461049f57600080fd5b600060208284031215611474578081fd5b610c4a8261144c565b6000806040838503121561148f578081fd5b6114988361144c565b91506114a66020840161144c565b90509250929050565b6000806000606084860312156114c3578081fd5b6114cc8461144c565b92506114da6020850161144c565b9150604084013590509250925092565b600080600080608085870312156114ff578081fd5b6115088561144c565b93506115166020860161144c565b925060408501359150606085013567ffffffffffffffff811115611538578182fd5b8501601f81018713611548578182fd5b611557878235602084016113dc565b91505092959194509250565b60008060408385031215611575578182fd5b61157e8361144c565b915060208301358015158114611592578182fd5b809150509250929050565b600080604083850312156115af578182fd5b6115b88361144c565b9150602083013561ffff81168114611592578182fd5b600080604083850312156115e0578182fd5b6115e98361144c565b946020939093013593505050565b600060208284031215611608578081fd5b8135610c4a81611ec3565b600060208284031215611624578081fd5b8151610c4a81611ec3565b600060208284031215611640578081fd5b813567ffffffffffffffff811115611656578182fd5b8201601f81018413611666578182fd5b610e12848235602084016113dc565b600060208284031215611686578081fd5b5035919050565b600081518084526116a5816020860160208601611dc9565b601f01601f19169290920160200192915050565b600083516116cb818460208801611dc9565b8351908301906116df818360208801611dc9565b01949350505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117329083018461168d565b9695505050505050565b901515815260200190565b600060208252610c4a602083018461168d565b6020808252602e908201527f4d696e696d756d2031204e46542068617320746f206265206d696e746564207060408201526d32b9103a3930b739b0b1ba34b7b760911b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b60208082526014908201527314d85b19481a5cc81b9bdd081bdc195b881e595d60621b604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252602f908201527f45746865722073656e7420776974682074686973207472616e73616374696f6e60408201526e081a5cc81b9bdd0818dbdc9c9958dd608a1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602d908201527f4d6178696d756d203230204e4654732063616e206265206d696e74656420706560408201526c39103a3930b739b0b1ba34b7b760991b606082015260800190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526016908201527545786365656473206d6178696d756d20737570706c7960501b604082015260600190565b60208082526010908201526f2a3930b739b332b9103330b4b632b21760811b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b61ffff91909116815260200190565b90815260200190565b600061ffff8083168185168083038211156116df576116df611e81565b60008219821115611d7a57611d7a611e81565b500190565b600082611d8e57611d8e611e97565b500490565b6000816000190483118215151615611dad57611dad611e81565b500290565b600082821015611dc457611dc4611e81565b500390565b60005b83811015611de4578181015183820152602001611dcc565b83811115610b8f5750506000910152565b600281046001821680611e0957607f821691505b60208210811415611e2a57634e487b7160e01b600052602260045260246000fd5b50919050565b600061ffff80831681811415611e4857611e48611e81565b6001019392505050565b6000600019821415611e6657611e66611e81565b5060010190565b600082611e7c57611e7c611e97565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461072457600080fdfea264697066735822122088728e8d3cd539b99e817c6cd24a39e5725538c49b434809f9a2844c5d75430e64736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000