0x608060405260096006556019600755600060085560006009556023600a556014600b556019600c556000600d556000600e5560646009600a6100419190610383565b61004f90633b9aca00610399565b61005a906002610399565b61006491906103b0565b600f5560646100756009600a610383565b61008390633b9aca00610399565b61008e906002610399565b61009891906103b0565b6010556127106100aa6009600a610383565b6100b890633b9aca00610399565b6100c3906005610399565b6100cd91906103b0565b60115560646100de6009600a610383565b6100ec90633b9aca00610399565b6100f7906001610399565b61010191906103b0565b6012556014805461ffff60a81b191690556000601581905560165534801561012857600080fd5b506040516120fb3803806120fb833981016040819052610147916103d2565b600080546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b03199081166001600160a01b0393841617909155600580549091169183169190911790556101c36009600a610383565b6101d190633b9aca00610399565b3360008181526002602090815260408083209490945581546001600160a01b03908116835260049091528382208054600160ff199182168117909255308452858420805482168317905560055490921683529382208054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61025f6009600a610383565b61026d90633b9aca00610399565b60405190815260200160405180910390a3506103fb565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156102d5578085048111156102b9576102b9610284565b60018416156102c757908102905b60019390931c92800261029e565b935093915050565b6000826102ec5750600161037d565b816102f95750600061037d565b816001811461030f576002811461031957610335565b600191505061037d565b60ff84111561032a5761032a610284565b50506001821b61037d565b5060208310610133831016604e8410600b8410161715610358575081810a61037d565b610365600019848461029a565b806000190482111561037957610379610284565b0290505b92915050565b600061039260ff8416836102dd565b9392505050565b808202811582820484141761037d5761037d610284565b6000826103cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156103e457600080fd5b81516001600160a01b038116811461039257600080fd5b611cf18061040a6000396000f3fe60806040526004361061012e5760003560e01c8063751039fc116100ab578063a9059cbb1161006f578063a9059cbb146102fe578063b3c5eac71461031e578063bf474bed14610333578063c9567bf914610349578063dd62ed3e1461035e578063ec1f3f63146103a457600080fd5b8063751039fc146102955780637d1db4a5146102aa5780638da5cb5b146102c05780638f9a55c0146102e857806395d89b411461013a57600080fd5b806323b872dd116100f257806323b872dd146101f9578063313ce5671461021957806351bc3c851461023557806370a082311461024a578063715018a61461028057600080fd5b806306fdde031461013a578063095ea7b3146101795780630faee56f146101a9578063109daa99146101cd57806318160ddd146101e457600080fd5b3661013557005b600080fd5b34801561014657600080fd5b50604080518082018252600781526610d05511d2549360ca1b6020820152905161017091906118a6565b60405180910390f35b34801561018557600080fd5b50610199610194366004611909565b6103c4565b6040519015158152602001610170565b3480156101b557600080fd5b506101bf60125481565b604051908152602001610170565b3480156101d957600080fd5b506101e26103db565b005b3480156101f057600080fd5b506101bf61044b565b34801561020557600080fd5b50610199610214366004611935565b61046c565b34801561022557600080fd5b5060405160098152602001610170565b34801561024157600080fd5b506101e26104d5565b34801561025657600080fd5b506101bf610265366004611976565b6001600160a01b031660009081526002602052604090205490565b34801561028c57600080fd5b506101e261053f565b3480156102a157600080fd5b506101e26105b3565b3480156102b657600080fd5b506101bf600f5481565b3480156102cc57600080fd5b506000546040516001600160a01b039091168152602001610170565b3480156102f457600080fd5b506101bf60105481565b34801561030a57600080fd5b50610199610319366004611909565b610660565b34801561032a57600080fd5b506101e261066d565b34801561033f57600080fd5b506101bf60115481565b34801561035557600080fd5b506101e26106c6565b34801561036a57600080fd5b506101bf610379366004611993565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156103b057600080fd5b506101e26103bf3660046119cc565b610d89565b60006103d1338484610dd0565b5060015b92915050565b6000546001600160a01b0316331461040e5760405162461bcd60e51b8152600401610405906119e5565b60405180910390fd5b6000600d8190556040519081527fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3906020015b60405180910390a1565b60006104596009600a611b17565b61046790633b9aca00611b26565b905090565b6000610479848484610ef4565b6104cb84336104c685604051806060016040528060288152602001611c94602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906114ab565b610dd0565b5060019392505050565b6005546001600160a01b0316336001600160a01b0316146104f557600080fd5b30600090815260026020526040902054801580159061051d5750601454600160b01b900460ff165b1561052b5761052b816114e5565b47801561053b5761053b81611666565b5050565b6000546001600160a01b031633146105695760405162461bcd60e51b8152600401610405906119e5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105dd5760405162461bcd60e51b8152600401610405906119e5565b6105e96009600a611b17565b6105f790633b9aca00611b26565b600f556106066009600a611b17565b61061490633b9aca00611b26565b6010557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106446009600a611b17565b61065290633b9aca00611b26565b604051908152602001610441565b60006103d1338484610ef4565b6000546001600160a01b031633146106975760405162461bcd60e51b8152600401610405906119e5565b60405133904780156108fc02916000818181858888f193505050501580156106c3573d6000803e3d6000fd5b50565b6000546001600160a01b031633146106f05760405162461bcd60e51b8152600401610405906119e5565b601454600160a01b900460ff161561074a5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610405565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107939030906107856009600a611b17565b6104c690633b9aca00611b26565b6013546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa1580156107dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108019190611b3d565b6001600160a01b031663e6a43905601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190611b3d565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa1580156108d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f49190611b3d565b6001600160a01b031603610a9357601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109799190611b3d565b6001600160a01b031663c9c65396601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe9190611b3d565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6e9190611b3d565b601480546001600160a01b0319166001600160a01b0392909216919091179055610c1e565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611b3d565b6001600160a01b031663e6a43905601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8f9190611b3d565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd9190611b3d565b601480546001600160a01b0319166001600160a01b03929092169190911790555b6013546001600160a01b031663f305d7194730610c50816001600160a01b031660009081526002602052604090205490565b600080610c656000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ccd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cf29190611b5a565b505060145460135460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190611b88565b506014805462ff00ff60a01b19166201000160a01b179055565b6005546001600160a01b0316336001600160a01b031614610da957600080fd5b6008548111158015610dbd57506009548111155b610dc657600080fd5b6008819055600955565b6001600160a01b038316610e325760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610405565b6001600160a01b038216610e935760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610405565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f585760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610405565b6001600160a01b038216610fba5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610405565b6000811161101c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610405565b600080546001600160a01b0385811691161480159061104957506000546001600160a01b03848116911614155b801561106357506005546001600160a01b03848116911614155b1561137857600e546000036110a25761109f6064611099600a54600e54101561108e57600654611092565b6008545b85906116a0565b90611729565b90505b600e54156110c7576110c46064611099600d54856116a090919063ffffffff16565b90505b6014546001600160a01b0385811691161480156110f257506013546001600160a01b03848116911614155b801561111757506001600160a01b03831660009081526004602052604090205460ff16155b1561121d57600f5482111561116e5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610405565b60105482611191856001600160a01b031660009081526002602052604090205490565b61119b9190611baa565b11156111e95760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610405565b6112056064611099600a54600e54101561108e57600654611092565b600e8054919250600061121783611bbd565b91905055505b6014546001600160a01b03848116911614801561124357506001600160a01b0384163014155b156112715761126e6064611099600b54600e54101561126457600754611092565b60095485906116a0565b90505b30600090815260026020526040902054601454600160a81b900460ff161580156112a857506014546001600160a01b038581169116145b80156112bd5750601454600160b01b900460ff165b80156112cd5750600c54600e5410155b15611376576016544311156112e25760006015555b6003601554106113345760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000006044820152606401610405565b61135161134c846113478460125461176b565b61176b565b6114e5565b4761135b47611666565b6015805490600061136b83611bbd565b909155505043601655505b505b80156113f257306000908152600260205260409020546113989082611780565b30600081815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113e99085815260200190565b60405180910390a35b611405826113ff866117df565b906117ea565b6001600160a01b03851660009081526002602052604090205561144a61142b83836117ea565b6001600160a01b03851660009081526002602052604090205490611780565b6001600160a01b0380851660008181526002602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61149485856117ea565b60405190815260200160405180910390a350505050565b600081848411156114cf5760405162461bcd60e51b815260040161040591906118a6565b5060006114dc8486611bd6565b95945050505050565b6014805460ff60a81b1916600160a81b179055801561165657604080516002808252606082018352600092602083019080368337019050509050308160008151811061153357611533611be9565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b09190611b3d565b816001815181106115c3576115c3611be9565b6001600160a01b0392831660209182029290920101526013546115e99130911684610dd0565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790611622908590600090869030904290600401611bff565b600060405180830381600087803b15801561163c57600080fd5b505af1158015611650573d6000803e3d6000fd5b50505050505b506014805460ff60a81b19169055565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561053b573d6000803e3d6000fd5b6000826000036116b2575060006103d5565b60006116be8385611b26565b9050826116cb8583611c71565b146117225760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610405565b9392505050565b600061172283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061182c565b600081831161177a5782611722565b50919050565b60008061178d8385611baa565b9050838110156117225760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610405565b60006103d58261185a565b600061172283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114ab565b6000818361184d5760405162461bcd60e51b815260040161040591906118a6565b5060006114dc8486611c71565b60006103d5826001546000906001600160a01b039081169083160361188a575069d3c21bcecceda1000000919050565b506001600160a01b031660009081526002602052604090205490565b602081526000825180602084015260005b818110156118d457602081860181015160408684010152016118b7565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146106c357600080fd5b6000806040838503121561191c57600080fd5b8235611927816118f4565b946020939093013593505050565b60008060006060848603121561194a57600080fd5b8335611955816118f4565b92506020840135611965816118f4565b929592945050506040919091013590565b60006020828403121561198857600080fd5b8135611722816118f4565b600080604083850312156119a657600080fd5b82356119b1816118f4565b915060208301356119c1816118f4565b809150509250929050565b6000602082840312156119de57600080fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611a6b57808504811115611a4f57611a4f611a1a565b6001841615611a5d57908102905b60019390931c928002611a34565b935093915050565b600082611a82575060016103d5565b81611a8f575060006103d5565b8160018114611aa55760028114611aaf57611acb565b60019150506103d5565b60ff841115611ac057611ac0611a1a565b50506001821b6103d5565b5060208310610133831016604e8410600b8410161715611aee575081810a6103d5565b611afb6000198484611a30565b8060001904821115611b0f57611b0f611a1a565b029392505050565b600061172260ff841683611a73565b80820281158282048414176103d5576103d5611a1a565b600060208284031215611b4f57600080fd5b8151611722816118f4565b600080600060608486031215611b6f57600080fd5b5050815160208301516040909301519094929350919050565b600060208284031215611b9a57600080fd5b8151801515811461172257600080fd5b808201808211156103d5576103d5611a1a565b600060018201611bcf57611bcf611a1a565b5060010190565b818103818111156103d5576103d5611a1a565b634e487b7160e01b600052603260045260246000fd5b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015611c515783516001600160a01b0316835260209384019390920191600101611c2a565b50506001600160a01b039590951660608401525050608001529392505050565b600082611c8e57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220699dbd3e9c51f62826dd23bea4ddf70510db5ae4ff03f2dd003459852c93ec6f64736f6c634300081a003300000000000000000000000080854cb24b4b0becf88e3321ab73734964b258e1