60806040526000600855600d54600b546200001b9190620006a2565b600955600854600c54620000309190620006a2565b600a556002600b819055600c556000600d55601080546001600160a01b031990811673a7956b8053224bb5b3b80ab63238ca2fdee630b39081179092556011805482169092179091556012805490911661dead1790553480156200009357600080fd5b506040518060400160405280601081526020016f0506570654d6f6f6e53686f7473322e360841b815250604051806040016040528060068152602001650504d53322e360d41b8152508160039081620000ed919062000762565b506004620000fc828262000762565b5050506000620001116200042f60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060006200016b62000433565b90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d491906200082e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024891906200082e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc91906200082e565b600f80546001600160a01b038086166001600160a01b031992831681179093556007805491851691909216179055909150620002fd90309060001962000476565b62000326620003146005546001600160a01b031690565b6a084595161401484a000000620005a2565b60646200033260025490565b6200033f90600162000860565b6200034b91906200087a565b600655600160136000620003676005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601154909116815260139283905290812080549093166001908117909355620003bd62000433565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556012548216815260139093528183208054851660019081179091556010549091168352818320805485168217905530835291208054909216179055506200089d9050565b3390565b60004660018190036200045b57737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b6001600160a01b038316620004de5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004d5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620005fa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004d5565b80600260008282546200060e9190620006a2565b90915550506001600160a01b038216600090815260208190526040812080548392906200063d908490620006a2565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620006b857620006b86200068c565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006e957607f821691505b6020821081036200070a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068757600081815260208120601f850160051c81016020861015620007395750805b601f850160051c820191505b818110156200075a5782815560010162000745565b505050505050565b81516001600160401b038111156200077e576200077e620006be565b62000796816200078f8454620006d4565b8462000710565b602080601f831160018114620007ce5760008415620007b55750858301515b600019600386901b1c1916600185901b1785556200075a565b600085815260208120601f198616915b82811015620007ff57888601518255948401946001909101908401620007de565b50858210156200081e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200084157600080fd5b81516001600160a01b03811681146200085957600080fd5b9392505050565b8082028115828204841417620006b857620006b86200068c565b6000826200089857634e487b7160e01b600052601260045260246000fd5b500490565b61173280620008ad6000396000f3fe6080604052600436106101e65760003560e01c806370a0823111610102578063c04a541411610095578063dd62ed3e11610064578063dd62ed3e14610538578063df8408fe1461057e578063e2f456051461059e578063f2fde38b146105b457600080fd5b8063c04a5414146104d7578063d35c9224146104f7578063d54f7d5e1461050d578063dc4c7dbc1461052257600080fd5b80638da5cb5b116100d15780638da5cb5b1461046457806395d89b4114610482578063a457c2d714610497578063a9059cbb146104b757600080fd5b806370a08231146103e3578063715018a61461041957806375f0a8741461042e578063766ea4151461044e57600080fd5b806323b872dd1161017a5780634074652311610149578063407465231461037357806349bd5a5e146103935780635fc2e596146103b35780636ddd1713146103c957600080fd5b806323b872dd1461030157806325ecca8714610321578063313ce56714610337578063395093511461035357600080fd5b8063095ea7b3116101b6578063095ea7b31461027e5780631694505e1461029e57806318160ddd146102d65780631dac24d6146102eb57600080fd5b806299d386146101f2578063064a59d01461020957806306fdde0314610238578063087ed9721461025a57600080fd5b366101ed57005b600080fd5b3480156101fe57600080fd5b506102076105d4565b005b34801561021557600080fd5b506014546102239060ff1681565b60405190151581526020015b60405180910390f35b34801561024457600080fd5b5061024d61067d565b60405161022f9190611357565b34801561026657600080fd5b50610270600a5481565b60405190815260200161022f565b34801561028a57600080fd5b506102236102993660046113bd565b61070f565b3480156102aa57600080fd5b50600f546102be906001600160a01b031681565b6040516001600160a01b03909116815260200161022f565b3480156102e257600080fd5b50600254610270565b3480156102f757600080fd5b5061027060085481565b34801561030d57600080fd5b5061022361031c3660046113e9565b610726565b34801561032d57600080fd5b50610270600d5481565b34801561034357600080fd5b506040516012815260200161022f565b34801561035f57600080fd5b5061022361036e3660046113bd565b6107d7565b34801561037f57600080fd5b5061020761038e36600461142a565b610813565b34801561039f57600080fd5b506007546102be906001600160a01b031681565b3480156103bf57600080fd5b50610270600b5481565b3480156103d557600080fd5b506016546102239060ff1681565b3480156103ef57600080fd5b506102706103fe36600461145c565b6001600160a01b031660009081526020819052604090205490565b34801561042557600080fd5b506102076108da565b34801561043a57600080fd5b506010546102be906001600160a01b031681565b34801561045a57600080fd5b5061027060095481565b34801561047057600080fd5b506005546001600160a01b03166102be565b34801561048e57600080fd5b5061024d61094e565b3480156104a357600080fd5b506102236104b23660046113bd565b61095d565b3480156104c357600080fd5b506102236104d23660046113bd565b6109f6565b3480156104e357600080fd5b506011546102be906001600160a01b031681565b34801561050357600080fd5b5061027060155481565b34801561051957600080fd5b506102be610a03565b34801561052e57600080fd5b50610270600c5481565b34801561054457600080fd5b50610270610553366004611480565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561058a57600080fd5b506102076105993660046114b9565b610a45565b3480156105aa57600080fd5b5061027060065481565b3480156105c057600080fd5b506102076105cf36600461145c565b610b51565b6005546001600160a01b031633146106075760405162461bcd60e51b81526004016105fe906114ec565b60405180910390fd5b60145460ff161561065a5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016105fe565b60168054600160ff19918216811790925560148054909116909117905542601555565b60606003805461068c90611521565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890611521565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071c338484610c3c565b5060015b92915050565b6001600160a01b038316600090815260016020908152604080832033845290915281205460001981146107c157828110156107b45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016105fe565b6107c18533858403610c3c565b6107cc858585610d60565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161071c91859061080e908690611571565b610c3c565b6005546001600160a01b0316331461083d5760405162461bcd60e51b81526004016105fe906114ec565b600b849055600c839055600d829055600881905561085b8285611571565b600955600854600c5461086e9190611571565b600a8190556009546108809190611571565b600e55600b54600c54600d546008546040805194855260208501939093529183015260608201527f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe9060800160405180910390a150505050565b6005546001600160a01b031633146109045760405162461bcd60e51b81526004016105fe906114ec565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60606004805461068c90611521565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109df5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105fe565b6109ec3385858403610c3c565b5060019392505050565b600061071c338484610d60565b6000466001819003610a2a57737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b6005546001600160a01b03163314610a6f5760405162461bcd60e51b81526004016105fe906114ec565b6001600160a01b03821660009081526013602052604090205481151560ff909116151503610af25760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016105fe565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610b7b5760405162461bcd60e51b81526004016105fe906114ec565b6001600160a01b038116610be05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105fe565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c9e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fe565b6001600160a01b038216610cff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fe565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d865760405162461bcd60e51b81526004016105fe90611584565b6001600160a01b038216610dac5760405162461bcd60e51b81526004016105fe906115c9565b60145460ff16610e41576001600160a01b03831660009081526013602052604090205460ff1680610df557506001600160a01b03821660009081526013602052604090205460ff165b610e415760405162461bcd60e51b815260206004820152601760248201527f54726164696e67204e6f7420596574205374617274656400000000000000000060448201526064016105fe565b80600003610e5a57610e5583836000611087565b505050565b3060009081526020819052604090205460065481108015908190610e885750600754600160a01b900460ff16155b8015610e96575060165460ff165b8015610eaf57506007546001600160a01b038581169116145b15610f86576007805460ff60a01b1916600160a01b179055600a54600954600091610ed991611571565b90506000600854600d54610eed9190611571565b90506000600c54600b54610f019190611571565b90508115610f3c57600083610f16848861160c565b610f209190611623565b601154909150610f3a9082906001600160a01b03166111dc565b505b8015610f7557600083610f4f838861160c565b610f599190611623565b601054909150610f739082906001600160a01b03166111dc565b505b50506007805460ff60a01b19169055505b6007546001600160a01b03861660009081526013602052604090205460ff600160a01b909204821615911680610fd457506001600160a01b03851660009081526013602052604090205460ff165b15610fdd575060005b8015611074576007546000906001600160a01b0390811690881603611029576064600b54600d5461100e9190611571565b611018908761160c565b6110229190611623565b9050611055565b6007546001600160a01b0390811690871603611051576064600c5460085461100e9190611571565b5060005b61105f8186611645565b9450801561107257611072873083611087565b505b61107f868686611087565b505050505050565b6001600160a01b0383166110ad5760405162461bcd60e51b81526004016105fe90611584565b6001600160a01b0382166110d35760405162461bcd60e51b81526004016105fe906115c9565b6001600160a01b0383166000908152602081905260409020548181101561114b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105fe565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611182908490611571565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111ce91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061121157611211611658565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128e919061166e565b816001815181106112a1576112a1611658565b6001600160a01b039283166020918202929092010152600f54604051635c11d79560e01b8152911690635c11d795906112e790869060009086908890429060040161168b565b600060405180830381600087803b15801561130157600080fd5b505af1158015611315573d6000803e3d6000fd5b505050507f46cc9a40deb7f9a6e09287e4122d5c8ba3daf2c81e84b6b73f926de10211ee8f8360405161134a91815260200190565b60405180910390a1505050565b600060208083528351808285015260005b8181101561138457858101830151858201604001528201611368565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113ba57600080fd5b50565b600080604083850312156113d057600080fd5b82356113db816113a5565b946020939093013593505050565b6000806000606084860312156113fe57600080fd5b8335611409816113a5565b92506020840135611419816113a5565b929592945050506040919091013590565b6000806000806080858703121561144057600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561146e57600080fd5b8135611479816113a5565b9392505050565b6000806040838503121561149357600080fd5b823561149e816113a5565b915060208301356114ae816113a5565b809150509250929050565b600080604083850312156114cc57600080fd5b82356114d7816113a5565b9150602083013580151581146114ae57600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061153557607f821691505b60208210810361155557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107205761072061155b565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176107205761072061155b565b60008261164057634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107205761072061155b565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561168057600080fd5b8151611479816113a5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116db5784516001600160a01b0316835293830193918301916001016116b6565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ea3fa513191f3b1c15a577c7d65f38300fe6cf5e9ddea2638487993ce6e45ca164736f6c63430008130033