0x6080604052600436106102f0575f3560e01c8063809d458d11610186578063c0246668116100dc578063dd62ed3e11610087578063f2fde38b11610062578063f2fde38b1461085f578063f8b45b051461087e578063fe575a8714610893575f80fd5b8063dd62ed3e146107e7578063e2f456051461082b578063eba4c33314610840575f80fd5b8063cc2ffe7c116100b7578063cc2ffe7c1461079e578063d257b34f146107b3578063d85ba063146107d2575f80fd5b8063c02466681461074b578063c18bc1951461076a578063c8c8ebe414610789575f80fd5b80639a7a23d61161013c578063a9059cbb11610117578063a9059cbb146106e0578063b62496f5146106ff578063bbc0c7421461072d575f80fd5b80639a7a23d61461068e5780639e78fb4f146106ad578063a457c2d7146106c1575f80fd5b80638da5cb5b1161016c5780638da5cb5b1461063e578063924de9b71461065b57806395d89b411461067a575f80fd5b8063809d458d1461060b5780638a8c523c1461062a575f80fd5b80634a62bb651161024657806370a08231116101f1578063735de9f7116101cc578063735de9f7146105a5578063751039fc146105d85780637571336a146105ec575f80fd5b806370a082311461053e578063715018a61461057257806371fc468814610586575f80fd5b80636a486a8e116102215780636a486a8e146104f55780636b2fb1241461050a5780636ddd17131461051f575f80fd5b80634a62bb65146104905780634fbee193146104a95780635c068a8c146104e0575f80fd5b806323b872dd116102a65780633dc599ff116102815780633dc599ff1461041a5780634626402b1461043a57806349bd5a5e14610471575f80fd5b806323b872dd146103c1578063313ce567146103e057806339509351146103fb575f80fd5b806310d5de53116102d657806310d5de531461035457806318160ddd14610382578063203e727e146103a0575f80fd5b806306fdde03146102fb578063095ea7b314610325575f80fd5b366102f757005b5f80fd5b348015610306575f80fd5b5061030f6108ca565b60405161031c919061237c565b60405180910390f35b348015610330575f80fd5b5061034461033f3660046123c5565b61095a565b604051901515815260200161031c565b34801561035f575f80fd5b5061034461036e3660046123ef565b60136020525f908152604090205460ff1681565b34801561038d575f80fd5b506002545b60405190815260200161031c565b3480156103ab575f80fd5b506103bf6103ba36600461240a565b610970565b005b3480156103cc575f80fd5b506103446103db366004612421565b610a7d565b3480156103eb575f80fd5b506040516012815260200161031c565b348015610406575f80fd5b506103446104153660046123c5565b610b3a565b348015610425575f80fd5b50600b54610344906301000000900460ff1681565b348015610445575f80fd5b50600754610459906001600160a01b031681565b6040516001600160a01b03909116815260200161031c565b34801561047c575f80fd5b50600654610459906001600160a01b031681565b34801561049b575f80fd5b50600b546103449060ff1681565b3480156104b4575f80fd5b506103446104c33660046123ef565b6001600160a01b03165f9081526012602052604090205460ff1690565b3480156104eb575f80fd5b50610392600e5481565b348015610500575f80fd5b50610392600f5481565b348015610515575f80fd5b5061039260105481565b34801561052a575f80fd5b50600b546103449062010000900460ff1681565b348015610549575f80fd5b506103926105583660046123ef565b6001600160a01b03165f9081526020819052604090205490565b34801561057d575f80fd5b506103bf610b75565b348015610591575f80fd5b506103bf6105a036600461240a565b610bc7565b3480156105b0575f80fd5b506104597f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156105e3575f80fd5b50610344610c18565b3480156105f7575f80fd5b506103bf61060636600461246e565b610c71565b348015610616575f80fd5b506103bf6106253660046123ef565b610ce2565b348015610635575f80fd5b506103bf610d92565b348015610649575f80fd5b506005546001600160a01b0316610459565b348015610666575f80fd5b506103bf6106753660046124a1565b610dec565b348015610685575f80fd5b5061030f610e4f565b348015610699575f80fd5b506103bf6106a836600461246e565b610e5e565b3480156106b8575f80fd5b506103bf610f37565b3480156106cc575f80fd5b506103446106db3660046123c5565b611161565b3480156106eb575f80fd5b506103446106fa3660046123c5565b611211565b34801561070a575f80fd5b506103446107193660046123ef565b60146020525f908152604090205460ff1681565b348015610738575f80fd5b50600b5461034490610100900460ff1681565b348015610756575f80fd5b506103bf61076536600461246e565b61121d565b348015610775575f80fd5b506103bf61078436600461240a565b6112c2565b348015610794575f80fd5b5061039260085481565b3480156107a9575f80fd5b5061039260115481565b3480156107be575f80fd5b506103446107cd36600461240a565b6113c9565b3480156107dd575f80fd5b50610392600d5481565b3480156107f2575f80fd5b506103926108013660046124ba565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610836575f80fd5b5061039260095481565b34801561084b575f80fd5b506103bf61085a36600461240a565b611420565b34801561086a575f80fd5b506103bf6108793660046123ef565b611471565b348015610889575f80fd5b50610392600a5481565b34801561089e575f80fd5b506103446108ad3660046123ef565b6001600160a01b03165f908152600c602052604090205460ff1690565b6060600380546108d9906124f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610905906124f1565b80156109505780601f1061092757610100808354040283529160200191610950565b820191905f5260205f20905b81548152906001019060200180831161093357829003601f168201915b5050505050905090565b5f610966338484611540565b5060015b92915050565b6005546001600160a01b031633146109bc5760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064015b60405180910390fd5b670de0b6b3a76400006103e86109d160025490565b6109dc90600561253d565b6109e69190612554565b6109f09190612554565b811015610a655760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e3525000000000000000000000000000000000060648201526084016109b3565b610a7781670de0b6b3a764000061253d565b60085550565b5f610a89848484611697565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b225760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016109b3565b610b2f8533858403611540565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610966918590610b70908690612573565b611540565b6005546001600160a01b03163314610bbc5760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b610bc55f611e2b565b565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b600e819055600d55565b6005545f906001600160a01b03163314610c615760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b50600b805460ff19169055600190565b6005546001600160a01b03163314610cb85760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d295760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6007546040516001600160a01b03918216918316907f02f8a1483978974a6412ba3a67040b4daa4fc0dfe9439a7295f9a9538394f635905f90a36007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610dd95760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b600b805462ffff00191662010100179055565b6005546001600160a01b03163314610e335760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b600b8054911515620100000262ff000019909216919091179055565b6060600480546108d9906124f1565b6005546001600160a01b03163314610ea55760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6006546001600160a01b0390811690831603610f295760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109b3565b610f338282611e89565b5050565b6005546001600160a01b03163314610f7e5760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffe9190612586565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611069573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108d9190612586565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156110ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111139190612586565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216918217905561114a906001610c71565b600654610bc5906001600160a01b03166001611e89565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109b3565b6112073385858403611540565b5060019392505050565b5f610966338484611697565b6005546001600160a01b031633146112645760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113095760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b670de0b6b3a76400006103e861131e60025490565b61132990600a61253d565b6113339190612554565b61133d9190612554565b8110156113b15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f312e30250000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6113c381670de0b6b3a764000061253d565b600a5550565b6005545f906001600160a01b031633146114125760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b50600981905560015b919050565b6005546001600160a01b031633146114675760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6010819055600f55565b6005546001600160a01b031633146114b85760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6001600160a01b0381166115345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109b3565b61153d81611e2b565b50565b6001600160a01b0383166115bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b0382166116375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116fb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b3565b6001600160a01b03821661175d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b3565b6001600160a01b0383165f908152600c602052604090205460ff16156117c55760405162461bcd60e51b815260206004820152601260248201527f53656e64657220626c61636b6c6973746564000000000000000000000000000060448201526064016109b3565b6001600160a01b0382165f908152600c602052604090205460ff161561182d5760405162461bcd60e51b815260206004820152601460248201527f526563656976657220626c61636b6c697374656400000000000000000000000060448201526064016109b3565b805f036118445761183f83835f611edc565b505050565b600b5460ff1615611bc4576005546001600160a01b0384811691161480159061187b57506005546001600160a01b03838116911614155b801561188f57506001600160a01b03821615155b80156118a55750600654600160a01b900460ff16155b15611bc457600b54610100900460ff16611942576001600160a01b0383165f9081526012602052604090205460ff16806118f657506001600160a01b0382165f9081526012602052604090205460ff165b6119425760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e0000000000000000000060448201526064016109b3565b6001600160a01b0383165f9081526014602052604090205460ff16801561198157506001600160a01b0382165f9081526013602052604090205460ff16155b15611a76576008548111156119fe5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e000000000000000000000060648201526084016109b3565b600a546001600160a01b0383165f90815260208190526040902054611a239083612573565b1115611a715760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c65742065786365656465640000000000000000000000000060448201526064016109b3565b611bc4565b6001600160a01b0382165f9081526014602052604090205460ff168015611ab557506001600160a01b0383165f9081526013602052604090205460ff16155b15611b3257600854811115611a715760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e0000000000000000000060648201526084016109b3565b6001600160a01b0382165f9081526013602052604090205460ff16611bc457600a546001600160a01b0383165f90815260208190526040902054611b769083612573565b1115611bc45760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c65742065786365656465640000000000000000000000000060448201526064016109b3565b305f9081526020819052604090205460095481108015908190611bef5750600b5462010000900460ff165b8015611c055750600654600160a01b900460ff16155b8015611c2957506001600160a01b0385165f9081526014602052604090205460ff16155b8015611c4d57506001600160a01b0385165f9081526012602052604090205460ff16155b8015611c7157506001600160a01b0384165f9081526012602052604090205460ff16155b15611c9f576006805460ff60a01b1916600160a01b179055611c916120c0565b6006805460ff60a01b191690555b6006546001600160a01b0386165f9081526012602052604090205460ff600160a01b909204821615911680611ceb57506001600160a01b0385165f9081526012602052604090205460ff165b15611cf357505f5b5f8115611e17576001600160a01b0386165f9081526014602052604090205460ff168015611d2257505f600f54115b15611d7f57611d476064611d41600f548861218590919063ffffffff16565b90612197565b9050600f5460105482611d5a919061253d565b611d649190612554565b60115f828254611d749190612573565b90915550611df99050565b6001600160a01b0387165f9081526014602052604090205460ff168015611da757505f600d54115b15611df957611dc66064611d41600d548861218590919063ffffffff16565b9050600d54600e5482611dd9919061253d565b611de39190612554565b60115f828254611df39190612573565b90915550505b8015611e0a57611e0a873083611edc565b611e1481866125a1565b94505b611e22878787611edc565b50505050505050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611f405760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b3565b6001600160a01b038216611fa25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b3565b6001600160a01b0383165f90815260208190526040902054818110156120305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612066908490612573565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120b291815260200190565b60405180910390a350505050565b305f9081526020819052604081205460115490918215806120df575081155b156120e957505050565b6009546120f790601461253d565b83111561210f5760095461210c90601461253d565b92505b824761211a826121a2565b5f6121254783612371565b5f60118190556007546040519293506001600160a01b031691839181818185875af1925050503d805f8114612175576040519150601f19603f3d011682016040523d82523d5f602084013e61217a565b606091505b505050505050505050565b5f612190828461253d565b9392505050565b5f6121908284612554565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106121d5576121d56125b4565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122759190612586565b81600181518110612288576122886125b4565b60200260200101906001600160a01b031690816001600160a01b0316815250506122d3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611540565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906123409085905f908690309042906004016125c8565b5f604051808303815f87803b158015612357575f80fd5b505af1158015612369573d5f803e3d5ffd5b505050505050565b5f61219082846125a1565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461153d575f80fd5b5f80604083850312156123d6575f80fd5b82356123e1816123b1565b946020939093013593505050565b5f602082840312156123ff575f80fd5b8135612190816123b1565b5f6020828403121561241a575f80fd5b5035919050565b5f805f60608486031215612433575f80fd5b833561243e816123b1565b9250602084013561244e816123b1565b929592945050506040919091013590565b8035801515811461141b575f80fd5b5f806040838503121561247f575f80fd5b823561248a816123b1565b91506124986020840161245f565b90509250929050565b5f602082840312156124b1575f80fd5b6121908261245f565b5f80604083850312156124cb575f80fd5b82356124d6816123b1565b915060208301356124e6816123b1565b809150509250929050565b600181811c9082168061250557607f821691505b60208210810361252357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761096a5761096a612529565b5f8261256e57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561096a5761096a612529565b5f60208284031215612596575f80fd5b8151612190816123b1565b8181038181111561096a5761096a612529565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156126185783516001600160a01b03168352602093840193909201916001016125f1565b50506001600160a01b03959095166060840152505060800152939250505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122081e34287bb7b077858db8315382b1cffea1c782554d4f40af65a8b7320384a9664736f6c634300081a0033
0x60a0604052600b805463ffffffff191662010101179055348015610021575f80fd5b5060405180604001604052806009815260200168456967656e2044414f60b81b815250604051806040016040528060048152602001634544414f60e01b81525081600390816100709190610483565b50600461007d8282610483565b50505061009661009161019b60201b60201c565b61019f565b737a250d5630b4cf539739df2c5dacb4c659f2488d6100b68160016101f0565b6001600160a01b038116608052692a5a058fc295ed0000006008819055600a556003806a084595161401484a0000006127106100f3826005610551565b6100fd919061056e565b600955600e839055600d8390556010829055600f829055600780546001600160a01b0319167306d333e358cca1a5438fbb4eed1be7440a92611317905561015661014f6005546001600160a01b031690565b6001610266565b610161306001610266565b61017d6101766005546001600160a01b031690565b60016101f0565b6101883060016101f0565b610192338261030b565b505050506105a0565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b0316331461023c5760405162461bcd60e51b815260206004820181905260248201525f80516020612c6983398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146102ad5760405162461bcd60e51b815260206004820181905260248201525f80516020612c698339815191526044820152606401610233565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166103615760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610233565b8060025f828254610372919061058d565b90915550506001600160a01b0382165f908152602081905260408120805483929061039e90849061058d565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061041457607f821691505b60208210810361043257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103e757805f5260205f20601f840160051c8101602085101561045d5750805b601f840160051c820191505b8181101561047c575f8155600101610469565b5050505050565b81516001600160401b0381111561049c5761049c6103ec565b6104b0816104aa8454610400565b84610438565b6020601f8211600181146104e2575f83156104cb5750848201515b5f19600385901b1c1916600184901b17845561047c565b5f84815260208120601f198516915b8281101561051157878501518255602094850194600190920191016104f1565b508482101561052e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105685761056861053d565b92915050565b5f8261058857634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105685761056861053d565b60805161268e6105db5f395f81816105b601528181610f800152818161100f015281816121f7015281816122ae0152612303015261268e5ff3fe6080604052600436106102f0575f3560e01c8063809d458d11610186578063c0246668116100dc578063dd62ed3e11610087578063f2fde38b11610062578063f2fde38b1461085f578063f8b45b051461087e578063fe575a8714610893575f80fd5b8063dd62ed3e146107e7578063e2f456051461082b578063eba4c33314610840575f80fd5b8063cc2ffe7c116100b7578063cc2ffe7c1461079e578063d257b34f146107b3578063d85ba063146107d2575f80fd5b8063c02466681461074b578063c18bc1951461076a578063c8c8ebe414610789575f80fd5b80639a7a23d61161013c578063a9059cbb11610117578063a9059cbb146106e0578063b62496f5146106ff578063bbc0c7421461072d575f80fd5b80639a7a23d61461068e5780639e78fb4f146106ad578063a457c2d7146106c1575f80fd5b80638da5cb5b1161016c5780638da5cb5b1461063e578063924de9b71461065b57806395d89b411461067a575f80fd5b8063809d458d1461060b5780638a8c523c1461062a575f80fd5b80634a62bb651161024657806370a08231116101f1578063735de9f7116101cc578063735de9f7146105a5578063751039fc146105d85780637571336a146105ec575f80fd5b806370a082311461053e578063715018a61461057257806371fc468814610586575f80fd5b80636a486a8e116102215780636a486a8e146104f55780636b2fb1241461050a5780636ddd17131461051f575f80fd5b80634a62bb65146104905780634fbee193146104a95780635c068a8c146104e0575f80fd5b806323b872dd116102a65780633dc599ff116102815780633dc599ff1461041a5780634626402b1461043a57806349bd5a5e14610471575f80fd5b806323b872dd146103c1578063313ce567146103e057806339509351146103fb575f80fd5b806310d5de53116102d657806310d5de531461035457806318160ddd14610382578063203e727e146103a0575f80fd5b806306fdde03146102fb578063095ea7b314610325575f80fd5b366102f757005b5f80fd5b348015610306575f80fd5b5061030f6108ca565b60405161031c919061237c565b60405180910390f35b348015610330575f80fd5b5061034461033f3660046123c5565b61095a565b604051901515815260200161031c565b34801561035f575f80fd5b5061034461036e3660046123ef565b60136020525f908152604090205460ff1681565b34801561038d575f80fd5b506002545b60405190815260200161031c565b3480156103ab575f80fd5b506103bf6103ba36600461240a565b610970565b005b3480156103cc575f80fd5b506103446103db366004612421565b610a7d565b3480156103eb575f80fd5b506040516012815260200161031c565b348015610406575f80fd5b506103446104153660046123c5565b610b3a565b348015610425575f80fd5b50600b54610344906301000000900460ff1681565b348015610445575f80fd5b50600754610459906001600160a01b031681565b6040516001600160a01b03909116815260200161031c565b34801561047c575f80fd5b50600654610459906001600160a01b031681565b34801561049b575f80fd5b50600b546103449060ff1681565b3480156104b4575f80fd5b506103446104c33660046123ef565b6001600160a01b03165f9081526012602052604090205460ff1690565b3480156104eb575f80fd5b50610392600e5481565b348015610500575f80fd5b50610392600f5481565b348015610515575f80fd5b5061039260105481565b34801561052a575f80fd5b50600b546103449062010000900460ff1681565b348015610549575f80fd5b506103926105583660046123ef565b6001600160a01b03165f9081526020819052604090205490565b34801561057d575f80fd5b506103bf610b75565b348015610591575f80fd5b506103bf6105a036600461240a565b610bc7565b3480156105b0575f80fd5b506104597f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e3575f80fd5b50610344610c18565b3480156105f7575f80fd5b506103bf61060636600461246e565b610c71565b348015610616575f80fd5b506103bf6106253660046123ef565b610ce2565b348015610635575f80fd5b506103bf610d92565b348015610649575f80fd5b506005546001600160a01b0316610459565b348015610666575f80fd5b506103bf6106753660046124a1565b610dec565b348015610685575f80fd5b5061030f610e4f565b348015610699575f80fd5b506103bf6106a836600461246e565b610e5e565b3480156106b8575f80fd5b506103bf610f37565b3480156106cc575f80fd5b506103446106db3660046123c5565b611161565b3480156106eb575f80fd5b506103446106fa3660046123c5565b611211565b34801561070a575f80fd5b506103446107193660046123ef565b60146020525f908152604090205460ff1681565b348015610738575f80fd5b50600b5461034490610100900460ff1681565b348015610756575f80fd5b506103bf61076536600461246e565b61121d565b348015610775575f80fd5b506103bf61078436600461240a565b6112c2565b348015610794575f80fd5b5061039260085481565b3480156107a9575f80fd5b5061039260115481565b3480156107be575f80fd5b506103446107cd36600461240a565b6113c9565b3480156107dd575f80fd5b50610392600d5481565b3480156107f2575f80fd5b506103926108013660046124ba565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610836575f80fd5b5061039260095481565b34801561084b575f80fd5b506103bf61085a36600461240a565b611420565b34801561086a575f80fd5b506103bf6108793660046123ef565b611471565b348015610889575f80fd5b50610392600a5481565b34801561089e575f80fd5b506103446108ad3660046123ef565b6001600160a01b03165f908152600c602052604090205460ff1690565b6060600380546108d9906124f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610905906124f1565b80156109505780601f1061092757610100808354040283529160200191610950565b820191905f5260205f20905b81548152906001019060200180831161093357829003601f168201915b5050505050905090565b5f610966338484611540565b5060015b92915050565b6005546001600160a01b031633146109bc5760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064015b60405180910390fd5b670de0b6b3a76400006103e86109d160025490565b6109dc90600561253d565b6109e69190612554565b6109f09190612554565b811015610a655760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e3525000000000000000000000000000000000060648201526084016109b3565b610a7781670de0b6b3a764000061253d565b60085550565b5f610a89848484611697565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b225760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016109b3565b610b2f8533858403611540565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610966918590610b70908690612573565b611540565b6005546001600160a01b03163314610bbc5760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b610bc55f611e2b565b565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b600e819055600d55565b6005545f906001600160a01b03163314610c615760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b50600b805460ff19169055600190565b6005546001600160a01b03163314610cb85760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d295760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6007546040516001600160a01b03918216918316907f02f8a1483978974a6412ba3a67040b4daa4fc0dfe9439a7295f9a9538394f635905f90a36007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610dd95760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b600b805462ffff00191662010100179055565b6005546001600160a01b03163314610e335760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b600b8054911515620100000262ff000019909216919091179055565b6060600480546108d9906124f1565b6005546001600160a01b03163314610ea55760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6006546001600160a01b0390811690831603610f295760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109b3565b610f338282611e89565b5050565b6005546001600160a01b03163314610f7e5760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffe9190612586565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611069573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108d9190612586565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156110ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111139190612586565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216918217905561114a906001610c71565b600654610bc5906001600160a01b03166001611e89565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109b3565b6112073385858403611540565b5060019392505050565b5f610966338484611697565b6005546001600160a01b031633146112645760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113095760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b670de0b6b3a76400006103e861131e60025490565b61132990600a61253d565b6113339190612554565b61133d9190612554565b8110156113b15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f312e30250000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6113c381670de0b6b3a764000061253d565b600a5550565b6005545f906001600160a01b031633146114125760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b50600981905560015b919050565b6005546001600160a01b031633146114675760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6010819055600f55565b6005546001600160a01b031633146114b85760405162461bcd60e51b815260206004820181905260248201525f8051602061263983398151915260448201526064016109b3565b6001600160a01b0381166115345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109b3565b61153d81611e2b565b50565b6001600160a01b0383166115bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b0382166116375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116fb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b3565b6001600160a01b03821661175d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b3565b6001600160a01b0383165f908152600c602052604090205460ff16156117c55760405162461bcd60e51b815260206004820152601260248201527f53656e64657220626c61636b6c6973746564000000000000000000000000000060448201526064016109b3565b6001600160a01b0382165f908152600c602052604090205460ff161561182d5760405162461bcd60e51b815260206004820152601460248201527f526563656976657220626c61636b6c697374656400000000000000000000000060448201526064016109b3565b805f036118445761183f83835f611edc565b505050565b600b5460ff1615611bc4576005546001600160a01b0384811691161480159061187b57506005546001600160a01b03838116911614155b801561188f57506001600160a01b03821615155b80156118a55750600654600160a01b900460ff16155b15611bc457600b54610100900460ff16611942576001600160a01b0383165f9081526012602052604090205460ff16806118f657506001600160a01b0382165f9081526012602052604090205460ff165b6119425760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e0000000000000000000060448201526064016109b3565b6001600160a01b0383165f9081526014602052604090205460ff16801561198157506001600160a01b0382165f9081526013602052604090205460ff16155b15611a76576008548111156119fe5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e000000000000000000000060648201526084016109b3565b600a546001600160a01b0383165f90815260208190526040902054611a239083612573565b1115611a715760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c65742065786365656465640000000000000000000000000060448201526064016109b3565b611bc4565b6001600160a01b0382165f9081526014602052604090205460ff168015611ab557506001600160a01b0383165f9081526013602052604090205460ff16155b15611b3257600854811115611a715760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e0000000000000000000060648201526084016109b3565b6001600160a01b0382165f9081526013602052604090205460ff16611bc457600a546001600160a01b0383165f90815260208190526040902054611b769083612573565b1115611bc45760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c65742065786365656465640000000000000000000000000060448201526064016109b3565b305f9081526020819052604090205460095481108015908190611bef5750600b5462010000900460ff165b8015611c055750600654600160a01b900460ff16155b8015611c2957506001600160a01b0385165f9081526014602052604090205460ff16155b8015611c4d57506001600160a01b0385165f9081526012602052604090205460ff16155b8015611c7157506001600160a01b0384165f9081526012602052604090205460ff16155b15611c9f576006805460ff60a01b1916600160a01b179055611c916120c0565b6006805460ff60a01b191690555b6006546001600160a01b0386165f9081526012602052604090205460ff600160a01b909204821615911680611ceb57506001600160a01b0385165f9081526012602052604090205460ff165b15611cf357505f5b5f8115611e17576001600160a01b0386165f9081526014602052604090205460ff168015611d2257505f600f54115b15611d7f57611d476064611d41600f548861218590919063ffffffff16565b90612197565b9050600f5460105482611d5a919061253d565b611d649190612554565b60115f828254611d749190612573565b90915550611df99050565b6001600160a01b0387165f9081526014602052604090205460ff168015611da757505f600d54115b15611df957611dc66064611d41600d548861218590919063ffffffff16565b9050600d54600e5482611dd9919061253d565b611de39190612554565b60115f828254611df39190612573565b90915550505b8015611e0a57611e0a873083611edc565b611e1481866125a1565b94505b611e22878787611edc565b50505050505050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611f405760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b3565b6001600160a01b038216611fa25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b3565b6001600160a01b0383165f90815260208190526040902054818110156120305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612066908490612573565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120b291815260200190565b60405180910390a350505050565b305f9081526020819052604081205460115490918215806120df575081155b156120e957505050565b6009546120f790601461253d565b83111561210f5760095461210c90601461253d565b92505b824761211a826121a2565b5f6121254783612371565b5f60118190556007546040519293506001600160a01b031691839181818185875af1925050503d805f8114612175576040519150601f19603f3d011682016040523d82523d5f602084013e61217a565b606091505b505050505050505050565b5f612190828461253d565b9392505050565b5f6121908284612554565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106121d5576121d56125b4565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122759190612586565b81600181518110612288576122886125b4565b60200260200101906001600160a01b031690816001600160a01b0316815250506122d3307f000000000000000000000000000000000000000000000000000000000000000084611540565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906123409085905f908690309042906004016125c8565b5f604051808303815f87803b158015612357575f80fd5b505af1158015612369573d5f803e3d5ffd5b505050505050565b5f61219082846125a1565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461153d575f80fd5b5f80604083850312156123d6575f80fd5b82356123e1816123b1565b946020939093013593505050565b5f602082840312156123ff575f80fd5b8135612190816123b1565b5f6020828403121561241a575f80fd5b5035919050565b5f805f60608486031215612433575f80fd5b833561243e816123b1565b9250602084013561244e816123b1565b929592945050506040919091013590565b8035801515811461141b575f80fd5b5f806040838503121561247f575f80fd5b823561248a816123b1565b91506124986020840161245f565b90509250929050565b5f602082840312156124b1575f80fd5b6121908261245f565b5f80604083850312156124cb575f80fd5b82356124d6816123b1565b915060208301356124e6816123b1565b809150509250929050565b600181811c9082168061250557607f821691505b60208210810361252357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761096a5761096a612529565b5f8261256e57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561096a5761096a612529565b5f60208284031215612596575f80fd5b8151612190816123b1565b8181038181111561096a5761096a612529565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156126185783516001600160a01b03168352602093840193909201916001016125f1565b50506001600160a01b03959095166060840152505060800152939250505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122081e34287bb7b077858db8315382b1cffea1c782554d4f40af65a8b7320384a9664736f6c634300081a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572