0x6080604052600436106102975760003560e01c806377a401781161015a578063a9059cbb116100c1578063d7c010321161007a578063d7c01032146107d9578063dd62ed3e146107f9578063f0a9e3651461083f578063f2fde38b1461085f578063f887ea401461087f578063ffb54a991461089f57600080fd5b8063a9059cbb14610714578063b0f7ec3814610734578063b93bdb5f14610755578063c3717a9a14610779578063d51ed1c814610799578063d78e139d146107b957600080fd5b80638a4068dd116101135780638a4068dd146106765780638da5cb5b1461068b5780638f9a55c0146106a957806395d89b41146106bf578063a3895fff146106d4578063a8aa1b31146106f457600080fd5b806377a40178146105b75780637c519ffb146105d75780637cd31f6d146105ec5780637d1db4a51461060c578063832790fe14610622578063893d20e81461064457600080fd5b8063313ce567116101fe578063613f930f116101b7578063613f930f146104e05780636308fb981461052d57806366eb37851461054d5780636b1ebc541461056257806370a0823114610582578063715018a6146105a257600080fd5b8063313ce5671461042f57806345ce53651461044b5780635074f36f1461046b5780635353a2d81461048b578063571ac8b0146104ab5780635e4ae81b146104cb57600080fd5b806318160ddd1161025057806318160ddd146103815780631d0f2c991461039657806323b872dd146103b85780632b112e49146103d85780632d44c931146103ed5780632d8381191461040f57600080fd5b80630445b667146102a357806306fdde03146102cc578063095ea7b3146102ee5780630cfc15f91461031e5780631161ae391461034b578063178002871461036b57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b960205481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b506102e16108c0565b6040516102c39190611f34565b3480156102fa57600080fd5b5061030e610309366004611fa5565b610952565b60405190151581526020016102c3565b34801561032a57600080fd5b506102b9610339366004611fcf565b60076020526000908152604090205481565b34801561035757600080fd5b5061030e610366366004611fea565b6109bf565b34801561037757600080fd5b506102b960085481565b34801561038d57600080fd5b506004546102b9565b3480156103a257600080fd5b506103b66103b1366004611fea565b6109d3565b005b3480156103c457600080fd5b5061030e6103d336600461200c565b610a11565b3480156103e457600080fd5b506102b9610ad3565b3480156103f957600080fd5b506102b9610408366004612056565b5060155490565b34801561041b57600080fd5b506102b961042a366004612073565b610b04565b34801561043b57600080fd5b50604051601281526020016102c3565b34801561045757600080fd5b506102b9610466366004612073565b610b27565b34801561047757600080fd5b506103b661048636600461208c565b610b44565b34801561049757600080fd5b506103b66104a6366004612128565b610be3565b3480156104b757600080fd5b5061030e6104c6366004611fcf565b610c24565b3480156104d757600080fd5b506103b6610c32565b3480156104ec57600080fd5b50600c54601054600e546012546014546016545b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102c3565b34801561053957600080fd5b506103b66105483660046121d9565b610c69565b34801561055957600080fd5b506103b6610cd5565b34801561056e57600080fd5b506103b661057d36600461208c565b610d09565b34801561058e57600080fd5b506102b961059d366004611fcf565b610da2565b3480156105ae57600080fd5b506103b6610dc4565b3480156105c357600080fd5b506103b66105d2366004612073565b610e38565b3480156105e357600080fd5b506103b6610ea1565b3480156105f857600080fd5b506103b6610607366004612223565b610ee0565b34801561061857600080fd5b506102b960055481565b34801561062e57600080fd5b506102b961063d366004612056565b5060145490565b34801561065057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c3565b34801561068257600080fd5b506103b6610f6e565b34801561069757600080fd5b506000546001600160a01b031661065e565b3480156106b557600080fd5b506102b960065481565b3480156106cb57600080fd5b506102e1610fd6565b3480156106e057600080fd5b506103b66106ef366004612128565b610fe5565b34801561070057600080fd5b50601d5461065e906001600160a01b031681565b34801561072057600080fd5b5061030e61072f366004611fa5565b611022565b34801561074057600080fd5b50601d5461030e90600160a81b900460ff1681565b34801561076157600080fd5b50600d54601154600f54601354601554601654610500565b34801561078557600080fd5b506103b6610794366004612073565b61102f565b3480156107a557600080fd5b506102b96107b4366004612073565b611098565b3480156107c557600080fd5b506103b66107d4366004612073565b6110d2565b3480156107e557600080fd5b506103b66107f4366004612282565b611126565b34801561080557600080fd5b506102b96108143660046122c5565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561084b57600080fd5b5061030e61085a366004611fa5565b611181565b34801561086b57600080fd5b506103b661087a366004611fcf565b611281565b34801561088b57600080fd5b50601c5461065e906001600160a01b031681565b3480156108ab57600080fd5b50601d5461030e90600160a01b900460ff1681565b6060600280546108cf906122f8565b80601f01602080910402602001604051908101604052809291908181526020018280546108fb906122f8565b80156109485780601f1061091d57610100808354040283529160200191610948565b820191906000526020600020905b81548152906001019060200180831161092b57829003601f168201915b5050505050905090565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ad9086815260200190565b60405180910390a35060015b92915050565b6000826109cb83611098565b119392505050565b6000546001600160a01b03163314610a065760405162461bcd60e51b81526004016109fd90612332565b60405180910390fd5b601a91909155601b55565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610abe576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610a9991849061136b565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610ac98484846113a5565b90505b9392505050565b6000610aff610ae26000610da2565b610af9610af061dead610da2565b60045490611692565b90611692565b905090565b60006109b9600854610b21600454856116d490919063ffffffff16565b90611756565b60006109b9600454610b21600854856116d490919063ffffffff16565b6000546001600160a01b03163314610b6e5760405162461bcd60e51b81526004016109fd90612332565b60005b82811015610bdd5781600a6000868685818110610b9057610b90612367565b9050602002016020810190610ba59190611fcf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610bd681612393565b9050610b71565b50505050565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b81526004016109fd90612332565b8051610c20906002906020840190611e9b565b5050565b60006109b982600019610952565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b81526004016109fd90612332565b6004546006819055600555565b6000546001600160a01b03163314610c935760405162461bcd60e51b81526004016109fd90612332565b601d8054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b199095169490941717909255601e819055601f91909155602055565b6000546001600160a01b03163314610cff5760405162461bcd60e51b81526004016109fd90612332565b610d07611798565b565b6000546001600160a01b03163314610d335760405162461bcd60e51b81526004016109fd90612332565b60005b82811015610bdd5781600b6000868685818110610d5557610d55612367565b9050602002016020810190610d6a9190611fcf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d9b81612393565b9050610d36565b6001600160a01b0381166000908152600760205260408120546109b990610b04565b6000546001600160a01b03163314610dee5760405162461bcd60e51b81526004016109fd90612332565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e625760405162461bcd60e51b81526004016109fd90612332565b6103e8600454610e7291906123ac565b6005541015610e8057600080fd5b6103e881600454610e9191906123ce565b610e9b91906123ac565b60055550565b6000546001600160a01b03163314610ecb5760405162461bcd60e51b81526004016109fd90612332565b601d805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610f0a5760405162461bcd60e51b81526004016109fd90612332565b600c89905560128890556010879055600e869055610f3486610f2e89818d8d611b6b565b90611b6b565b601455600d84905560138390556011829055600f819055610f5b81610f2e84818888611b6b565b6015555050506016919091555050505050565b6017546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610fc0576040519150601f19603f3d011682016040523d82523d6000602084013e610fc5565b606091505b5050905080610fd357600080fd5b50565b6060600380546108cf906122f8565b6000546001600160a01b0316331461100f5760405162461bcd60e51b81526004016109fd90612332565b8051610c20906003906020840190611e9b565b6000610acc3384846113a5565b6000546001600160a01b031633146110595760405162461bcd60e51b81526004016109fd90612332565b6103e860045461106991906123ac565b600654101561107757600080fd5b6103e88160045461108891906123ce565b61109291906123ac565b60065550565b60006109b96110a5610ad3565b601d54610b21906110cb906002906110c5906001600160a01b0316610da2565b906116d4565b85906116d4565b60175447906001600160a01b03166108fc60646110ef85856123ce565b6110f991906123ac565b6040518115909202916000818181858888f19350505050158015611121573d6000803e3d6000fd5b505050565b336000908152600b602052604090205460ff1661114257600080fd5b601880546001600160a01b039485166001600160a01b031991821617909155601980549285169282169290921790915560178054929093169116179055565b336000908152600b602052604081205460ff1661119d57600080fd5b81600003611210576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d91906123ed565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561125d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc9190612406565b6000546001600160a01b031633146112ab5760405162461bcd60e51b81526004016109fd90612332565b6001600160a01b0381166113105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561138f5760405162461bcd60e51b81526004016109fd9190611f34565b50600061139c8486612423565b95945050505050565b60215460009060ff16156113c5576113be848484611bca565b9050610acc565b601d546001600160a01b038481169116148015906113ee57506001600160a01b03831661dead14155b801561140857506018546001600160a01b03848116911614155b801561142d57506001600160a01b0383166000908152600b602052604090205460ff16155b1561148d576006548261143f85610da2565b611449919061243a565b111561148d5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016109fd565b601d546001600160a01b038481169116148015906114b657506001600160a01b03831661dead14155b80156114db57506001600160a01b0383166000908152600b602052604090205460ff16155b1561153057601d54600160a01b900460ff166115305760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109fd565b611538611cc2565b1561154557611545611798565b600061155083610b27565b90506115b88160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060076000896001600160a01b03166001600160a01b031681526020019081526020016000205461136b9092919063ffffffff16565b6001600160a01b038616600090815260076020908152604080832093909355600a90529081205460ff16156115ed5781611618565b601d54611618906001600160a01b0388811691161461160d576000611610565b60015b878785611d12565b6001600160a01b03861660009081526007602052604090205490915061163e9082611b6b565b6001600160a01b0380871660008181526007602052604090209290925587166000805160206124f283398151915261167584610b04565b60405190815260200160405180910390a350600195945050505050565b6000610acc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061136b565b6000826000036116e6575060006109b9565b60006116f283856123ce565b9050826116ff85836123ac565b14610acc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109fd565b6000610acc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e6d565b6021805460ff19166001179055601a54601b546000916117b7916109bf565b6117c357600d546117c6565b60005b905060006117e160135460155461169290919063ffffffff16565b905060006118036002610b2184610b21876020546116d490919063ffffffff16565b9050600061181c8260205461169290919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061185657611856612367565b6001600160a01b039283166020918202929092010152600180548351921691839190811061188657611886612367565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac947906118d0908690600090879030904290600401612452565b600060405180830381600087803b1580156118ea57600080fd5b505af11580156118fe573d6000803e3d6000fd5b505050506000611917824761169290919063ffffffff16565b90506000611930611929896002611756565b8890611692565b905060006119526002610b2184610b21600d54886116d490919063ffffffff16565b9050600061196f83610b21601154876116d490919063ffffffff16565b9050600061198c84610b21600f54886116d490919063ffffffff16565b6018546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146119e3576040519150601f19603f3d011682016040523d82523d6000602084013e6119e8565b606091505b50506019546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114611a3d576040519150601f19603f3d011682016040523d82523d6000602084013e611a42565b606091505b50909150508915611b1f57601c5460175460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611abd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ae291906124c3565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601d54600160b01b900460ff1615611b4c57601e5460205414611b4457601e54611b50565b601f54611b50565b6020545b60205550506021805460ff1916905550505050505050505050565b600080611b78838561243a565b905083811015610acc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109fd565b600080611bd683610b27565b9050611c3e8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060076000896001600160a01b03166001600160a01b031681526020019081526020016000205461136b9092919063ffffffff16565b6001600160a01b038087166000908152600760205260408082209390935590861681522054611c6d9082611b6b565b6001600160a01b0380861660008181526007602052604090819020939093559151908716906000805160206124f283398151915290611caf9087815260200190565b60405180910390a3506001949350505050565b601d546000906001600160a01b03163314801590611ce3575060215460ff16155b8015611cf85750601d54600160a81b900460ff165b8015610aff5750602054611d0b30610da2565b1015905090565b600080600186151514611d3b57601654601554611d369190610b21905b86906116d4565b611d4f565b601654601454611d4f9190610b2190611d2f565b90506000600187151514611d7d57611d78601554610b21601354856116d490919063ffffffff16565b611d98565b611d98601454610b21601254856116d490919063ffffffff16565b600854909150611da89082611692565b6008556000611db78383611692565b30600090815260076020526040902054909150611dd49082611b6b565b306000818152600760205260409020919091556001600160a01b0388166000805160206124f2833981519152611e0984610b04565b60405190815260200160405180910390a36008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611e618584611692565b98975050505050505050565b60008183611e8e5760405162461bcd60e51b81526004016109fd9190611f34565b50600061139c84866123ac565b828054611ea7906122f8565b90600052602060002090601f016020900481019282611ec95760008555611f0f565b82601f10611ee257805160ff1916838001178555611f0f565b82800160010185558215611f0f579182015b82811115611f0f578251825591602001919060010190611ef4565b50611f1b929150611f1f565b5090565b5b80821115611f1b5760008155600101611f20565b600060208083528351808285015260005b81811015611f6157858101830151858201604001528201611f45565b81811115611f73576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611fa057600080fd5b919050565b60008060408385031215611fb857600080fd5b611fc183611f89565b946020939093013593505050565b600060208284031215611fe157600080fd5b610acc82611f89565b60008060408385031215611ffd57600080fd5b50508035926020909101359150565b60008060006060848603121561202157600080fd5b61202a84611f89565b925061203860208501611f89565b9150604084013590509250925092565b8015158114610fd357600080fd5b60006020828403121561206857600080fd5b8135610acc81612048565b60006020828403121561208557600080fd5b5035919050565b6000806000604084860312156120a157600080fd5b833567ffffffffffffffff808211156120b957600080fd5b818601915086601f8301126120cd57600080fd5b8135818111156120dc57600080fd5b8760208260051b85010111156120f157600080fd5b6020928301955093505084013561210781612048565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561213a57600080fd5b813567ffffffffffffffff8082111561215257600080fd5b818401915084601f83011261216657600080fd5b81358181111561217857612178612112565b604051601f8201601f19908116603f011681019083821181831017156121a0576121a0612112565b816040528281528760208487010111156121b957600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080600080608085870312156121ef57600080fd5b84356121fa81612048565b93506020850135925060408501359150606085013561221881612048565b939692955090935050565b60008060008060008060008060006101208a8c03121561224257600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b60008060006060848603121561229757600080fd5b6122a084611f89565b92506122ae60208501611f89565b91506122bc60408501611f89565b90509250925092565b600080604083850312156122d857600080fd5b6122e183611f89565b91506122ef60208401611f89565b90509250929050565b600181811c9082168061230c57607f821691505b60208210810361232c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123a5576123a561237d565b5060010190565b6000826123c957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156123e8576123e861237d565b500290565b6000602082840312156123ff57600080fd5b5051919050565b60006020828403121561241857600080fd5b8151610acc81612048565b6000828210156124355761243561237d565b500390565b6000821982111561244d5761244d61237d565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124a25784516001600160a01b03168352938301939183019160010161247d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124d857600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ae8d9c120f42f99164c08631a166d23c19f3fd2323545f3fc153fe16619e542f64736f6c634300080d0033
0x60c0604052601560808190527f4d616b65204170657320477265617420416761696e000000000000000000000060a0908152620000409160029190620004e1565b50604080518082019091526004808252634d41474160e01b60209092019182526200006e91600391620004e1565b506200007d6012600a6200069c565b6200008e9064e8d4a51000620006b4565b60045560646004546001620000a49190620006b4565b620000b09190620006d6565b60055560646004546001620000c69190620006b4565b620000d29190620006d6565b600655600454600855600a600c55600a600d55600a600e55600a600f55600a601055601e60115560006012556000601355601254600e54600c546010546200011b9190620006f9565b620001279190620006f9565b620001339190620006f9565b601455601354600f54600d546011546200014e9190620006f9565b6200015a9190620006f9565b620001669190620006f9565b60155560646016819055601e601a55601b55601d805462ffffff60a01b191661010160a81b1790556004546103e890620001a2906014620006b4565b620001ae9190620006d6565b601e556103e86004546014620001c59190620006b4565b620001d19190620006d6565b601f55601e54602055348015620001e757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b4919062000714565b600180546001600160a01b0319166001600160a01b03928316179055601c546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000339919062000714565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200038b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b1919062000714565b601d80546001600160a01b039283166001600160a01b0319918216178255306000818152600960209081526040808320601c805489168552818452828520600019908190553380875292855283862055948452600b8352818420805460ff19908116600190811790925595548916855282852080548716821790559654909716835280832080548516871790558683528083208054851687179055600a82528083208054909416909517909255601780548416861790556019805484168617905560188054909316739829cdce8bf433b1d3cb8f262f7771456333871e179092556004546007909152828220819055915190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620004d391815260200190565b60405180910390a36200077b565b828054620004ef906200073f565b90600052602060002090601f0160209004810192826200051357600085556200055e565b82601f106200052e57805160ff19168380011785556200055e565b828001600101855582156200055e579182015b828111156200055e57825182559160200191906001019062000541565b506200056c92915062000570565b5090565b5b808211156200056c576000815560010162000571565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005de578160001904821115620005c257620005c262000587565b80851615620005d057918102915b93841c9390800290620005a2565b509250929050565b600082620005f75750600162000696565b81620006065750600062000696565b81600181146200061f57600281146200062a576200064a565b600191505062000696565b60ff8411156200063e576200063e62000587565b50506001821b62000696565b5060208310610133831016604e8410600b84101617156200066f575081810a62000696565b6200067b83836200059d565b806000190482111562000692576200069262000587565b0290505b92915050565b6000620006ad60ff841683620005e6565b9392505050565b6000816000190483118215151615620006d157620006d162000587565b500290565b600082620006f457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200070f576200070f62000587565b500190565b6000602082840312156200072757600080fd5b81516001600160a01b0381168114620006ad57600080fd5b600181811c908216806200075457607f821691505b6020821081036200077557634e487b7160e01b600052602260045260246000fd5b50919050565b612547806200078b6000396000f3fe6080604052600436106102975760003560e01c806377a401781161015a578063a9059cbb116100c1578063d7c010321161007a578063d7c01032146107d9578063dd62ed3e146107f9578063f0a9e3651461083f578063f2fde38b1461085f578063f887ea401461087f578063ffb54a991461089f57600080fd5b8063a9059cbb14610714578063b0f7ec3814610734578063b93bdb5f14610755578063c3717a9a14610779578063d51ed1c814610799578063d78e139d146107b957600080fd5b80638a4068dd116101135780638a4068dd146106765780638da5cb5b1461068b5780638f9a55c0146106a957806395d89b41146106bf578063a3895fff146106d4578063a8aa1b31146106f457600080fd5b806377a40178146105b75780637c519ffb146105d75780637cd31f6d146105ec5780637d1db4a51461060c578063832790fe14610622578063893d20e81461064457600080fd5b8063313ce567116101fe578063613f930f116101b7578063613f930f146104e05780636308fb981461052d57806366eb37851461054d5780636b1ebc541461056257806370a0823114610582578063715018a6146105a257600080fd5b8063313ce5671461042f57806345ce53651461044b5780635074f36f1461046b5780635353a2d81461048b578063571ac8b0146104ab5780635e4ae81b146104cb57600080fd5b806318160ddd1161025057806318160ddd146103815780631d0f2c991461039657806323b872dd146103b85780632b112e49146103d85780632d44c931146103ed5780632d8381191461040f57600080fd5b80630445b667146102a357806306fdde03146102cc578063095ea7b3146102ee5780630cfc15f91461031e5780631161ae391461034b578063178002871461036b57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b960205481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b506102e16108c0565b6040516102c39190611f34565b3480156102fa57600080fd5b5061030e610309366004611fa5565b610952565b60405190151581526020016102c3565b34801561032a57600080fd5b506102b9610339366004611fcf565b60076020526000908152604090205481565b34801561035757600080fd5b5061030e610366366004611fea565b6109bf565b34801561037757600080fd5b506102b960085481565b34801561038d57600080fd5b506004546102b9565b3480156103a257600080fd5b506103b66103b1366004611fea565b6109d3565b005b3480156103c457600080fd5b5061030e6103d336600461200c565b610a11565b3480156103e457600080fd5b506102b9610ad3565b3480156103f957600080fd5b506102b9610408366004612056565b5060155490565b34801561041b57600080fd5b506102b961042a366004612073565b610b04565b34801561043b57600080fd5b50604051601281526020016102c3565b34801561045757600080fd5b506102b9610466366004612073565b610b27565b34801561047757600080fd5b506103b661048636600461208c565b610b44565b34801561049757600080fd5b506103b66104a6366004612128565b610be3565b3480156104b757600080fd5b5061030e6104c6366004611fcf565b610c24565b3480156104d757600080fd5b506103b6610c32565b3480156104ec57600080fd5b50600c54601054600e546012546014546016545b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102c3565b34801561053957600080fd5b506103b66105483660046121d9565b610c69565b34801561055957600080fd5b506103b6610cd5565b34801561056e57600080fd5b506103b661057d36600461208c565b610d09565b34801561058e57600080fd5b506102b961059d366004611fcf565b610da2565b3480156105ae57600080fd5b506103b6610dc4565b3480156105c357600080fd5b506103b66105d2366004612073565b610e38565b3480156105e357600080fd5b506103b6610ea1565b3480156105f857600080fd5b506103b6610607366004612223565b610ee0565b34801561061857600080fd5b506102b960055481565b34801561062e57600080fd5b506102b961063d366004612056565b5060145490565b34801561065057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c3565b34801561068257600080fd5b506103b6610f6e565b34801561069757600080fd5b506000546001600160a01b031661065e565b3480156106b557600080fd5b506102b960065481565b3480156106cb57600080fd5b506102e1610fd6565b3480156106e057600080fd5b506103b66106ef366004612128565b610fe5565b34801561070057600080fd5b50601d5461065e906001600160a01b031681565b34801561072057600080fd5b5061030e61072f366004611fa5565b611022565b34801561074057600080fd5b50601d5461030e90600160a81b900460ff1681565b34801561076157600080fd5b50600d54601154600f54601354601554601654610500565b34801561078557600080fd5b506103b6610794366004612073565b61102f565b3480156107a557600080fd5b506102b96107b4366004612073565b611098565b3480156107c557600080fd5b506103b66107d4366004612073565b6110d2565b3480156107e557600080fd5b506103b66107f4366004612282565b611126565b34801561080557600080fd5b506102b96108143660046122c5565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561084b57600080fd5b5061030e61085a366004611fa5565b611181565b34801561086b57600080fd5b506103b661087a366004611fcf565b611281565b34801561088b57600080fd5b50601c5461065e906001600160a01b031681565b3480156108ab57600080fd5b50601d5461030e90600160a01b900460ff1681565b6060600280546108cf906122f8565b80601f01602080910402602001604051908101604052809291908181526020018280546108fb906122f8565b80156109485780601f1061091d57610100808354040283529160200191610948565b820191906000526020600020905b81548152906001019060200180831161092b57829003601f168201915b5050505050905090565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ad9086815260200190565b60405180910390a35060015b92915050565b6000826109cb83611098565b119392505050565b6000546001600160a01b03163314610a065760405162461bcd60e51b81526004016109fd90612332565b60405180910390fd5b601a91909155601b55565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610abe576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610a9991849061136b565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610ac98484846113a5565b90505b9392505050565b6000610aff610ae26000610da2565b610af9610af061dead610da2565b60045490611692565b90611692565b905090565b60006109b9600854610b21600454856116d490919063ffffffff16565b90611756565b60006109b9600454610b21600854856116d490919063ffffffff16565b6000546001600160a01b03163314610b6e5760405162461bcd60e51b81526004016109fd90612332565b60005b82811015610bdd5781600a6000868685818110610b9057610b90612367565b9050602002016020810190610ba59190611fcf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610bd681612393565b9050610b71565b50505050565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b81526004016109fd90612332565b8051610c20906002906020840190611e9b565b5050565b60006109b982600019610952565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b81526004016109fd90612332565b6004546006819055600555565b6000546001600160a01b03163314610c935760405162461bcd60e51b81526004016109fd90612332565b601d8054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b199095169490941717909255601e819055601f91909155602055565b6000546001600160a01b03163314610cff5760405162461bcd60e51b81526004016109fd90612332565b610d07611798565b565b6000546001600160a01b03163314610d335760405162461bcd60e51b81526004016109fd90612332565b60005b82811015610bdd5781600b6000868685818110610d5557610d55612367565b9050602002016020810190610d6a9190611fcf565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d9b81612393565b9050610d36565b6001600160a01b0381166000908152600760205260408120546109b990610b04565b6000546001600160a01b03163314610dee5760405162461bcd60e51b81526004016109fd90612332565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e625760405162461bcd60e51b81526004016109fd90612332565b6103e8600454610e7291906123ac565b6005541015610e8057600080fd5b6103e881600454610e9191906123ce565b610e9b91906123ac565b60055550565b6000546001600160a01b03163314610ecb5760405162461bcd60e51b81526004016109fd90612332565b601d805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610f0a5760405162461bcd60e51b81526004016109fd90612332565b600c89905560128890556010879055600e869055610f3486610f2e89818d8d611b6b565b90611b6b565b601455600d84905560138390556011829055600f819055610f5b81610f2e84818888611b6b565b6015555050506016919091555050505050565b6017546040516000916001600160a01b03169061753090479084818181858888f193505050503d8060008114610fc0576040519150601f19603f3d011682016040523d82523d6000602084013e610fc5565b606091505b5050905080610fd357600080fd5b50565b6060600380546108cf906122f8565b6000546001600160a01b0316331461100f5760405162461bcd60e51b81526004016109fd90612332565b8051610c20906003906020840190611e9b565b6000610acc3384846113a5565b6000546001600160a01b031633146110595760405162461bcd60e51b81526004016109fd90612332565b6103e860045461106991906123ac565b600654101561107757600080fd5b6103e88160045461108891906123ce565b61109291906123ac565b60065550565b60006109b96110a5610ad3565b601d54610b21906110cb906002906110c5906001600160a01b0316610da2565b906116d4565b85906116d4565b60175447906001600160a01b03166108fc60646110ef85856123ce565b6110f991906123ac565b6040518115909202916000818181858888f19350505050158015611121573d6000803e3d6000fd5b505050565b336000908152600b602052604090205460ff1661114257600080fd5b601880546001600160a01b039485166001600160a01b031991821617909155601980549285169282169290921790915560178054929093169116179055565b336000908152600b602052604081205460ff1661119d57600080fd5b81600003611210576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d91906123ed565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561125d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc9190612406565b6000546001600160a01b031633146112ab5760405162461bcd60e51b81526004016109fd90612332565b6001600160a01b0381166113105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561138f5760405162461bcd60e51b81526004016109fd9190611f34565b50600061139c8486612423565b95945050505050565b60215460009060ff16156113c5576113be848484611bca565b9050610acc565b601d546001600160a01b038481169116148015906113ee57506001600160a01b03831661dead14155b801561140857506018546001600160a01b03848116911614155b801561142d57506001600160a01b0383166000908152600b602052604090205460ff16155b1561148d576006548261143f85610da2565b611449919061243a565b111561148d5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016109fd565b601d546001600160a01b038481169116148015906114b657506001600160a01b03831661dead14155b80156114db57506001600160a01b0383166000908152600b602052604090205460ff16155b1561153057601d54600160a01b900460ff166115305760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016109fd565b611538611cc2565b1561154557611545611798565b600061155083610b27565b90506115b88160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060076000896001600160a01b03166001600160a01b031681526020019081526020016000205461136b9092919063ffffffff16565b6001600160a01b038616600090815260076020908152604080832093909355600a90529081205460ff16156115ed5781611618565b601d54611618906001600160a01b0388811691161461160d576000611610565b60015b878785611d12565b6001600160a01b03861660009081526007602052604090205490915061163e9082611b6b565b6001600160a01b0380871660008181526007602052604090209290925587166000805160206124f283398151915261167584610b04565b60405190815260200160405180910390a350600195945050505050565b6000610acc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061136b565b6000826000036116e6575060006109b9565b60006116f283856123ce565b9050826116ff85836123ac565b14610acc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109fd565b6000610acc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e6d565b6021805460ff19166001179055601a54601b546000916117b7916109bf565b6117c357600d546117c6565b60005b905060006117e160135460155461169290919063ffffffff16565b905060006118036002610b2184610b21876020546116d490919063ffffffff16565b9050600061181c8260205461169290919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061185657611856612367565b6001600160a01b039283166020918202929092010152600180548351921691839190811061188657611886612367565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac947906118d0908690600090879030904290600401612452565b600060405180830381600087803b1580156118ea57600080fd5b505af11580156118fe573d6000803e3d6000fd5b505050506000611917824761169290919063ffffffff16565b90506000611930611929896002611756565b8890611692565b905060006119526002610b2184610b21600d54886116d490919063ffffffff16565b9050600061196f83610b21601154876116d490919063ffffffff16565b9050600061198c84610b21600f54886116d490919063ffffffff16565b6018546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146119e3576040519150601f19603f3d011682016040523d82523d6000602084013e6119e8565b606091505b50506019546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114611a3d576040519150601f19603f3d011682016040523d82523d6000602084013e611a42565b606091505b50909150508915611b1f57601c5460175460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611abd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ae291906124c3565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601d54600160b01b900460ff1615611b4c57601e5460205414611b4457601e54611b50565b601f54611b50565b6020545b60205550506021805460ff1916905550505050505050505050565b600080611b78838561243a565b905083811015610acc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109fd565b600080611bd683610b27565b9050611c3e8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060076000896001600160a01b03166001600160a01b031681526020019081526020016000205461136b9092919063ffffffff16565b6001600160a01b038087166000908152600760205260408082209390935590861681522054611c6d9082611b6b565b6001600160a01b0380861660008181526007602052604090819020939093559151908716906000805160206124f283398151915290611caf9087815260200190565b60405180910390a3506001949350505050565b601d546000906001600160a01b03163314801590611ce3575060215460ff16155b8015611cf85750601d54600160a81b900460ff165b8015610aff5750602054611d0b30610da2565b1015905090565b600080600186151514611d3b57601654601554611d369190610b21905b86906116d4565b611d4f565b601654601454611d4f9190610b2190611d2f565b90506000600187151514611d7d57611d78601554610b21601354856116d490919063ffffffff16565b611d98565b611d98601454610b21601254856116d490919063ffffffff16565b600854909150611da89082611692565b6008556000611db78383611692565b30600090815260076020526040902054909150611dd49082611b6b565b306000818152600760205260409020919091556001600160a01b0388166000805160206124f2833981519152611e0984610b04565b60405190815260200160405180910390a36008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611e618584611692565b98975050505050505050565b60008183611e8e5760405162461bcd60e51b81526004016109fd9190611f34565b50600061139c84866123ac565b828054611ea7906122f8565b90600052602060002090601f016020900481019282611ec95760008555611f0f565b82601f10611ee257805160ff1916838001178555611f0f565b82800160010185558215611f0f579182015b82811115611f0f578251825591602001919060010190611ef4565b50611f1b929150611f1f565b5090565b5b80821115611f1b5760008155600101611f20565b600060208083528351808285015260005b81811015611f6157858101830151858201604001528201611f45565b81811115611f73576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611fa057600080fd5b919050565b60008060408385031215611fb857600080fd5b611fc183611f89565b946020939093013593505050565b600060208284031215611fe157600080fd5b610acc82611f89565b60008060408385031215611ffd57600080fd5b50508035926020909101359150565b60008060006060848603121561202157600080fd5b61202a84611f89565b925061203860208501611f89565b9150604084013590509250925092565b8015158114610fd357600080fd5b60006020828403121561206857600080fd5b8135610acc81612048565b60006020828403121561208557600080fd5b5035919050565b6000806000604084860312156120a157600080fd5b833567ffffffffffffffff808211156120b957600080fd5b818601915086601f8301126120cd57600080fd5b8135818111156120dc57600080fd5b8760208260051b85010111156120f157600080fd5b6020928301955093505084013561210781612048565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561213a57600080fd5b813567ffffffffffffffff8082111561215257600080fd5b818401915084601f83011261216657600080fd5b81358181111561217857612178612112565b604051601f8201601f19908116603f011681019083821181831017156121a0576121a0612112565b816040528281528760208487010111156121b957600080fd5b826020860160208301376000928101602001929092525095945050505050565b600080600080608085870312156121ef57600080fd5b84356121fa81612048565b93506020850135925060408501359150606085013561221881612048565b939692955090935050565b60008060008060008060008060006101208a8c03121561224257600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b60008060006060848603121561229757600080fd5b6122a084611f89565b92506122ae60208501611f89565b91506122bc60408501611f89565b90509250925092565b600080604083850312156122d857600080fd5b6122e183611f89565b91506122ef60208401611f89565b90509250929050565b600181811c9082168061230c57607f821691505b60208210810361232c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123a5576123a561237d565b5060010190565b6000826123c957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156123e8576123e861237d565b500290565b6000602082840312156123ff57600080fd5b5051919050565b60006020828403121561241857600080fd5b8151610acc81612048565b6000828210156124355761243561237d565b500390565b6000821982111561244d5761244d61237d565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124a25784516001600160a01b03168352938301939183019160010161247d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124d857600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ae8d9c120f42f99164c08631a166d23c19f3fd2323545f3fc153fe16619e542f64736f6c634300080d0033