6080604052601460065560006007556005600855600560095560646009600a6200002a919062000359565b6200003a90633b9aca0062000371565b6200004790600262000371565b6200005391906200038b565b600a5560646009600a62000068919062000359565b6200007890633b9aca0062000371565b6200008590600262000371565b6200009191906200038b565b600b556064620000a46009600a62000359565b620000b490633b9aca0062000371565b620000c091906200038b565b600c556064620000d36009600a62000359565b620000e390633b9aca0062000371565b620000ef91906200038b565b600d55600e805463ffffff00191690553480156200010c57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600054600180546001600160a01b0319166001600160a01b039092169190911790556200017e6009600a62000359565b6200018e90633b9aca0062000371565b3360008181526004602090815260408083209490945581546001600160a01b03908116835260059091528382208054600160ff1991821681179092553084528584208054821683179055815490921683529382208054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200021d6009600a62000359565b6200022d90633b9aca0062000371565b60405190815260200160405180910390a3620003ae565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200029b5781600019048211156200027f576200027f62000244565b808516156200028d57918102915b93841c93908002906200025f565b509250929050565b600082620002b45750600162000353565b81620002c35750600062000353565b8160018114620002dc5760028114620002e75762000307565b600191505062000353565b60ff841115620002fb57620002fb62000244565b50506001821b62000353565b5060208310610133831016604e8410600b84101617156200032c575081810a62000353565b6200033883836200025a565b80600019048211156200034f576200034f62000244565b0290505b92915050565b60006200036a60ff841683620002a3565b9392505050565b808202811582820484141762000353576200035362000244565b600082620003a957634e487b7160e01b600052601260045260246000fd5b500490565b611ded80620003be6000396000f3fe60806040526004361061016e5760003560e01c80637d1db4a5116100cb578063a9059cbb1161007f578063d286a10111610059578063d286a101146103f3578063dd62ed3e14610408578063ddf731f31461044e57600080fd5b8063a9059cbb146103a8578063bf474bed146103c8578063c9567bf9146103de57600080fd5b80638f9a55c0116100b05780638f9a55c01461033757806395d89b411461034d578063973c7aa41461039357600080fd5b80637d1db4a5146102f95780638da5cb5b1461030f57600080fd5b806323b872dd11610122578063364333f411610107578063364333f41461029957806370a08231146102ae578063715018a6146102e457600080fd5b806323b872dd1461025d578063313ce5671461027d57600080fd5b8063095ea7b311610153578063095ea7b3146101f45780630faee56f1461022457806318160ddd1461024857600080fd5b806306935d4f1461017a57806306fdde031461019c57600080fd5b3661017557005b600080fd5b34801561018657600080fd5b5061019a6101953660046119bd565b61046e565b005b3480156101a857600080fd5b5060408051808201909152600b81527f416e6f6e20414920424f5400000000000000000000000000000000000000000060208201525b6040516101eb91906119da565b60405180910390f35b34801561020057600080fd5b5061021461020f366004611a5b565b610505565b60405190151581526020016101eb565b34801561023057600080fd5b5061023a600d5481565b6040519081526020016101eb565b34801561025457600080fd5b5061023a61051c565b34801561026957600080fd5b50610214610278366004611a87565b61053d565b34801561028957600080fd5b50604051600981526020016101eb565b3480156102a557600080fd5b5061019a6105a6565b3480156102ba57600080fd5b5061023a6102c9366004611ac8565b6001600160a01b031660009081526004602052604090205490565b3480156102f057600080fd5b5061019a61063c565b34801561030557600080fd5b5061023a600a5481565b34801561031b57600080fd5b506000546040516001600160a01b0390911681526020016101eb565b34801561034357600080fd5b5061023a600b5481565b34801561035957600080fd5b5060408051808201909152600b81527f414e4f4e20414920424f5400000000000000000000000000000000000000000060208201526101de565b34801561039f57600080fd5b5061019a6106f8565b3480156103b457600080fd5b506102146103c3366004611a5b565b6107dc565b3480156103d457600080fd5b5061023a600c5481565b3480156103ea57600080fd5b5061019a6107e9565b3480156103ff57600080fd5b5061019a6108c9565b34801561041457600080fd5b5061023a610423366004611ae5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561045a57600080fd5b5061019a610469366004611ac8565b610934565b6000546001600160a01b031633146104cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600e805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b6000610512338484610d6d565b5060015b92915050565b600061052a6009600a611c18565b61053890633b9aca00611c27565b905090565b600061054a848484610ec5565b61059c843361059785604051806060016040528060288152602001611d90602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906115a2565b610d6d565b5060019392505050565b6000546001600160a01b031633146106005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c4565b6001546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610639573d6000803e3d6000fd5b50565b6000546001600160a01b031633146106965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000546001600160a01b031633146107525760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c4565b61075e6009600a611c18565b61076c90633b9aca00611c27565b600a90815561077d90600990611c18565b61078b90633b9aca00611c27565b600b557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6107bb6009600a611c18565b6107c990633b9aca00611c27565b60405190815260200160405180910390a1565b6000610512338484610ec5565b6000546001600160a01b031633146108435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c4565b600e5460ff16156108965760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104c4565b600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00166201000117905543600255565b6000546001600160a01b031633146109235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c4565b600360088190556009556000600655565b6000546001600160a01b0316331461098e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c4565b600e80546001600160a01b038084166401000000009081027fffffffffffffffff000000000000000000000000000000000000000000ffffff90931692909217630100000017928390556109fb9230929004166109ed6009600a611c18565b61059790633b9aca00611c27565b600e60049054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a729190611c3e565b6001600160a01b031663c9c6539630600e60049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190611c3e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b819190611c3e565b600f80546001600160a01b039283167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055600e5464010000000090041663f305d7194730610be9816001600160a01b031660009081526004602052604090205490565b600080610bfe6000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c7e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ca39190611c5b565b5050600f54600e546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036401000000009092048216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d419190611c89565b5050600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff169055565b6001600160a01b038316610de85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c4565b6001600160a01b038216610e645760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104c4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f415760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104c4565b6001600160a01b038216610fbd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104c4565b600081116110335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016104c4565b6001546000906001600160a01b0385811691161480159061106257506001546001600160a01b03848116911614155b15611414576001600160a01b0384166000908152600460205260409020548211156110cf5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000060448201526064016104c4565b6110ef60646110e9600854856115dc90919063ffffffff16565b90611681565b600f549091506001600160a01b0385811691161480156111255750600e546001600160a01b038481166401000000009092041614155b801561112f575060015b801561115457506001600160a01b03831660009081526005602052604090205460ff16155b1561125e57600a548211156111ab5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016104c4565b600b54826111ce856001600160a01b031660009081526004602052604090205490565b6111d89190611ca6565b11156112265760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104c4565b4360025460036112369190611ca6565b111561124857823b1561124857600080fd5b6007805490600061125883611cb9565b91905055505b600f546001600160a01b0384811691161480159061129557506001600160a01b03831660009081526005602052604090205460ff16155b1561131557600b54826112bd856001600160a01b031660009081526004602052604090205490565b6112c79190611ca6565b11156113155760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104c4565b600f546001600160a01b03848116911614801561133b57506001600160a01b0384163014155b1561135d5761135a60646110e9600954856115dc90919063ffffffff16565b90505b30600090815260046020526040902054600e54610100900460ff161580156113925750600f546001600160a01b038581169116145b80156113a65750600e5462010000900460ff165b80156113b35750600c5481115b80156113c25750600654600754115b80156113e757506001600160a01b03851660009081526005602052604090205460ff16155b15611412576114006113fb82600d546116c3565b6116ec565b47801561141057611410476118a2565b505b505b600e546301000000900460ff161561142a575060005b80156114f657600e5460ff166114825760405162461bcd60e51b815260206004820152601060248201527f54726164696e67206e6f74206c6976650000000000000000000000000000000060448201526064016104c4565b3060009081526004602052604090205461149c90826118e0565b30600081815260046020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114ed9085815260200190565b60405180910390a35b6001600160a01b038416600090815260046020526040902080548390039055611541611522838361193f565b6001600160a01b038516600090815260046020526040902054906118e0565b6001600160a01b0380851660008181526004602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61158b858561193f565b60405190815260200160405180910390a350505050565b600081848411156115c65760405162461bcd60e51b81526004016104c491906119da565b5060006115d38486611cd3565b95945050505050565b6000826000036115ee57506000610516565b60006115fa8385611c27565b9050826116078583611ce6565b1461167a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016104c4565b9392505050565b600061167a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611981565b600081831180156116dc575068056bc75e2d6310000083105b6116e6578261167a565b50919050565b600e805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061173057611730611d08565b60200260200101906001600160a01b031690816001600160a01b031681525050600e60049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190611c3e565b816001815181106117da576117da611d08565b6001600160a01b039283166020918202929092010152600e5461180891309164010000000090041684610d6d565b600e546040517f791ac9470000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03169063791ac94790611861908590600090869030904290600401611d1e565b600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b5050600e805461ff001916905550505050565b6001546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156118dc573d6000803e3d6000fd5b5050565b6000806118ed8385611ca6565b90508381101561167a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104c4565b600061167a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115a2565b600081836119a25760405162461bcd60e51b81526004016104c491906119da565b5060006115d38486611ce6565b801515811461063957600080fd5b6000602082840312156119cf57600080fd5b813561167a816119af565b600060208083528351808285015260005b81811015611a07578581018301518582016040015282016119eb565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6001600160a01b038116811461063957600080fd5b60008060408385031215611a6e57600080fd5b8235611a7981611a46565b946020939093013593505050565b600080600060608486031215611a9c57600080fd5b8335611aa781611a46565b92506020840135611ab781611a46565b929592945050506040919091013590565b600060208284031215611ada57600080fd5b813561167a81611a46565b60008060408385031215611af857600080fd5b8235611b0381611a46565b91506020830135611b1381611a46565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611b6f578160001904821115611b5557611b55611b1e565b80851615611b6257918102915b93841c9390800290611b39565b509250929050565b600082611b8657506001610516565b81611b9357506000610516565b8160018114611ba95760028114611bb357611bcf565b6001915050610516565b60ff841115611bc457611bc4611b1e565b50506001821b610516565b5060208310610133831016604e8410600b8410161715611bf2575081810a610516565b611bfc8383611b34565b8060001904821115611c1057611c10611b1e565b029392505050565b600061167a60ff841683611b77565b808202811582820484141761051657610516611b1e565b600060208284031215611c5057600080fd5b815161167a81611a46565b600080600060608486031215611c7057600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c9b57600080fd5b815161167a816119af565b8082018082111561051657610516611b1e565b60006000198203611ccc57611ccc611b1e565b5060010190565b8181038181111561051657610516611b1e565b600082611d0357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d6e5784516001600160a01b031683529383019391830191600101611d49565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201eaa009f54a2890c9dfc4a0bcfcf4d9b5586ef88665e1d6cc47fd52b833abaa164736f6c63430008130033