60806040526002600555601460065560196007555f6008555f6009556032600a556032600b556005600c555f600d5560c86012600a61003e9190610493565b61004f90660327a19c8f80006104a8565b61005991906104bf565b600e556103e861006b6012600a610493565b61007c90660327a19c8f80006104a8565b61008691906104bf565b600f5560c86100976012600a610493565b6100a890660327a19c8f80006104a8565b6100b291906104bf565b6010556012805461ffff60a81b191690553480156100ce575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b0319163317905561012d6012600a610493565b61013e90660327a19c8f80006104a8565b335f9081526001602081815260408084209490945560038152838320805460ff1990811684179091553084528484208054821684179055737a250d5630b4cf539739df2c5dacb4c659f2488d938490527ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba88054909116909217909155601180546001600160a01b03191683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa158015610200573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022491906104de565b6001600160a01b031663c9c653963060115f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610283573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a791906104de565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102f1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031591906104de565b601280546001600160a01b0319166001600160a01b039290921691909117905561033c3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6103736012600a610493565b61038490660327a19c8f80006104a8565b60405190815260200160405180910390a3610504565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156103e9578085048111156103cd576103cd61039a565b60018416156103db57908102905b60019390931c9280026103b2565b935093915050565b5f826103ff5750600161048d565b8161040b57505f61048d565b8160018114610421576002811461042b57610447565b600191505061048d565b60ff84111561043c5761043c61039a565b50506001821b61048d565b5060208310610133831016604e8410600b841016171561046a575081810a61048d565b6104765f1984846103ae565b805f19048211156104895761048961039a565b0290505b92915050565b5f6104a160ff8416836103f1565b9392505050565b808202811582820484141761048d5761048d61039a565b5f826104d957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156104ee575f80fd5b81516001600160a01b03811681146104a1575f80fd5b611314806105115f395ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb14610383578063bf474bed146103a2578063c0246668146103b7578063c9567bf9146103d6578063cb711595146103ea578063dd62ed3e14610409575f80fd5b8063715018a6146102dc578063751039fc146102f057806382247ec0146103045780638da5cb5b1461031957806395d89b41146103355780639bcb19e414610364575f80fd5b806323b872dd1161010457806323b872dd14610202578063313ce5671461022157806351bc3c851461023c57806369fe0e2d146102525780636f268a991461027157806370a08231146102a8575f80fd5b806303807ee51461014a57806306fdde0314610172578063095ea7b3146101aa5780630faee56f146101d957806318160ddd146101ee575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015f60055481565b6040519081526020015b60405180910390f35b34801561017d575f80fd5b5060408051808201909152600781526625b0b4b9b432b760c91b60208201525b6040516101699190610f1f565b3480156101b5575f80fd5b506101c96101c4366004610f68565b61044d565b6040519015158152602001610169565b3480156101e4575f80fd5b5061015f60105481565b3480156101f9575f80fd5b5061015f610463565b34801561020d575f80fd5b506101c961021c366004610f92565b610486565b34801561022c575f80fd5b5060405160128152602001610169565b348015610247575f80fd5b506102506104ed565b005b34801561025d575f80fd5b5061025061026c366004610fd0565b610548565b34801561027c575f80fd5b50600454610290906001600160a01b031681565b6040516001600160a01b039091168152602001610169565b3480156102b3575f80fd5b5061015f6102c2366004610fe7565b6001600160a01b03165f9081526001602052604090205490565b3480156102e7575f80fd5b506102506105ce565b3480156102fb575f80fd5b5061025061063f565b34801561030f575f80fd5b5061015f600e5481565b348015610324575f80fd5b505f546001600160a01b0316610290565b348015610340575f80fd5b5060408051808201909152600781526625a0a4a9a422a760c91b602082015261019d565b34801561036f575f80fd5b5061025061037e366004610fd0565b610673565b34801561038e575f80fd5b506101c961039d366004610f68565b6106a1565b3480156103ad575f80fd5b5061015f600f5481565b3480156103c2575f80fd5b506102506103d1366004611002565b6106ad565b3480156103e1575f80fd5b50610250610700565b3480156103f5575f80fd5b50610250610404366004610fe7565b610742565b348015610414575f80fd5b5061015f61042336600461103d565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f61045933848461078d565b5060015b92915050565b5f6104706012600a611160565b61048190660327a19c8f800061116e565b905090565b5f6104928484846107ed565b6104e384336104de856040518060600160405280602881526020016112b7602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610bd3565b61078d565b5060019392505050565b5f546001600160a01b0316331461051f5760405162461bcd60e51b815260040161051690611185565b60405180910390fd5b305f9081526001602052604081205461053a90601054610c0b565b905061054581610c22565b50565b5f546001600160a01b031633146105715760405162461bcd60e51b815260040161051690611185565b601e8111156105ba5760405162461bcd60e51b81526020600482015260156024820152744d617820333025206665657320616c6c6f7765642160581b6044820152606401610516565b600881905560098190556006819055600755565b5f546001600160a01b031633146105f75760405162461bcd60e51b815260040161051690611185565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106685760405162461bcd60e51b815260040161051690611185565b5f6008819055600955565b5f546001600160a01b0316331461069c5760405162461bcd60e51b815260040161051690611185565b600e55565b5f6104593384846107ed565b5f546001600160a01b031633146106d65760405162461bcd60e51b815260040161051690611185565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107295760405162461bcd60e51b815260040161051690611185565b6012805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b0316331461076b5760405162461bcd60e51b815260040161051690611185565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f9081526003602052604081205460ff1615801561082d57506001600160a01b0383165f9081526003602052604090205460ff16155b801561084657505f546001600160a01b03858116911614155b15610a96576108776064610871600a54600d54116108665760065461086a565b6008545b8590610d95565b90610e13565b601254909150600160a01b900460ff166108ca5760405162461bcd60e51b815260206004820152601460248201527354726164696e67206973206e6f74206f70656e2160601b6044820152606401610516565b6012546001600160a01b039081169085160361096857600e5482610902856001600160a01b03165f9081526001602052604090205490565b61090c91906111ba565b11156109535760405162461bcd60e51b815260206004820152601660248201527522bc31b2b2b239903a34329036b0bc2bb0b63632ba1760511b6044820152606401610516565b600d8054905f610962836111cd565b91905055505b6012546001600160a01b0390811690841603610a0b576109a36064610871600b54600d54116109995760075461086a565b6009548590610d95565b90506109b16012600a611160565b6109c290660327a19c8f800061116e565b600e5410610a0b5760405162461bcd60e51b815260206004820152601660248201527522bc31b2b2b239903a34329036b0bc2bb0b63632ba1760511b6044820152606401610516565b305f90815260016020526040902054601254600160a81b900460ff16158015610a4157506012546001600160a01b038581169116145b8015610a565750601254600160b01b900460ff165b8015610a635750600f5481115b8015610a725750600c54600d54115b15610a9457610a94610a8f84610a8a84601054610c0b565b610c0b565b610c22565b505b8015610b0e57305f90815260016020526040902054610ab59082610e54565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b059085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610b309083610eb2565b6001600160a01b0385165f90815260016020526040902055610b73610b558383610eb2565b6001600160a01b0385165f9081526001602052604090205490610e54565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610bbc8585610eb2565b60405190815260200160405180910390a350505050565b5f8184841115610bf65760405162461bcd60e51b81526004016105169190610f1f565b505f610c0284866111e5565b95945050505050565b5f818311610c195782610c1b565b815b9392505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c6857610c686111f8565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cbf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce3919061120c565b81600181518110610cf657610cf66111f8565b6001600160a01b039283166020918202929092010152601154610d1c913091168461078d565b6011546004805460405163791ac94760e01b81526001600160a01b039384169363791ac94793610d579388935f938993921691429101611227565b5f604051808303815f87803b158015610d6e575f80fd5b505af1158015610d80573d5f803e3d5ffd5b50506012805460ff60a81b1916905550505050565b5f825f03610da457505f61045d565b5f610daf838561116e565b905082610dbc8583611297565b14610c1b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610516565b5f610c1b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610ef3565b5f80610e6083856111ba565b905083811015610c1b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610516565b5f610c1b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bd3565b5f8183610f135760405162461bcd60e51b81526004016105169190610f1f565b505f610c028486611297565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610545575f80fd5b5f8060408385031215610f79575f80fd5b8235610f8481610f54565b946020939093013593505050565b5f805f60608486031215610fa4575f80fd5b8335610faf81610f54565b92506020840135610fbf81610f54565b929592945050506040919091013590565b5f60208284031215610fe0575f80fd5b5035919050565b5f60208284031215610ff7575f80fd5b8135610c1b81610f54565b5f8060408385031215611013575f80fd5b823561101e81610f54565b915060208301358015158114611032575f80fd5b809150509250929050565b5f806040838503121561104e575f80fd5b823561105981610f54565b9150602083013561103281610f54565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156110b85780850481111561109c5761109c611069565b60018416156110aa57908102905b60019390931c928002611081565b935093915050565b5f826110ce5750600161045d565b816110da57505f61045d565b81600181146110f057600281146110fa57611116565b600191505061045d565b60ff84111561110b5761110b611069565b50506001821b61045d565b5060208310610133831016604e8410600b8410161715611139575081810a61045d565b6111455f19848461107d565b805f190482111561115857611158611069565b029392505050565b5f610c1b60ff8416836110c0565b808202811582820484141761045d5761045d611069565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561045d5761045d611069565b5f600182016111de576111de611069565b5060010190565b8181038181111561045d5761045d611069565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561121c575f80fd5b8151610c1b81610f54565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156112775783516001600160a01b0316835260209384019390920191600101611250565b50506001600160a01b039590951660608401525050608001529392505050565b5f826112b157634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202e9df402f9c805c211b88c17a26089275c7252abfc4c4a29959a879c8746c21b64736f6c634300081a0033