60806040526003805463ffff000019169055612710620000226012600a62000386565b62000030906127106200039d565b6200003d9060196200039d565b620000499190620003b7565b60045560646200005c6012600a62000386565b6200006a906127106200039d565b620000779060326200039d565b620000839190620003b7565b6005556064620000966012600a62000386565b620000a4906127106200039d565b620000b19060326200039d565b620000bd9190620003b7565b600655600a80546001600160a01b03191673e470699f6d0384e3ea68f1144e41d22c6c8fdeef179055348015620000f2575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001416012600a62000386565b6200014f906127106200039d565b60015f620001645f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20556200018f5f546001600160a01b031690565b600980546001600160a01b0319166001600160a01b0392909216919091179055305f908152600b602081905260408220805460ff1916600190811790915591620001e05f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055620002195f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002526012600a62000386565b62000260906127106200039d565b60405190815260200160405180910390a3620003d7565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002cb57815f1904821115620002af57620002af62000277565b80851615620002bd57918102915b93841c939080029062000290565b509250929050565b5f82620002e35750600162000380565b81620002f157505f62000380565b81600181146200030a5760028114620003155762000335565b600191505062000380565b60ff84111562000329576200032962000277565b50506001821b62000380565b5060208310610133831016604e8410600b84101617156200035a575081810a62000380565b6200036683836200028b565b805f19048211156200037c576200037c62000277565b0290505b92915050565b5f6200039660ff841683620002d3565b9392505050565b808202811582820484141762000380576200038062000277565b5f82620003d257634e487b7160e01b5f52601260045260245ffd5b500490565b61138780620003e55f395ff3fe6080604052600436106100fd575f3560e01c8063751039fc116100925780639fac68cb116100625780639fac68cb146102c6578063a9059cbb146102e5578063a9128ff014610304578063cc1776d314610323578063dd62ed3e14610343575f80fd5b8063751039fc146102495780638a8c523c1461025d5780638da5cb5b1461027157806395d89b4114610297575f80fd5b8063313ce567116100cd578063313ce567146101bf5780634f7041a5146101e057806370a08231146101ff578063715018a614610233575f80fd5b806306fdde0314610108578063095ea7b31461014f57806318160ddd1461017e57806323b872dd146101a0575f80fd5b3661010457005b5f80fd5b348015610113575f80fd5b5060408051808201909152600d81526c14185b991bdc98515c98cd0c0d609a1b60208201525b6040516101469190610f97565b60405180910390f35b34801561015a575f80fd5b5061016e610169366004610ff7565b610387565b6040519015158152602001610146565b348015610189575f80fd5b5061019261039d565b604051908152602001610146565b3480156101ab575f80fd5b5061016e6101ba366004611021565b6103bb565b3480156101ca575f80fd5b5060125b60405160ff9091168152602001610146565b3480156101eb575f80fd5b506003546101ce9062010000900460ff1681565b34801561020a575f80fd5b5061019261021936600461105f565b6001600160a01b03165f9081526001602052604090205490565b34801561023e575f80fd5b5061024761040c565b005b348015610254575f80fd5b50610247610486565b348015610268575f80fd5b506102476104c7565b34801561027c575f80fd5b505f546040516001600160a01b039091168152602001610146565b3480156102a2575f80fd5b5060408051808201909152600781526650616e646f726160c81b6020820152610139565b3480156102d1575f80fd5b506102476102e036600461107a565b61070f565b3480156102f0575f80fd5b5061016e6102ff366004610ff7565b61078f565b34801561030f575f80fd5b5061024761031e3660046110c1565b61079b565b34801561032e575f80fd5b506003546101ce906301000000900460ff1681565b34801561034e575f80fd5b5061019261035d3660046110f2565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f610393338484610848565b5060015b92915050565b5f6103aa6012600a611212565b6103b690612710611220565b905090565b5f6103c784848461096c565b6001600160a01b0384165f908152600260209081526040808320338085529252909120546104019186916103fc908690611237565b610848565b5060015b9392505050565b5f546001600160a01b0316331461043e5760405162461bcd60e51b81526004016104359061124a565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104af5760405162461bcd60e51b81526004016104359061124a565b6104b761039d565b6005556104c261039d565b600655565b5f546001600160a01b031633146104f05760405162461bcd60e51b81526004016104359061124a565b60035460ff16156105355760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610435565b6003805460ff19166001179055600a54600780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561059c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c0919061127f565b6001600160a01b031663e6a439053060075f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610643919061127f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561068c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b0919061127f565b600880546001600160a01b0319166001600160a01b0392909216918217905561070d5760405162461bcd60e51b815260206004820152600f60248201526e139bc81c185a5c8818dc99585d1959608a1b6044820152606401610435565b565b5f546001600160a01b031633146107385760405162461bcd60e51b81526004016104359061124a565b801561076757335f908152600160205260408120805484929061075c908490611237565b9091555061078b9050565b335f908152600160205260408120805484929061078590849061129a565b90915550505b5050565b5f61039333848461096c565b5f546001600160a01b031633146107c45760405162461bcd60e51b81526004016104359061124a565b60638260ff16111580156107dc575060638160ff1611155b6108165760405162461bcd60e51b815260206004820152600b60248201526a092dcecc2d8d2c840a8c2f60ab1b6044820152606401610435565b6003805463ffff000019166201000060ff9485160263ff00000019161763010000009290931691909102919091179055565b6001600160a01b0383166108aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610435565b6001600160a01b03821661090b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610435565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f81116109a95760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610435565b60035460ff16610a05575f546001600160a01b03848116911614610a055760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610435565b6008546001600160a01b03848116911614801590610a3157506008546001600160a01b03838116911614155b80610a5357506001600160a01b0383165f908152600b602052604090205460ff165b80610a7557506001600160a01b0382165f908152600b602052604090205460ff165b80610a875750600354610100900460ff165b15610a9c57610a97838383610cf3565b505050565b6008546001600160a01b0390811690831603610bc0576001600160a01b0383165f908152600c6020526040902054610ad590600361129a565b43108015610afa57506001600160a01b0383165f908152600d60205260409020548111155b610b355760405162461bcd60e51b815260206004820152600c60248201526b105b5bdd5b9d081b1a5b5a5d60a21b6044820152606401610435565b6001600160a01b0383165f908152600d602052604081208054839290610b5c908490611237565b9091555050600454305f9081526001602052604090205410610bc0576003805461ff001916610100179055610bad610ba8306001600160a01b03165f9081526001602052604090205490565b610d92565b6003805461ff0019169055610bc0610ee5565b6008546001600160a01b038481169116148015610beb5750600a546001600160a01b03838116911614155b15610ccc57600554811115610c345760405162461bcd60e51b815260206004820152600f60248201526e151e08185b5bdd5b9d081b1a5b5a5d608a1b6044820152606401610435565b60065481610c56846001600160a01b03165f9081526001602052604090205490565b610c60919061129a565b1115610ca45760405162461bcd60e51b815260206004820152601360248201527215d85b1b195d08185b5bdd5b9d081b1a5b5a5d606a1b6044820152606401610435565b6001600160a01b0382165f908152600c60209081526040808320439055600d90915290208190555b600854610cea90849083906001600160a01b03868116911614610f24565b9050610a978383835b6001600160a01b0383165f9081526001602052604081208054839290610d1a908490611237565b90915550506001600160a01b0382165f9081526001602052604081208054839290610d4690849061129a565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161095f91815260200190565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610dc557610dc56112ad565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e40919061127f565b81600181518110610e5357610e536112ad565b6001600160a01b039283166020918202929092010152600754610e799130911684610848565b60075460095460405163791ac94760e01b81526001600160a01b039283169263791ac94792610eb59287925f92889291169042906004016112c1565b5f604051808303815f87803b158015610ecc575f80fd5b505af1925050508015610edd575060015b61078b575050565b471561070d576009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610f21573d5f803e3d5ffd5b50565b5f8082610f3c5760035462010000900460ff16610f4a565b6003546301000000900460ff165b60ff169050805f03610f5f5783915050610405565b5f6064610f6c8387611220565b610f769190611332565b9050610f83863083610cf3565b610f8d8186611237565b9695505050505050565b5f602080835283518060208501525f5b81811015610fc357858101830151858201604001528201610fa7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f21575f80fd5b5f8060408385031215611008575f80fd5b823561101381610fe3565b946020939093013593505050565b5f805f60608486031215611033575f80fd5b833561103e81610fe3565b9250602084013561104e81610fe3565b929592945050506040919091013590565b5f6020828403121561106f575f80fd5b813561040581610fe3565b5f806040838503121561108b575f80fd5b82359150602083013580151581146110a1575f80fd5b809150509250929050565b803560ff811681146110bc575f80fd5b919050565b5f80604083850312156110d2575f80fd5b6110db836110ac565b91506110e9602084016110ac565b90509250929050565b5f8060408385031215611103575f80fd5b823561110e81610fe3565b915060208301356110a181610fe3565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561116c57815f19048211156111525761115261111e565b8085161561115f57918102915b93841c9390800290611137565b509250929050565b5f8261118257506001610397565b8161118e57505f610397565b81600181146111a457600281146111ae576111ca565b6001915050610397565b60ff8411156111bf576111bf61111e565b50506001821b610397565b5060208310610133831016604e8410600b84101617156111ed575081810a610397565b6111f78383611132565b805f190482111561120a5761120a61111e565b029392505050565b5f61040560ff841683611174565b80820281158282048414176103975761039761111e565b818103818111156103975761039761111e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561128f575f80fd5b815161040581610fe3565b808201808211156103975761039761111e565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156113115784516001600160a01b0316835293830193918301916001016112ec565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261134c57634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212208e8e1c17c60391d5e2e05a3ef7a55ca6ba1ff14a4ddc9384ca07fcd4af2a6cfa64736f6c63430008180033