0x60806040526004361061021e5760003560e01c806370a0823111610123578063a457c2d7116100ab578063d99274481161006f578063d99274481461065b578063da00097d1461067b578063dd62ed3e1461069c578063ef422a18146106e2578063f2fde38b1461070257600080fd5b8063a457c2d7146105bb578063a9059cbb146105db578063c204642c146105fb578063c816841b1461061b578063d71958b31461063b57600080fd5b8063914eb66a116100f2578063914eb66a1461053c57806395419e6f1461055157806395d89b4114610571578063a073d37f14610586578063a42fdb0f1461059b57600080fd5b806370a08231146104a357806375f0a874146104d957806380720140146104fe5780638da5cb5b1461051e57600080fd5b8063313ce567116101a65780633ecad271116101755780633ecad271146103ec5780634a74bb021461041c5780635342acb41461043d578063543322661461046d57806362290a931461048d57600080fd5b8063313ce56714610372578063395093511461039457806339fba650146103b45780633b97084a146103ca57600080fd5b806323b872dd116101ed57806323b872dd146102dc57806325fa0b98146102fc57806327c8f8351461031d5780632b112e491461033d5780632f48ab7d1461035257600080fd5b806306fdde031461022a578063095ea7b3146102555780631694505e1461028557806318160ddd146102bd57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f610722565b60405161024c9190611b67565b60405180910390f35b34801561026157600080fd5b50610275610270366004611bca565b6107b4565b604051901515815260200161024c565b34801561029157600080fd5b50600e546102a5906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156102c957600080fd5b50600c545b60405190815260200161024c565b3480156102e857600080fd5b506102756102f7366004611bf6565b6107cb565b34801561030857600080fd5b5060095461027590600160a01b900460ff1681565b34801561032957600080fd5b506004546102a5906001600160a01b031681565b34801561034957600080fd5b506102ce610836565b34801561035e57600080fd5b506009546102a5906001600160a01b031681565b34801561037e57600080fd5b5060035460405160ff909116815260200161024c565b3480156103a057600080fd5b506102756103af366004611bca565b610862565b3480156103c057600080fd5b506102ce600b5481565b3480156103d657600080fd5b506103ea6103e5366004611c37565b610898565b005b3480156103f857600080fd5b50610275610407366004611c50565b60086020526000908152604090205460ff1681565b34801561042857600080fd5b50600f5461027590600160a81b900460ff1681565b34801561044957600080fd5b50610275610458366004611c50565b60076020526000908152604090205460ff1681565b34801561047957600080fd5b506103ea610488366004611c50565b6108d0565b34801561049957600080fd5b506102ce600a5481565b3480156104af57600080fd5b506102ce6104be366004611c50565b6001600160a01b031660009081526005602052604090205490565b3480156104e557600080fd5b506003546102a59061010090046001600160a01b031681565b34801561050a57600080fd5b506103ea610519366004611cb9565b610922565b34801561052a57600080fd5b506000546001600160a01b03166102a5565b34801561054857600080fd5b506103ea610a0f565b34801561055d57600080fd5b506103ea61056c366004611c37565b610a83565b34801561057d57600080fd5b5061023f610ade565b34801561059257600080fd5b50600d546102ce565b3480156105a757600080fd5b506103ea6105b6366004611c37565b610aed565b3480156105c757600080fd5b506102756105d6366004611bca565b610b70565b3480156105e757600080fd5b506102756105f6366004611bca565b610bbf565b34801561060757600080fd5b506103ea610616366004611cfb565b610bcc565b34801561062757600080fd5b50600f546102a5906001600160a01b031681565b34801561064757600080fd5b506103ea610656366004611c37565b610c72565b34801561066757600080fd5b506103ea610676366004611c50565b610cf2565b34801561068757600080fd5b50600f5461027590600160b01b900460ff1681565b3480156106a857600080fd5b506102ce6106b7366004611d47565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106ee57600080fd5b506103ea6106fd366004611d8e565b610dfd565b34801561070e57600080fd5b506103ea61071d366004611c50565b610e52565b60606001805461073190611dbc565b80601f016020809104026020016040519081016040528092919081815260200182805461075d90611dbc565b80156107aa5780601f1061077f576101008083540402835291602001916107aa565b820191906000526020600020905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b60006107c1338484610f3c565b5060015b92915050565b60006107d8848484611060565b5061082b8433610826856040518060600160405280602881526020016120a3602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906113d6565b610f3c565b5060015b9392505050565b6004546001600160a01b0316600090815260056020526040812054600c5461085d91611410565b905090565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916107c19185906108269086611452565b6000546001600160a01b031633146108cb5760405162461bcd60e51b81526004016108c290611df6565b60405180910390fd5b600d55565b6000546001600160a01b031633146108fa5760405162461bcd60e51b81526004016108c290611df6565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b0316331461094c5760405162461bcd60e51b81526004016108c290611df6565b6009805460ff60a01b1916600160a01b17905560005b81811015610a0a576109f861099e600385858581811061098457610984611e2b565b90506020020160208101906109999190611c50565b6114b1565b6109a9906001611e57565b6109ba90662386f26fc10000611e6a565b6109cc9067025bf6196bd10000611e57565b8484848181106109de576109de611e2b565b90506020020160208101906109f39190611c50565b61150f565b80610a0281611e81565b915050610962565b505050565b6000546001600160a01b03163314610a395760405162461bcd60e51b81526004016108c290611df6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610aad5760405162461bcd60e51b81526004016108c290611df6565b604051339082156108fc029083906000818181858888f19350505050158015610ada573d6000803e3d6000fd5b5050565b60606002805461073190611dbc565b6000546001600160a01b03163314610b175760405162461bcd60e51b81526004016108c290611df6565b600b8190556014811115610b6d5760405162461bcd60e51b815260206004820152601b60248201527f5461782063616e6e6f74206265206d6f7265207468616e20323025000000000060448201526064016108c2565b50565b60006107c13384610826856040518060600160405280602581526020016120cb602591393360009081526006602090815260408083206001600160a01b038d16845290915290205491906113d6565b600061082b338484611060565b6000546001600160a01b03163314610bf65760405162461bcd60e51b81526004016108c290611df6565b600f805460ff60a81b1916905560005b82811015610c6c57610c5933858584818110610c2457610c24611e2b565b9050602002016020810190610c399190611c50565b600354610c4a9060ff16600a611f7e565b610c549086611e6a565b6116a9565b5080610c6481611e81565b915050610c06565b50505050565b6000546001600160a01b03163314610c9c5760405162461bcd60e51b81526004016108c290611df6565b600a8190556014811115610b6d5760405162461bcd60e51b815260206004820152601b60248201527f5461782063616e6e6f74206265206d6f7265207468616e20323025000000000060448201526064016108c2565b6000546001600160a01b03163314610d1c5760405162461bcd60e51b81526004016108c290611df6565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8e9190611f8d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190611fa6565b6000546001600160a01b03163314610e275760405162461bcd60e51b81526004016108c290611df6565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e7c5760405162461bcd60e51b81526004016108c290611df6565b6001600160a01b038116610ee15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f9e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c2565b6001600160a01b038216610fff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c2565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166110c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108c2565b6001600160a01b0383166111285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108c2565b600954600160a01b900460ff168061115857506001600160a01b03841660009081526007602052604090205460ff165b8061117b57506001600160a01b03831660009081526007602052604090205460ff165b6111c75760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206973206e6f74206f70656e2079657400000000000000000060448201526064016108c2565b600f54600160a01b900460ff16156111eb576111e48484846116a9565b905061082f565b30600090815260056020526040902054600d54811080159081906112195750600f54600160a01b900460ff16155b801561123e57506001600160a01b03861660009081526008602052604090205460ff16155b80156112535750600f54600160a81b900460ff165b801561126d57506000546001600160a01b03868116911614155b1561129357600f54600160b01b900460ff161561128a57600d5491505b6112938261178f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600590915291909120546112e59186906113d6565b6001600160a01b038716600090815260056020908152604080832093909355600790529081205460ff168061133257506001600160a01b03861660009081526007602052604090205460ff165b611346576113418787876117de565b611348565b845b6001600160a01b03871660009081526005602052604090205490915061136e9082611452565b6001600160a01b0380881660008181526005602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113c29085815260200190565b60405180910390a36001935050505061082f565b600081848411156113fa5760405162461bcd60e51b81526004016108c29190611b67565b5060006114078486611fc3565b95945050505050565b600061082f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113d6565b60008061145f8385611e57565b90508381101561082f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108c2565b6000824244846040516020016114ec93929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c61082f9190611fec565b600f805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337505060095482519293506001600160a01b03169183915060009061156357611563611e2b565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061159757611597611e2b565b6001600160a01b0392831660209182029290920101526009546040516370a0823160e01b815230600482015260009291909116906370a0823190602401602060405180830381865afa1580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116159190611f8d565b905083600003611623578093505b80841161169657600e54604051635c11d79560e01b81526001600160a01b0390911690635c11d79590611663908790600090879089904290600401612000565b600060405180830381600087803b15801561167d57600080fd5b505af1158015611691573d6000803e3d6000fd5b505050505b5050600f805460ff60a01b191690555050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526005909152918220546116fa9184906113d6565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546117299083611452565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061177d9086815260200190565b60405180910390a35060019392505050565b600f805460ff60a01b1916600160a01b1790556117ab816118ea565b4780156117cd576003546117cd9061010090046001600160a01b031682611a44565b5050600f805460ff60a01b19169055565b6001600160a01b038316600090815260086020526040812054819060ff161561182857611821606461181b600a5486611a7a90919063ffffffff16565b90611afc565b9050611866565b6001600160a01b03841660009081526008602052604090205460ff161561186657611863606461181b600b5486611a7a90919063ffffffff16565b90505b80156118e057306000908152600560205260409020546118869082611452565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d79085815260200190565b60405180910390a35b6114078382611410565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061191f5761191f611e2b565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199c9190612071565b816001815181106119af576119af611e2b565b6001600160a01b039283166020918202929092010152600e546119d59130911684610f3c565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a0e908590600090869030904290600401612000565b600060405180830381600087803b158015611a2857600080fd5b505af1158015611a3c573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610a0a573d6000803e3d6000fd5b600082600003611a8c575060006107c5565b6000611a988385611e6a565b905082611aa5858361208e565b1461082f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108c2565b600061082f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611b5a5760405162461bcd60e51b81526004016108c29190611b67565b506000611407848661208e565b600060208083528351808285015260005b81811015611b9457858101830151858201604001528201611b78565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b6d57600080fd5b60008060408385031215611bdd57600080fd5b8235611be881611bb5565b946020939093013593505050565b600080600060608486031215611c0b57600080fd5b8335611c1681611bb5565b92506020840135611c2681611bb5565b929592945050506040919091013590565b600060208284031215611c4957600080fd5b5035919050565b600060208284031215611c6257600080fd5b813561082f81611bb5565b60008083601f840112611c7f57600080fd5b50813567ffffffffffffffff811115611c9757600080fd5b6020830191508360208260051b8501011115611cb257600080fd5b9250929050565b60008060208385031215611ccc57600080fd5b823567ffffffffffffffff811115611ce357600080fd5b611cef85828601611c6d565b90969095509350505050565b600080600060408486031215611d1057600080fd5b833567ffffffffffffffff811115611d2757600080fd5b611d3386828701611c6d565b909790965060209590950135949350505050565b60008060408385031215611d5a57600080fd5b8235611d6581611bb5565b91506020830135611d7581611bb5565b809150509250929050565b8015158114610b6d57600080fd5b60008060408385031215611da157600080fd5b8235611dac81611bb5565b91506020830135611d7581611d80565b600181811c90821680611dd057607f821691505b602082108103611df057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156107c5576107c5611e41565b80820281158282048414176107c5576107c5611e41565b600060018201611e9357611e93611e41565b5060010190565b600181815b80851115611ed5578160001904821115611ebb57611ebb611e41565b80851615611ec857918102915b93841c9390800290611e9f565b509250929050565b600082611eec575060016107c5565b81611ef9575060006107c5565b8160018114611f0f5760028114611f1957611f35565b60019150506107c5565b60ff841115611f2a57611f2a611e41565b50506001821b6107c5565b5060208310610133831016604e8410600b8410161715611f58575081810a6107c5565b611f628383611e9a565b8060001904821115611f7657611f76611e41565b029392505050565b600061082f60ff841683611edd565b600060208284031215611f9f57600080fd5b5051919050565b600060208284031215611fb857600080fd5b815161082f81611d80565b818103818111156107c5576107c5611e41565b634e487b7160e01b600052601260045260246000fd5b600082611ffb57611ffb611fd6565b500690565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120505784516001600160a01b03168352938301939183019160010161202b565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020828403121561208357600080fd5b815161082f81611bb5565b60008261209d5761209d611fd6565b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e145f3e803985f84a7ceae6dd6aa3ee8d3b937d5e71c118c133d40536649f48364736f6c63430008120033
0x60c060405260086080908152672822a822a6a7a7a760c11b60a0526001906200002990826200055c565b506040805180820190915260088152672822a822a6a7a7a760c11b60208201526002906200005890826200055c565b5060038054740162ad266bbd4d5d8a33bfa17e046da0ba79f73c126001600160a81b031991821617909155600480546001600160a01b03191661dead1790556009805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556014600a818155600b91909155620000d1906012906200073d565b620000e49066017dfcdece400062000755565b600c55600354620000fa9060ff16600a6200073d565b6200010b906401e8c2120062000755565b600d55600f805461ffff60a81b1916600160a81b1790553480156200012f57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef91906200076f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026391906200076f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d791906200076f565b600f80546001600160a01b039283166001600160a01b031991821617909155600e8054848416921682178155600c54306000908152600660209081526040808320958352949052839020556009549054915163095ea7b360e01b8152918316600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039691906200079a565b50600160076000620003b06000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600784528281208054861660019081179091556004548316825283822080548716821790556003546101009004831682528382208054871682179055600f5490921681526008909352908220805490931617909155600c5490600590620004453390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620004a891815260200190565b60405180910390a350620007be565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004e257607f821691505b6020821081036200050357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200055757600081815260208120601f850160051c81016020861015620005325750805b601f850160051c820191505b8181101562000553578281556001016200053e565b5050505b505050565b81516001600160401b03811115620005785762000578620004b7565b6200059081620005898454620004cd565b8462000509565b602080601f831160018114620005c85760008415620005af5750858301515b600019600386901b1c1916600185901b17855562000553565b600085815260208120601f198616915b82811015620005f957888601518255948401946001909101908401620005d8565b5085821015620006185787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200067f57816000190482111562000663576200066362000628565b808516156200067157918102915b93841c939080029062000643565b509250929050565b600082620006985750600162000737565b81620006a75750600062000737565b8160018114620006c05760028114620006cb57620006eb565b600191505062000737565b60ff841115620006df57620006df62000628565b50506001821b62000737565b5060208310610133831016604e8410600b841016171562000710575081810a62000737565b6200071c83836200063e565b806000190482111562000733576200073362000628565b0290505b92915050565b60006200074e60ff84168362000687565b9392505050565b808202811582820484141762000737576200073762000628565b6000602082840312156200078257600080fd5b81516001600160a01b03811681146200074e57600080fd5b600060208284031215620007ad57600080fd5b815180151581146200074e57600080fd5b61212580620007ce6000396000f3fe60806040526004361061021e5760003560e01c806370a0823111610123578063a457c2d7116100ab578063d99274481161006f578063d99274481461065b578063da00097d1461067b578063dd62ed3e1461069c578063ef422a18146106e2578063f2fde38b1461070257600080fd5b8063a457c2d7146105bb578063a9059cbb146105db578063c204642c146105fb578063c816841b1461061b578063d71958b31461063b57600080fd5b8063914eb66a116100f2578063914eb66a1461053c57806395419e6f1461055157806395d89b4114610571578063a073d37f14610586578063a42fdb0f1461059b57600080fd5b806370a08231146104a357806375f0a874146104d957806380720140146104fe5780638da5cb5b1461051e57600080fd5b8063313ce567116101a65780633ecad271116101755780633ecad271146103ec5780634a74bb021461041c5780635342acb41461043d578063543322661461046d57806362290a931461048d57600080fd5b8063313ce56714610372578063395093511461039457806339fba650146103b45780633b97084a146103ca57600080fd5b806323b872dd116101ed57806323b872dd146102dc57806325fa0b98146102fc57806327c8f8351461031d5780632b112e491461033d5780632f48ab7d1461035257600080fd5b806306fdde031461022a578063095ea7b3146102555780631694505e1461028557806318160ddd146102bd57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f610722565b60405161024c9190611b67565b60405180910390f35b34801561026157600080fd5b50610275610270366004611bca565b6107b4565b604051901515815260200161024c565b34801561029157600080fd5b50600e546102a5906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156102c957600080fd5b50600c545b60405190815260200161024c565b3480156102e857600080fd5b506102756102f7366004611bf6565b6107cb565b34801561030857600080fd5b5060095461027590600160a01b900460ff1681565b34801561032957600080fd5b506004546102a5906001600160a01b031681565b34801561034957600080fd5b506102ce610836565b34801561035e57600080fd5b506009546102a5906001600160a01b031681565b34801561037e57600080fd5b5060035460405160ff909116815260200161024c565b3480156103a057600080fd5b506102756103af366004611bca565b610862565b3480156103c057600080fd5b506102ce600b5481565b3480156103d657600080fd5b506103ea6103e5366004611c37565b610898565b005b3480156103f857600080fd5b50610275610407366004611c50565b60086020526000908152604090205460ff1681565b34801561042857600080fd5b50600f5461027590600160a81b900460ff1681565b34801561044957600080fd5b50610275610458366004611c50565b60076020526000908152604090205460ff1681565b34801561047957600080fd5b506103ea610488366004611c50565b6108d0565b34801561049957600080fd5b506102ce600a5481565b3480156104af57600080fd5b506102ce6104be366004611c50565b6001600160a01b031660009081526005602052604090205490565b3480156104e557600080fd5b506003546102a59061010090046001600160a01b031681565b34801561050a57600080fd5b506103ea610519366004611cb9565b610922565b34801561052a57600080fd5b506000546001600160a01b03166102a5565b34801561054857600080fd5b506103ea610a0f565b34801561055d57600080fd5b506103ea61056c366004611c37565b610a83565b34801561057d57600080fd5b5061023f610ade565b34801561059257600080fd5b50600d546102ce565b3480156105a757600080fd5b506103ea6105b6366004611c37565b610aed565b3480156105c757600080fd5b506102756105d6366004611bca565b610b70565b3480156105e757600080fd5b506102756105f6366004611bca565b610bbf565b34801561060757600080fd5b506103ea610616366004611cfb565b610bcc565b34801561062757600080fd5b50600f546102a5906001600160a01b031681565b34801561064757600080fd5b506103ea610656366004611c37565b610c72565b34801561066757600080fd5b506103ea610676366004611c50565b610cf2565b34801561068757600080fd5b50600f5461027590600160b01b900460ff1681565b3480156106a857600080fd5b506102ce6106b7366004611d47565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106ee57600080fd5b506103ea6106fd366004611d8e565b610dfd565b34801561070e57600080fd5b506103ea61071d366004611c50565b610e52565b60606001805461073190611dbc565b80601f016020809104026020016040519081016040528092919081815260200182805461075d90611dbc565b80156107aa5780601f1061077f576101008083540402835291602001916107aa565b820191906000526020600020905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b60006107c1338484610f3c565b5060015b92915050565b60006107d8848484611060565b5061082b8433610826856040518060600160405280602881526020016120a3602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906113d6565b610f3c565b5060015b9392505050565b6004546001600160a01b0316600090815260056020526040812054600c5461085d91611410565b905090565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916107c19185906108269086611452565b6000546001600160a01b031633146108cb5760405162461bcd60e51b81526004016108c290611df6565b60405180910390fd5b600d55565b6000546001600160a01b031633146108fa5760405162461bcd60e51b81526004016108c290611df6565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b0316331461094c5760405162461bcd60e51b81526004016108c290611df6565b6009805460ff60a01b1916600160a01b17905560005b81811015610a0a576109f861099e600385858581811061098457610984611e2b565b90506020020160208101906109999190611c50565b6114b1565b6109a9906001611e57565b6109ba90662386f26fc10000611e6a565b6109cc9067025bf6196bd10000611e57565b8484848181106109de576109de611e2b565b90506020020160208101906109f39190611c50565b61150f565b80610a0281611e81565b915050610962565b505050565b6000546001600160a01b03163314610a395760405162461bcd60e51b81526004016108c290611df6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610aad5760405162461bcd60e51b81526004016108c290611df6565b604051339082156108fc029083906000818181858888f19350505050158015610ada573d6000803e3d6000fd5b5050565b60606002805461073190611dbc565b6000546001600160a01b03163314610b175760405162461bcd60e51b81526004016108c290611df6565b600b8190556014811115610b6d5760405162461bcd60e51b815260206004820152601b60248201527f5461782063616e6e6f74206265206d6f7265207468616e20323025000000000060448201526064016108c2565b50565b60006107c13384610826856040518060600160405280602581526020016120cb602591393360009081526006602090815260408083206001600160a01b038d16845290915290205491906113d6565b600061082b338484611060565b6000546001600160a01b03163314610bf65760405162461bcd60e51b81526004016108c290611df6565b600f805460ff60a81b1916905560005b82811015610c6c57610c5933858584818110610c2457610c24611e2b565b9050602002016020810190610c399190611c50565b600354610c4a9060ff16600a611f7e565b610c549086611e6a565b6116a9565b5080610c6481611e81565b915050610c06565b50505050565b6000546001600160a01b03163314610c9c5760405162461bcd60e51b81526004016108c290611df6565b600a8190556014811115610b6d5760405162461bcd60e51b815260206004820152601b60248201527f5461782063616e6e6f74206265206d6f7265207468616e20323025000000000060448201526064016108c2565b6000546001600160a01b03163314610d1c5760405162461bcd60e51b81526004016108c290611df6565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8e9190611f8d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610dd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190611fa6565b6000546001600160a01b03163314610e275760405162461bcd60e51b81526004016108c290611df6565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e7c5760405162461bcd60e51b81526004016108c290611df6565b6001600160a01b038116610ee15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f9e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c2565b6001600160a01b038216610fff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c2565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166110c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108c2565b6001600160a01b0383166111285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108c2565b600954600160a01b900460ff168061115857506001600160a01b03841660009081526007602052604090205460ff165b8061117b57506001600160a01b03831660009081526007602052604090205460ff165b6111c75760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206973206e6f74206f70656e2079657400000000000000000060448201526064016108c2565b600f54600160a01b900460ff16156111eb576111e48484846116a9565b905061082f565b30600090815260056020526040902054600d54811080159081906112195750600f54600160a01b900460ff16155b801561123e57506001600160a01b03861660009081526008602052604090205460ff16155b80156112535750600f54600160a81b900460ff165b801561126d57506000546001600160a01b03868116911614155b1561129357600f54600160b01b900460ff161561128a57600d5491505b6112938261178f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600590915291909120546112e59186906113d6565b6001600160a01b038716600090815260056020908152604080832093909355600790529081205460ff168061133257506001600160a01b03861660009081526007602052604090205460ff165b611346576113418787876117de565b611348565b845b6001600160a01b03871660009081526005602052604090205490915061136e9082611452565b6001600160a01b0380881660008181526005602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113c29085815260200190565b60405180910390a36001935050505061082f565b600081848411156113fa5760405162461bcd60e51b81526004016108c29190611b67565b5060006114078486611fc3565b95945050505050565b600061082f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113d6565b60008061145f8385611e57565b90508381101561082f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108c2565b6000824244846040516020016114ec93929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c61082f9190611fec565b600f805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337505060095482519293506001600160a01b03169183915060009061156357611563611e2b565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061159757611597611e2b565b6001600160a01b0392831660209182029290920101526009546040516370a0823160e01b815230600482015260009291909116906370a0823190602401602060405180830381865afa1580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116159190611f8d565b905083600003611623578093505b80841161169657600e54604051635c11d79560e01b81526001600160a01b0390911690635c11d79590611663908790600090879089904290600401612000565b600060405180830381600087803b15801561167d57600080fd5b505af1158015611691573d6000803e3d6000fd5b505050505b5050600f805460ff60a01b191690555050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526005909152918220546116fa9184906113d6565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546117299083611452565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061177d9086815260200190565b60405180910390a35060019392505050565b600f805460ff60a01b1916600160a01b1790556117ab816118ea565b4780156117cd576003546117cd9061010090046001600160a01b031682611a44565b5050600f805460ff60a01b19169055565b6001600160a01b038316600090815260086020526040812054819060ff161561182857611821606461181b600a5486611a7a90919063ffffffff16565b90611afc565b9050611866565b6001600160a01b03841660009081526008602052604090205460ff161561186657611863606461181b600b5486611a7a90919063ffffffff16565b90505b80156118e057306000908152600560205260409020546118869082611452565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d79085815260200190565b60405180910390a35b6114078382611410565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061191f5761191f611e2b565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199c9190612071565b816001815181106119af576119af611e2b565b6001600160a01b039283166020918202929092010152600e546119d59130911684610f3c565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a0e908590600090869030904290600401612000565b600060405180830381600087803b158015611a2857600080fd5b505af1158015611a3c573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610a0a573d6000803e3d6000fd5b600082600003611a8c575060006107c5565b6000611a988385611e6a565b905082611aa5858361208e565b1461082f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108c2565b600061082f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611b5a5760405162461bcd60e51b81526004016108c29190611b67565b506000611407848661208e565b600060208083528351808285015260005b81811015611b9457858101830151858201604001528201611b78565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b6d57600080fd5b60008060408385031215611bdd57600080fd5b8235611be881611bb5565b946020939093013593505050565b600080600060608486031215611c0b57600080fd5b8335611c1681611bb5565b92506020840135611c2681611bb5565b929592945050506040919091013590565b600060208284031215611c4957600080fd5b5035919050565b600060208284031215611c6257600080fd5b813561082f81611bb5565b60008083601f840112611c7f57600080fd5b50813567ffffffffffffffff811115611c9757600080fd5b6020830191508360208260051b8501011115611cb257600080fd5b9250929050565b60008060208385031215611ccc57600080fd5b823567ffffffffffffffff811115611ce357600080fd5b611cef85828601611c6d565b90969095509350505050565b600080600060408486031215611d1057600080fd5b833567ffffffffffffffff811115611d2757600080fd5b611d3386828701611c6d565b909790965060209590950135949350505050565b60008060408385031215611d5a57600080fd5b8235611d6581611bb5565b91506020830135611d7581611bb5565b809150509250929050565b8015158114610b6d57600080fd5b60008060408385031215611da157600080fd5b8235611dac81611bb5565b91506020830135611d7581611d80565b600181811c90821680611dd057607f821691505b602082108103611df057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156107c5576107c5611e41565b80820281158282048414176107c5576107c5611e41565b600060018201611e9357611e93611e41565b5060010190565b600181815b80851115611ed5578160001904821115611ebb57611ebb611e41565b80851615611ec857918102915b93841c9390800290611e9f565b509250929050565b600082611eec575060016107c5565b81611ef9575060006107c5565b8160018114611f0f5760028114611f1957611f35565b60019150506107c5565b60ff841115611f2a57611f2a611e41565b50506001821b6107c5565b5060208310610133831016604e8410600b8410161715611f58575081810a6107c5565b611f628383611e9a565b8060001904821115611f7657611f76611e41565b029392505050565b600061082f60ff841683611edd565b600060208284031215611f9f57600080fd5b5051919050565b600060208284031215611fb857600080fd5b815161082f81611d80565b818103818111156107c5576107c5611e41565b634e487b7160e01b600052601260045260246000fd5b600082611ffb57611ffb611fd6565b500690565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120505784516001600160a01b03168352938301939183019160010161202b565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020828403121561208357600080fd5b815161082f81611bb5565b60008261209d5761209d611fd6565b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e145f3e803985f84a7ceae6dd6aa3ee8d3b937d5e71c118c133d40536649f48364736f6c63430008120033