0x60c0604052600a60809081526958205061796d656e747360b01b60a052600190610029908261065d565b506040805180820190915260048152635850415960e01b6020820152600290610052908261065d565b506003805460ff1916601290811790915561006e90600a61080e565b61007c90633b9aca0061081c565b600481905561008c9060016104dd565b60055560045461009d9060016104dd565b6006556004546100af906127106104dd565b600755600880546001600160a01b03191633179055606260118190556013556012546010546100dd9161052d565b6014556013546011546100ef9161052d565b601555601a805462ffffff60a81b19166201000160a81b179055348015610114575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f738cfe327cec66d1c090dd72bd0ff11d690c33a2eb9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101cd9190610833565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610218573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023c9190610833565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102aa9190610833565b601a80546001600160a01b039283166001600160a01b031991821617909155601980549284169290911682179055600454305f908152600a6020908152604080832094835293905291822055600190600b9061030d5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff19958616179055308152600b90925290208054909116600117905560115460105461035b9161052d565b60165560135460125461036d9161052d565b60175560155460145461037f9161052d565b6018556001600c5f6103985f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601a549091168152600c90925280822080548416600190811790915530835290822080549093168117909255600d906104055f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600d8452828120805486166001908117909155601a549092168152600e9093529082208054909316179091556004549060099061046f3390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516104cf91815260200190565b60405180910390a3506108c0565b5f61052483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061059060201b60201c565b90505b92915050565b5f806105398385610859565b9050838110156105245760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b5f81836105b05760405162461bcd60e51b8152600401610587919061086c565b505f6105bc84866108a1565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105ed57607f821691505b60208210810361060b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561065857805f5260205f20601f840160051c810160208510156106365750805b601f840160051c820191505b81811015610655575f8155600101610642565b50505b505050565b81516001600160401b03811115610676576106766105c5565b61068a8161068484546105d9565b84610611565b6020601f8211600181146106bc575f83156106a55750848201515b5f19600385901b1c1916600184901b178455610655565b5f84815260208120601f198516915b828110156106eb57878501518255602094850194600190920191016106cb565b508482101561070857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156107665780850481111561074a5761074a610717565b600184161561075857908102905b60019390931c92800261072f565b935093915050565b5f8261077c57506001610527565b8161078857505f610527565b816001811461079e57600281146107a8576107c4565b6001915050610527565b60ff8411156107b9576107b9610717565b50506001821b610527565b5060208310610133831016604e8410600b84101617156107e7575081810a610527565b6107f35f19848461072b565b805f190482111561080657610806610717565b029392505050565b5f61052460ff84168361076e565b808202811582820484141761052757610527610717565b5f60208284031215610843575f80fd5b81516001600160a01b0381168114610524575f80fd5b8082018082111561052757610527610717565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f826108bb57634e487b7160e01b5f52601260045260245ffd5b500490565b61233a806108cd5f395ff3fe6080604052600436106101ff575f3560e01c80637d1db4a511610113578063a9059cbb1161009d578063d158272d1161006d578063d158272d1461060b578063dd62ed3e1461062a578063ed609f151461066e578063f0cd1dac1461068d578063f2fde38b146106a2575f80fd5b8063a9059cbb14610580578063af06c2351461059f578063c816841b146105be578063c867d60b146105dd575f80fd5b80638b42507f116100e35780638b42507f146104ef5780638da5cb5b1461051d578063914eb66a1461053957806395d89b411461054d578063a457c2d714610561575f80fd5b80637d1db4a514610491578063807c2d9c146104a657806382eefb43146104bb578063844d591c146104d0575f80fd5b806323b872dd116101945780633ecad271116101645780633ecad271146103c35780634cb80fd5146103f15780635342acb4146104105780635881f3ef1461043e57806370a082311461045d575f80fd5b806323b872dd14610345578063313ce5671461036457806339509351146103855780633b97084a146103a4575f80fd5b806309e75607116101cf57806309e75607146102a35780631694505e146102c257806318160ddd146102f95780631cdd3be314610317575f80fd5b8063022d02e51461020a57806304d4c9901461022b57806306fdde031461024a578063095ea7b314610274575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b50610229610224366004611ea0565b6106c1565b005b348015610236575f80fd5b50610229610245366004611ec0565b6107ce565b348015610255575f80fd5b5061025e610952565b60405161026b9190611eff565b60405180910390f35b34801561027f575f80fd5b5061029361028e366004611f4b565b6109e2565b604051901515815260200161026b565b3480156102ae575f80fd5b506102296102bd366004611f89565b6109f8565b3480156102cd575f80fd5b506019546102e1906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b348015610304575f80fd5b506004545b60405190815260200161026b565b348015610322575f80fd5b50610293610331366004612008565b600f6020525f908152604090205460ff1681565b348015610350575f80fd5b5061029361035f366004612023565b610a8b565b34801561036f575f80fd5b5060035460405160ff909116815260200161026b565b348015610390575f80fd5b5061029361039f366004611f4b565b610af4565b3480156103af575f80fd5b506102296103be366004612061565b610b29565b3480156103ce575f80fd5b506102936103dd366004612008565b600e6020525f908152604090205460ff1681565b3480156103fc575f80fd5b5061022961040b366004612008565b610b57565b34801561041b575f80fd5b5061029361042a366004612008565b600b6020525f908152604090205460ff1681565b348015610449575f80fd5b506102e1610458366004612008565b610ba2565b348015610468575f80fd5b50610309610477366004612008565b6001600160a01b03165f9081526009602052604090205490565b34801561049c575f80fd5b5061030960055481565b3480156104b1575f80fd5b5061030960065481565b3480156104c6575f80fd5b5061030960175481565b3480156104db575f80fd5b506102296104ea366004612078565b610eca565b3480156104fa575f80fd5b50610293610509366004612008565b600d6020525f908152604090205460ff1681565b348015610528575f80fd5b505f546001600160a01b03166102e1565b348015610544575f80fd5b50610229610f1d565b348015610558575f80fd5b5061025e610f8e565b34801561056c575f80fd5b5061029361057b366004611f4b565b610f9d565b34801561058b575f80fd5b5061029361059a366004611f4b565b610fea565b3480156105aa575f80fd5b506102296105b9366004612078565b610ff6565b3480156105c9575f80fd5b50601a546102e1906001600160a01b031681565b3480156105e8575f80fd5b506102936105f7366004612008565b600c6020525f908152604090205460ff1681565b348015610616575f80fd5b506008546102e1906001600160a01b031681565b348015610635575f80fd5b506103096106443660046120ab565b6001600160a01b039182165f908152600a6020908152604080832093909416825291909152205490565b348015610679575f80fd5b50610229610688366004611f89565b61105c565b348015610698575f80fd5b5061030960165481565b3480156106ad575f80fd5b506102296106bc366004612008565b6110e9565b5f546001600160a01b031633146106f35760405162461bcd60e51b81526004016106ea906120e2565b60405180910390fd5b6004546107019060c86111d0565b82101561075a5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e356044820152602560f81b60648201526084016106ea565b6004546107689060c86111d0565b8110156107c35760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016106ea565b600591909155600655565b5f546001600160a01b031633146107f75760405162461bcd60e51b81526004016106ea906120e2565b60636108038787611211565b11156108515760405162461bcd60e51b815260206004820152601a60248201527f546f74616c207461782063616e6e6f742065786365656420352500000000000060448201526064016106ea565b606361085d8585611211565b11156108ab5760405162461bcd60e51b815260206004820152601a60248201527f546f74616c207461782063616e6e6f742065786365656420352500000000000060448201526064016106ea565b60636108b78383611211565b11156109055760405162461bcd60e51b815260206004820152601b60248201527f546f74616c207461782063616e6e6f742065786365656420313025000000000060448201526064016106ea565b601086905560118590556109198686611211565b601655601284905560138390556109308484611211565b601755601482905560158190556109478282611211565b601855505050505050565b60606001805461096190612117565b80601f016020809104026020016040519081016040528092919081815260200182805461098d90612117565b80156109d85780601f106109af576101008083540402835291602001916109d8565b820191905f5260205f20905b8154815290600101906020018083116109bb57829003601f168201915b5050505050905090565b5f6109ee33848461126f565b5060015b92915050565b5f546001600160a01b03163314610a215760405162461bcd60e51b81526004016106ea906120e2565b5f5b82811015610a855781600f5f868685818110610a4157610a4161214f565b9050602002016020810190610a569190612008565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610a23565b50505050565b5f610a97848484611392565b50610ae98433610ae4856040518060600160405280602881526020016122b8602891396001600160a01b038a165f908152600a60209081526040808320338452909152902054919061181b565b61126f565b5060015b9392505050565b335f818152600a602090815260408083206001600160a01b038716845290915281205490916109ee918590610ae49086611211565b5f546001600160a01b03163314610b525760405162461bcd60e51b81526004016106ea906120e2565b600755565b5f546001600160a01b03163314610b805760405162461bcd60e51b81526004016106ea906120e2565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b03163314610bcc5760405162461bcd60e51b81526004016106ea906120e2565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c309190612163565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9f9190612163565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610ce8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0c9190612163565b91506001600160a01b038216610e5c57806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7c9190612163565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610deb9190612163565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610e35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e599190612163565b91505b601a80546001600160a01b03199081166001600160a01b03858116918217845560198054909316948116949094179091555f908152600c60209081526040808320805460ff19908116600190811790925594549095168352600e909152902080549091169091179055919050565b5f546001600160a01b03163314610ef35760405162461bcd60e51b81526004016106ea906120e2565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610f465760405162461bcd60e51b81526004016106ea906120e2565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60606002805461096190612117565b5f6109ee3384610ae4856040518060600160405280602581526020016122e060259139335f908152600a602090815260408083206001600160a01b038d168452909152902054919061181b565b5f610ae9338484611392565b5f546001600160a01b0316331461101f5760405162461bcd60e51b81526004016106ea906120e2565b6001600160a01b039091165f908152600d60209081526040808320805494151560ff199586168117909155600c9092529091208054909216179055565b5f546001600160a01b031633146110855760405162461bcd60e51b81526004016106ea906120e2565b5f5b82811015610a855781600b5f8686858181106110a5576110a561214f565b90506020020160208101906110ba9190612008565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611087565b5f546001600160a01b031633146111125760405162461bcd60e51b81526004016106ea906120e2565b6001600160a01b0381166111775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ea565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610aed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611853565b5f8061121d8385612192565b905083811015610aed5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106ea565b6001600160a01b0383166112d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ea565b6001600160a01b0382166113325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ea565b6001600160a01b038381165f818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166113f75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ea565b6001600160a01b0383166114595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ea565b6001600160a01b0384165f908152600f602052604090205460ff16156114b25760405162461bcd60e51b815260206004820152600e60248201526d165bdd48185c994818985b9b995960921b60448201526064016106ea565b6001600160a01b0383165f908152600f602052604090205460ff161561151a5760405162461bcd60e51b815260206004820152601760248201527f54686520726563697069656e742069732062616e6e656400000000000000000060448201526064016106ea565b601a54600160a01b900460ff161561153e5761153784848461187f565b9050610aed565b6001600160a01b0384165f908152600d602052604090205460ff1615801561157e57506001600160a01b0383165f908152600d602052604090205460ff16155b156115e6576005548211156115e65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016106ea565b305f90815260096020526040902054600754811080159081906116135750601a54600160a01b900460ff16155b801561163757506001600160a01b0386165f908152600e602052604090205460ff16155b801561164c5750601a54600160a81b900460ff165b1561167257601a54600160b01b900460ff16156116695760075491505b61167282611962565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600990915291909120546116c391869061181b565b6001600160a01b0387165f90815260096020908152604080832093909355600b90529081205460ff168061170e57506001600160a01b0386165f908152600b602052604090205460ff165b6117225761171d878787611a4d565b611724565b845b601a54909150600160b81b900460ff16801561175857506001600160a01b0386165f908152600c602052604090205460ff16155b156117925760065461178882611782896001600160a01b03165f9081526009602052604090205490565b90611211565b1115611792575f80fd5b6001600160a01b0386165f908152600960205260409020546117b49082611211565b6001600160a01b038088165f8181526009602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118079085815260200190565b60405180910390a360019350505050610aed565b5f818484111561183e5760405162461bcd60e51b81526004016106ea9190611eff565b505f61184a84866121a5565b95945050505050565b5f81836118735760405162461bcd60e51b81526004016106ea9190611eff565b505f61184a84866121b8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526009909152918220546118cf91849061181b565b6001600160a01b038086165f9081526009602052604080822093909355908516815220546118fd9083611211565b6001600160a01b038085165f8181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119509086815260200190565b60405180910390a35060019392505050565b601a805460ff60a01b1916600160a01b1790556018546014545f91611997916002916119919182908790611b4f565b906111d0565b90505f6119a48383611bcd565b90506119af81611c0e565b60145447905f906119ce906119c59060026111d0565b60185490611bcd565b90505f6119ef60026119918461199160145488611b4f90919063ffffffff16565b90505f6119fc8483611bcd565b90508015611a1a57600854611a1a906001600160a01b031682611d97565b5f82118015611a2857505f86115b15611a3757611a378683611dcf565b5050601a805460ff60a01b191690555050505050565b6001600160a01b0383165f908152600e6020526040812054819060ff1615611a9057611a89606461199160165486611b4f90919063ffffffff16565b9050611acd565b6001600160a01b0384165f908152600e602052604090205460ff1615611acd57611aca606461199160175486611b4f90919063ffffffff16565b90505b8015611b4557305f90815260096020526040902054611aec9082611211565b305f81815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b3c9085815260200190565b60405180910390a35b61184a8382611bcd565b5f825f03611b5e57505f6109f2565b5f611b6983856121d7565b905082611b7685836121b8565b14610aed5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106ea565b5f610aed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061181b565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c4157611c4161214f565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cbc9190612163565b81600181518110611ccf57611ccf61214f565b6001600160a01b039283166020918202929092010152601954611cf5913091168461126f565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d2d9085905f90869030904290600401612231565b5f604051808303815f87803b158015611d44575f80fd5b505af1158015611d56573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611d8b92919061226c565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611dca573d5f803e3d5ffd5b505050565b601954611de79030906001600160a01b03168461126f565b6019546001600160a01b031663f305d7198230855f80611e0e5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611e74573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e99919061228c565b5050505050565b5f8060408385031215611eb1575f80fd5b50508035926020909101359150565b5f805f805f8060c08789031215611ed5575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611f48575f80fd5b50565b5f8060408385031215611f5c575f80fd5b8235611f6781611f34565b946020939093013593505050565b80358015158114611f84575f80fd5b919050565b5f805f60408486031215611f9b575f80fd5b833567ffffffffffffffff811115611fb1575f80fd5b8401601f81018613611fc1575f80fd5b803567ffffffffffffffff811115611fd7575f80fd5b8660208260051b8401011115611feb575f80fd5b602091820194509250611fff908501611f75565b90509250925092565b5f60208284031215612018575f80fd5b8135610aed81611f34565b5f805f60608486031215612035575f80fd5b833561204081611f34565b9250602084013561205081611f34565b929592945050506040919091013590565b5f60208284031215612071575f80fd5b5035919050565b5f8060408385031215612089575f80fd5b823561209481611f34565b91506120a260208401611f75565b90509250929050565b5f80604083850312156120bc575f80fd5b82356120c781611f34565b915060208301356120d781611f34565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061212b57607f821691505b60208210810361214957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612173575f80fd5b8151610aed81611f34565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109f2576109f261217e565b818103818111156109f2576109f261217e565b5f826121d257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176109f2576109f261217e565b5f8151808452602084019350602083015f5b828110156122275781516001600160a01b0316865260209586019590910190600101612200565b5093949350505050565b85815284602082015260a060408201525f61224f60a08301866121ee565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f61228460408301846121ee565b949350505050565b5f805f6060848603121561229e575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208c30e86ab782b1ae6df50f83d85cce47ababc674659b3fb5bd7cf712e0a8a7a464736f6c634300081a0033