60806040526006805460ff19166001179055620000276064683635c9adc5dea00000620001a9565b600755620000406064683635c9adc5dea00000620001a9565b6008555f6009819055600a55600b805460ff19169055683635c9adc5dea00000600d553480156200006f575f80fd5b505f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360068054610100600160a81b03191661010033908102919091179091555f9081526001602081905260408220683635c9adc5dea00000905590600390620000fc5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff1995861617905530815260039092529020805490911660011790556200014d5f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040516200019b91815260200190565b60405180910390a3620001c9565b5f82620001c457634e487b7160e01b5f52601260045260245ffd5b500490565b611f6880620001d75f395ff3fe608060405260043610610198575f3560e01c806370a08231116100e7578063c3c8cd8011610087578063d34628cc11610062578063d34628cc146104b4578063dd62ed3e146104d3578063f2fde38b14610517578063f7448a3114610536575f80fd5b8063c3c8cd8014610473578063c876d0b914610487578063c9567bf9146104a0575f80fd5b806382f3ccd1116100c257806382f3ccd1146103f75780638da5cb5b1461040b57806395d89b4114610427578063a9059cbb14610454575f80fd5b806370a0823114610390578063751039fc146103c457806379e939a3146103d8575f80fd5b806331c2d8471161015257806356dda5871161012d57806356dda587146103185780635d60c7be1461032c5780636f340b65146103685780636fc3eaec1461037c575f80fd5b806331c2d847146102895780633af32abf146102aa5780633bbac579146102e1575f80fd5b806306fdde03146101a3578063095ea7b3146101e25780630faee56f1461021157806318160ddd1461023457806323b872dd1461024f578063313ce5671461026e575f80fd5b3661019f57005b5f80fd5b3480156101ae575f80fd5b5060408051808201909152600581526454757a6b6960d81b60208201525b6040516101d99190611ae7565b60405180910390f35b3480156101ed575f80fd5b506102016101fc366004611b56565b610555565b60405190151581526020016101d9565b34801561021c575f80fd5b5061022660085481565b6040519081526020016101d9565b34801561023f575f80fd5b50683635c9adc5dea00000610226565b34801561025a575f80fd5b50610201610269366004611b80565b61056b565b348015610279575f80fd5b50604051600981526020016101d9565b348015610294575f80fd5b506102a86102a3366004611bd2565b6105d2565b005b3480156102b5575f80fd5b506102016102c4366004611c92565b6001600160a01b03165f9081526003602052604090205460ff1690565b3480156102ec575f80fd5b506102016102fb366004611c92565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610323575f80fd5b506102a8610672565b348015610337575f80fd5b506006546103509061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b348015610373575f80fd5b506102a86106b0565b348015610387575f80fd5b506102a86106e5565b34801561039b575f80fd5b506102266103aa366004611c92565b6001600160a01b03165f9081526001602052604090205490565b3480156103cf575f80fd5b506102a8610721565b3480156103e3575f80fd5b506102a86103f2366004611cba565b610873565b348015610402575f80fd5b506102a8610904565b348015610416575f80fd5b505f546001600160a01b0316610350565b348015610432575f80fd5b5060408051808201909152600581526454555a4b4960d81b60208201526101cc565b34801561045f575f80fd5b5061020161046e366004611b56565b610938565b34801561047e575f80fd5b506102a8610944565b348015610492575f80fd5b506006546102019060ff1681565b3480156104ab575f80fd5b506102a861098b565b3480156104bf575f80fd5b506102a86104ce366004611bd2565b610dbf565b3480156104de575f80fd5b506102266104ed366004611cf1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610522575f80fd5b506102a8610531366004611c92565b610e53565b348015610541575f80fd5b506102a8610550366004611b56565b610ed5565b5f6105613384846110a0565b5060015b92915050565b5f6105778484846111c3565b6105c884336105c385604051806060016040528060288152602001611f0b602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611660565b6110a0565b5060019392505050565b60065461010090046001600160a01b0316331461060a5760405162461bcd60e51b815260040161060190611d1d565b60405180910390fd5b5f5b815181101561066e575f60055f84848151811061062b5761062b611d52565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061066681611d7a565b91505061060c565b5050565b5f546001600160a01b0316331461069b5760405162461bcd60e51b815260040161060190611d92565b600c805460ff60a81b1916600160a81b179055565b5f546001600160a01b031633146106d95760405162461bcd60e51b815260040161060190611d92565b60016009819055600a55565b60065461010090046001600160a01b031633146107145760405162461bcd60e51b815260040161060190611d1d565b4761071e81611698565b50565b5f546001600160a01b0316331461074a5760405162461bcd60e51b815260040161060190611d92565b600c54600160a01b900460ff166107a35760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610601565b683635c9adc5dea00000600d819055600781905560088190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1604051683635c9adc5dea0000081527f9a67c283449381e8ee7fa29c87cef05ccedd0faaff767bf879b02d34290fdc7b9060200160405180910390a1604051683635c9adc5dea0000081527f8731543e21093ca66ef786ff7b72c9887cea0eec2b8b9484b95429eaffc4903c9060200160405180910390a16006805460ff19169055565b60065461010090046001600160a01b031633146108a25760405162461bcd60e51b815260040161060190611d1d565b6001600160a01b0382165f81815260036020908152604091829020805460ff19168515159081179091558251938452908301527ff3ef47a8986c54ec89de9fdd967838ffa1f8c90d7b1ca23b3d78e32232226fdb910160405180910390a15050565b5f546001600160a01b0316331461092d5760405162461bcd60e51b815260040161060190611d92565b6014600955600a8055565b5f6105613384846111c3565b60065461010090046001600160a01b031633146109735760405162461bcd60e51b815260040161060190611d1d565b305f9081526001602052604090205461071e816116d3565b5f546001600160a01b031633146109b45760405162461bcd60e51b815260040161060190611d92565b600c54600160a01b900460ff1615610a0e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610601565b600b8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790819055737a250d5630b4cf539739df2c5dacb4c659f2488d90610a729030906001600160a01b0361010090910416683635c9adc5dea000006110a0565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad29190611dc7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b419190611dc7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610baf9190611dc7565b600c80546001600160a01b0319166001600160a01b0392909216919091179055305f90815260016020526040812054606490610bec906032611de2565b610bf69190611df9565b600b549091506001600160a01b036101009091041663f305d7194730845f80610c265f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c8c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cb19190611e18565b5050506103e8683635c9adc5dea000006014610ccd9190611de2565b610cd79190611df9565b600d556103e8610cf1683635c9adc5dea000006014611de2565b610cfb9190611df9565b6007556103e8610d15683635c9adc5dea000006014611de2565b610d1f9190611df9565b60085560236009556019600a55600c54600b5460405163095ea7b360e01b81526001600160a01b03610100909204821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610d83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da79190611e43565b5050600c805460ff60a01b1916600160a01b17905550565b60065461010090046001600160a01b03163314610dee5760405162461bcd60e51b815260040161060190611d1d565b5f5b815181101561066e57600160055f848481518110610e1057610e10611d52565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610e4b81611d7a565b915050610df0565b5f546001600160a01b03163314610e7c5760405162461bcd60e51b815260040161060190611d92565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b60065461010090046001600160a01b03163314610f045760405162461bcd60e51b815260040161060190611d1d565b306001600160a01b03831603610f765760405162461bcd60e51b815260206004820152603160248201527f596f752063616e277420776974686472617720746f6b656e732066726f6d206f6044820152703bb732b210313c9031b7b73a3930b1ba1760791b6064820152608401610601565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610fba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fde9190611e5e565b9050808211156110215760405162461bcd60e51b815260206004820152600e60248201526d62616c616e6365206973206c6f7760901b6044820152606401610601565b60065460405163a9059cbb60e01b81526101009091046001600160a01b0390811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af1158015611076573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109a9190611e43565b50505050565b6001600160a01b0383166111025760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610601565b6001600160a01b0382166111635760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610601565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116112245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610601565b80611243846001600160a01b03165f9081526001602052604090205490565b10156112915760405162461bcd60e51b815260206004820152601a60248201527f42616c616e6365206c657373207468656e207472616e736665720000000000006044820152606401610601565b6001600160a01b0383165f9081526003602052604081205460ff16806112ce57506001600160a01b0383165f9081526003602052604090205460ff165b611654576001600160a01b0384165f9081526005602052604090205460ff1615801561131257506001600160a01b0383165f9081526005602052604090205460ff16155b61131a575f80fd5b600c54600160a01b900460ff166113735760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610601565b600d548211156113c55760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e7420657863656564206d61782074726e7820616d6f756e740000006044820152606401610601565b60065460ff16156114ad57600b546001600160a01b0384811661010090920416148015906114015750600c546001600160a01b03848116911614155b156114ad57325f90815260046020526040902054431161149b5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610601565b325f9081526004602052604090204390555b600c546001600160a01b0384811691161461153c57600754826114e4856001600160a01b03165f9081526001602052604090205490565b6114ee9190611e75565b111561153c5760405162461bcd60e51b815260206004820152601960248201527f6d61782057616c6c6574206c696d6974206578636565646564000000000000006044820152606401610601565b47801561154c5761154c47611698565b600c546001600160a01b039081169086160361158957611582606461157c600a548661185d90919063ffffffff16565b906118e2565b9150611652565b600c546001600160a01b0390811690851603611652576115b9606461157c6009548661185d90919063ffffffff16565b305f90815260016020526040902054600b549193509060ff1661165057600c54600160a81b900460ff1615611626576115fd6103e8683635c9adc5dea00000611df9565b8111156116215761162161161c8561161784600854611923565b611923565b6116d3565b611650565b61163a6064683635c9adc5dea00000611df9565b8111156116505761165061161c82600854611923565b505b505b61109a84848484611937565b5f81848411156116835760405162461bcd60e51b81526004016106019190611ae7565b505f61168f8486611e88565b95945050505050565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f1935050505015801561066e573d5f803e3d5ffd5b600b805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061171357611713611d52565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611784573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a89190611dc7565b816001815181106117bb576117bb611d52565b6001600160a01b039283166020918202929092010152600b546117e6913091610100900416846110a0565b600b5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac947906118229085905f90869030904290600401611e9b565b5f604051808303815f87803b158015611839575f80fd5b505af115801561184b573d5f803e3d5ffd5b5050600b805460ff1916905550505050565b5f825f0361186c57505f610565565b5f6118778385611de2565b9050826118848583611df9565b146118db5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610601565b9392505050565b5f6118db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a1c565b5f81831161193157826118db565b50919050565b5f6119428284611e88565b6001600160a01b0386165f908152600160205260409020549091506119679084611a48565b6001600160a01b038087165f9081526001602052604080822093909355908616815220546119959082611a89565b6001600160a01b0385165f908152600160205260408082209290925530815220546119c09083611a89565b305f9081526001602090815260409182902092909255518281526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b5f8183611a3c5760405162461bcd60e51b81526004016106019190611ae7565b505f61168f8486611df9565b5f6118db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611660565b5f80611a958385611e75565b9050838110156118db5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610601565b5f6020808352835180828501525f5b81811015611b1257858101830151858201604001528201611af6565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461071e575f80fd5b8035611b5181611b32565b919050565b5f8060408385031215611b67575f80fd5b8235611b7281611b32565b946020939093013593505050565b5f805f60608486031215611b92575f80fd5b8335611b9d81611b32565b92506020840135611bad81611b32565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611be3575f80fd5b823567ffffffffffffffff80821115611bfa575f80fd5b818501915085601f830112611c0d575f80fd5b813581811115611c1f57611c1f611bbe565b8060051b604051601f19603f83011681018181108582111715611c4457611c44611bbe565b604052918252848201925083810185019188831115611c61575f80fd5b938501935b82851015611c8657611c7785611b46565b84529385019392850192611c66565b98975050505050505050565b5f60208284031215611ca2575f80fd5b81356118db81611b32565b801515811461071e575f80fd5b5f8060408385031215611ccb575f80fd5b8235611cd681611b32565b91506020830135611ce681611cad565b809150509250929050565b5f8060408385031215611d02575f80fd5b8235611d0d81611b32565b91506020830135611ce681611b32565b6020808252818101527f4f6e6c79207465616d2063616e2063616c6c20746869732066756e6374696f6e604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611d8b57611d8b611d66565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611dd7575f80fd5b81516118db81611b32565b808202811582820484141761056557610565611d66565b5f82611e1357634e487b7160e01b5f52601260045260245ffd5b500490565b5f805f60608486031215611e2a575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e53575f80fd5b81516118db81611cad565b5f60208284031215611e6e575f80fd5b5051919050565b8082018082111561056557610565611d66565b8181038181111561056557610565611d66565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611ee95784516001600160a01b031683529383019391830191600101611ec4565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122067e7942de364646a9bd1a0d983dc1e1747021b2a88beac15317358b4f3ffdd6664736f6c63430008140033