0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80634549b0391161010457806395d89b41116100a2578063dd62ed3e11610071578063dd62ed3e14610400578063f2cc0c1814610439578063f2fde38b1461044c578063f84354f11461045f57600080fd5b806395d89b411461038b578063a457c2d7146103ae578063a9059cbb146103c1578063cba0e996146103d457600080fd5b8063683f1927116100de578063683f19271461034257806370a0823114610355578063715018a6146103685780638da5cb5b1461037057600080fd5b80634549b039146103095780635880b8731461031c57806359f1707d1461032f57600080fd5b80632525140611610171578063395093511161014b57806339509351146102c85780633b6b1961146102db5780633bd5d173146102ee5780633c9f861d1461030157600080fd5b806325251406146102915780632d838119146102a6578063313ce567146102b957600080fd5b806313114a9d116101ad57806313114a9d1461025c57806318160ddd1461026e5780631c02164d1461027657806323b872dd1461027e57600080fd5b806306fdde03146101d4578063095ea7b31461020d5780630c3f64bf14610230575b600080fd5b60408051808201909152600b81526a5368696261204368756c6f60a81b60208201525b604051610204919061210c565b60405180910390f35b61022061021b366004612098565b610472565b6040519015158152602001610204565b61022061023e366004612011565b6001600160a01b031660009081526005602052604090205460ff1690565b600c545b604051908152602001610204565b600a54610260565b600e54610260565b61022061028c36600461205d565b610489565b6102a461029f366004612011565b6104f2565b005b6102606102b43660046120c1565b6105ff565b60405160098152602001610204565b6102206102d6366004612098565b610683565b6102a46102e93660046120c1565b6106b9565b6102a46102fc3660046120c1565b6106f4565b600d54610260565b6102606103173660046120d9565b6107e0565b6102a461032a3660046120c1565b61086f565b6102a461033d3660046120c1565b6108aa565b6102a4610350366004612011565b6108e5565b610260610363366004612011565b6109de565b6102a4610a3d565b6000546040516001600160a01b039091168152602001610204565b6040805180820190915260078152665348494243485560c81b60208201526101f7565b6102206103bc366004612098565b610ab1565b6102206103cf366004612098565b610b00565b6102206103e2366004612011565b6001600160a01b031660009081526004602052604090205460ff1690565b61026061040e36600461202b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6102a4610447366004612011565b610b0d565b6102a461045a366004612011565b610ccd565b6102a461046d366004612011565b610db7565b600061047f338484610fa6565b5060015b92915050565b60006104968484846110ca565b6104e884336104e38560405180606001604052806028815260200161231f602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061148f565b610fa6565b5060019392505050565b6000546001600160a01b031633146105255760405162461bcd60e51b815260040161051c9061215f565b60405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff16156105995760405162461bcd60e51b815260206004820152602260248201527f4163636f756e7420697320616c7265616479206275726e696e67206163636f756044820152611b9d60f21b606482015260840161051c565b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000600b548211156106665760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161051c565b60006106706114c9565b905061067c83826114ec565b9392505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161047f9185906104e3908661152e565b6000546001600160a01b031633146106e35760405162461bcd60e51b815260040161051c9061215f565b6106ee8160646122b7565b60105550565b3360008181526004602052604090205460ff16156107695760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b606482015260840161051c565b60006107748361158d565b5050506001600160a01b0386166000908152600160205260409020549394506107a293925084915050611611565b6001600160a01b038316600090815260016020526040902055600b546107c89082611611565b600b55600c546107d8908461152e565b600c55505050565b6000600a548311156108345760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161051c565b816108545760006108448461158d565b5094965061048395505050505050565b600061085f8461158d565b5093965061048395505050505050565b6000546001600160a01b031633146108995760405162461bcd60e51b815260040161051c9061215f565b6108a48160646122b7565b600f5550565b6000546001600160a01b031633146108d45760405162461bcd60e51b815260040161051c9061215f565b6108df8160646122b7565b60115550565b6000546001600160a01b0316331461090f5760405162461bcd60e51b815260040161051c9061215f565b6001600160a01b03811660009081526005602052604090205460ff16156109785760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920646576206163636f756e740000604482015260640161051c565b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b03811660009081526004602052604081205460ff1615610a1b57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610483906105ff565b6000546001600160a01b03163314610a675760405162461bcd60e51b815260040161051c9061215f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061047f33846104e385604051806060016040528060258152602001612347602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061148f565b600061047f3384846110ca565b6000546001600160a01b03163314610b375760405162461bcd60e51b815260040161051c9061215f565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610ba45760405162461bcd60e51b815260206004820152601e60248201527f57652063616e206e6f74206578636c7564652044455820726f757465722e0000604482015260640161051c565b6001600160a01b03811660009081526004602052604090205460ff1615610c0d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161051c565b6001600160a01b03811660009081526001602052604090205415610c67576001600160a01b038116600090815260016020526040902054610c4d906105ff565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b03163314610cf75760405162461bcd60e51b815260040161051c9061215f565b6001600160a01b038116610d5c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610de15760405162461bcd60e51b815260040161051c9061215f565b6001600160a01b03811660009081526004602052604090205460ff16610e495760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161051c565b60005b600754811015610fa257816001600160a01b031660078281548110610e8157634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610f905760078054610eac906001906122d6565b81548110610eca57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600780546001600160a01b039092169183908110610f0457634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556007805480610f6a57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f9a816122ed565b915050610e4c565b5050565b6001600160a01b0383166110085760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051c565b6001600160a01b0382166110695760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661112e5760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051c565b6001600160a01b0382166111905760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051c565b600081116111f25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051c565b6001600160a01b03831660009081526005602052604090205460019060ff168061123457506001600160a01b03831660009081526005602052604090205460ff165b8061125757506001600160a01b03831660009081526004602052604090205460ff165b15611260575060005b8061126d5761126d611653565b6000546001600160a01b0385811691161480159061129957506000546001600160a01b03848116911614155b15611319576112aa6009600a61220f565b6112b9906402540be4006122b7565b8211156113195760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161051c565b6001600160a01b03841660009081526004602052604090205460ff16801561135a57506001600160a01b03831660009081526004602052604090205460ff16155b1561136f5761136a848484611698565b61146d565b6001600160a01b03841660009081526004602052604090205460ff161580156113b057506001600160a01b03831660009081526004602052604090205460ff165b156113c05761136a848484611776565b6001600160a01b03841660009081526004602052604090205460ff1615801561140257506001600160a01b03831660009081526004602052604090205460ff16155b156114125761136a8484846117d6565b6001600160a01b03841660009081526004602052604090205460ff16801561145257506001600160a01b03831660009081526004602052604090205460ff165b156114625761136a848484611835565b61146d8484846117d6565b8061148957611489601254600f55601354601055601454601155565b50505050565b600081848411156114b35760405162461bcd60e51b815260040161051c919061210c565b5060006114c084866122d6565b95945050505050565b60008060006114d6611896565b90925090506114e582826114ec565b9250505090565b600061067c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a50565b60008061153b8385612194565b90508381101561067c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051c565b6000806000806000806000806000806115ae8b600f54601054601154611a7e565b92509250925060006115c28c858585611ad5565b905060006115ce6114c9565b90506000806115de8f8885611aed565b9150915060006115f18383898988611b17565b929e50919c509a5091985093965091945092505050919395979092949650565b600061067c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061148f565b600f541580156116635750601054155b801561166f5750601154155b1561167657565b600f805460125560108054601355601180546014556000928390559082905555565b60006116a26114c9565b905060008060008060008060006116b88961158d565b965096509650965096509650965060006116db8984611b5390919063ffffffff16565b905060006116e9838b611b53565b90506116f88d8d8d8c8c611bd2565b611702838e611c76565b61170c848e611d78565b61171a878383888888611db6565b8b6001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161175f91815260200190565b60405180910390a350505050505050505050505050565b60006117806114c9565b905060008060008060008060006117968961158d565b965096509650965096509650965060006117b98984611b5390919063ffffffff16565b905060006117c7838b611b53565b90506116f88d8d888c8c611e1e565b60006117e06114c9565b905060008060008060008060006117f68961158d565b965096509650965096509650965060006118198984611b5390919063ffffffff16565b90506000611827838b611b53565b90506116f88d8d8b8b611ea6565b600061183f6114c9565b905060008060008060008060006118558961158d565b965096509650965096509650965060006118788984611b5390919063ffffffff16565b90506000611886838b611b53565b90506116f88d8d8d8c8a8d611f1a565b600b54600a546000918291825b600754811015611a20578260016000600784815481106118d357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061194c575081600260006007848154811061192557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561196257600b54600a54945094505050509091565b6119b6600160006007848154811061198a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611611565b9250611a0c60026000600784815481106119e057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611611565b915080611a18816122ed565b9150506118a3565b50600a54600b54611a30916114ec565b821015611a4757600b54600a549350935050509091565b90939092509050565b60008183611a715760405162461bcd60e51b815260040161051c919061210c565b5060006114c084866121ac565b6000808080611a9a6064611a9481818c8c611b53565b906114ec565b90506000611aaf6064611a9481818d8c611b53565b90506000611ac46064611a9481818e8c611b53565b929a91995091975095505050505050565b60006114c082611ae785818989611611565b90611611565b60008080611afb8685611b53565b90506000611b098686611b53565b919791965090945050505050565b600080611b248584611b53565b90506000611b328585611b53565b90506000611b4682611ae785818d8d611611565b9998505050505050505050565b600082611b6257506000610483565b6000611b6e83856122b7565b905082611b7b85836121ac565b1461067c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051c565b6001600160a01b038516600090815260026020526040902054611bf59084611611565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611c249083611611565b6001600160a01b038087166000908152600160205260408082209390935590861681522054611c53908261152e565b6001600160a01b0390941660009081526001602052604090209390935550505050565b6000611c806114c9565b90506000611c8e8483611b53565b905060006008600081548110611cb457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168083526001909152604090912054909150611ce6908361152e565b6001600160a01b038216600090815260016020908152604080832093909355600290522054611d15908661152e565b6001600160a01b0380831660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d699089815260200190565b60405180910390a35050505050565b6000611d826114c9565b90506000611d908483611b53565b905060006009600081548110611cb457634e487b7160e01b600052603260045260246000fd5b611dd384611ae787611ae78a600b5461161190919063ffffffff16565b600b55600c54611de3908461152e565b600c55600d54611df3908361152e565b600d55600e54611e03908261152e565b600e55600a54611e139083611611565b600a55505050505050565b6001600160a01b038516600090815260016020526040902054611e419083611611565b6001600160a01b03808716600090815260016020908152604080832094909455918716815260029091522054611e77908461152e565b6001600160a01b038516600090815260026020908152604080832093909355600190522054611c53908261152e565b6001600160a01b038416600090815260016020526040902054611ec99083611611565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611ef8908261152e565b6001600160a01b03909316600090815260016020526040902092909255505050565b6001600160a01b038616600090815260026020526040902054611f3d9085611611565b6001600160a01b038716600090815260026020908152604080832093909355600190522054611f6c9084611611565b6001600160a01b03808816600090815260016020908152604080832094909455918816815260029091522054611fa2908361152e565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611fd1908261152e565b6001600160a01b039095166000908152600160205260409020949094555050505050565b80356001600160a01b038116811461200c57600080fd5b919050565b600060208284031215612022578081fd5b61067c82611ff5565b6000806040838503121561203d578081fd5b61204683611ff5565b915061205460208401611ff5565b90509250929050565b600080600060608486031215612071578081fd5b61207a84611ff5565b925061208860208501611ff5565b9150604084013590509250925092565b600080604083850312156120aa578182fd5b6120b383611ff5565b946020939093013593505050565b6000602082840312156120d2578081fd5b5035919050565b600080604083850312156120eb578182fd5b8235915060208301358015158114612101578182fd5b809150509250929050565b6000602080835283518082850152825b818110156121385785810183015185820160400152820161211c565b818111156121495783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156121a7576121a7612308565b500190565b6000826121c757634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156122075781600019048211156121ed576121ed612308565b808516156121fa57918102915b93841c93908002906121d1565b509250929050565b600061067c838360008261222557506001610483565b8161223257506000610483565b816001811461224857600281146122525761226e565b6001915050610483565b60ff84111561226357612263612308565b50506001821b610483565b5060208310610133831016604e8410600b8410161715612291575081810a610483565b61229b83836121cc565b80600019048211156122af576122af612308565b029392505050565b60008160001904831182151516156122d1576122d1612308565b500290565b6000828210156122e8576122e8612308565b500390565b600060001982141561230157612301612308565b5060010190565b634e487b7160e01b600052601160045260246000fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122004014a333e6e2074ec259b66d4d22b15e70bea71dbbb773c24e98302a4c4da7264736f6c63430008040033
0x6080604052620000126009600a62000156565b620000239064e8d4a5100062000221565b600a81905562000036906000196200025d565b620000449060001962000243565b600b556096600f5560c86010556096601155600f546012556010546013556011546014553480156200007557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b5433600081815260016020908152604080832094909455600a549351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000294565b600181815b808511156200014e5781600019048211156200013257620001326200027e565b808516156200014057918102915b93841c939080029062000112565b509250929050565b60006200016483836200016b565b9392505050565b6000826200017c575060016200021b565b816200018b575060006200021b565b8160018114620001a45760028114620001af57620001cf565b60019150506200021b565b60ff841115620001c357620001c36200027e565b50506001821b6200021b565b5060208310610133831016604e8410600b8410161715620001f4575081810a6200021b565b6200020083836200010d565b80600019048211156200021757620002176200027e565b0290505b92915050565b60008160001904831182151516156200023e576200023e6200027e565b500290565b6000828210156200025857620002586200027e565b500390565b6000826200027957634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b6123a180620002a46000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80634549b0391161010457806395d89b41116100a2578063dd62ed3e11610071578063dd62ed3e14610400578063f2cc0c1814610439578063f2fde38b1461044c578063f84354f11461045f57600080fd5b806395d89b411461038b578063a457c2d7146103ae578063a9059cbb146103c1578063cba0e996146103d457600080fd5b8063683f1927116100de578063683f19271461034257806370a0823114610355578063715018a6146103685780638da5cb5b1461037057600080fd5b80634549b039146103095780635880b8731461031c57806359f1707d1461032f57600080fd5b80632525140611610171578063395093511161014b57806339509351146102c85780633b6b1961146102db5780633bd5d173146102ee5780633c9f861d1461030157600080fd5b806325251406146102915780632d838119146102a6578063313ce567146102b957600080fd5b806313114a9d116101ad57806313114a9d1461025c57806318160ddd1461026e5780631c02164d1461027657806323b872dd1461027e57600080fd5b806306fdde03146101d4578063095ea7b31461020d5780630c3f64bf14610230575b600080fd5b60408051808201909152600b81526a5368696261204368756c6f60a81b60208201525b604051610204919061210c565b60405180910390f35b61022061021b366004612098565b610472565b6040519015158152602001610204565b61022061023e366004612011565b6001600160a01b031660009081526005602052604090205460ff1690565b600c545b604051908152602001610204565b600a54610260565b600e54610260565b61022061028c36600461205d565b610489565b6102a461029f366004612011565b6104f2565b005b6102606102b43660046120c1565b6105ff565b60405160098152602001610204565b6102206102d6366004612098565b610683565b6102a46102e93660046120c1565b6106b9565b6102a46102fc3660046120c1565b6106f4565b600d54610260565b6102606103173660046120d9565b6107e0565b6102a461032a3660046120c1565b61086f565b6102a461033d3660046120c1565b6108aa565b6102a4610350366004612011565b6108e5565b610260610363366004612011565b6109de565b6102a4610a3d565b6000546040516001600160a01b039091168152602001610204565b6040805180820190915260078152665348494243485560c81b60208201526101f7565b6102206103bc366004612098565b610ab1565b6102206103cf366004612098565b610b00565b6102206103e2366004612011565b6001600160a01b031660009081526004602052604090205460ff1690565b61026061040e36600461202b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6102a4610447366004612011565b610b0d565b6102a461045a366004612011565b610ccd565b6102a461046d366004612011565b610db7565b600061047f338484610fa6565b5060015b92915050565b60006104968484846110ca565b6104e884336104e38560405180606001604052806028815260200161231f602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061148f565b610fa6565b5060019392505050565b6000546001600160a01b031633146105255760405162461bcd60e51b815260040161051c9061215f565b60405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff16156105995760405162461bcd60e51b815260206004820152602260248201527f4163636f756e7420697320616c7265616479206275726e696e67206163636f756044820152611b9d60f21b606482015260840161051c565b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000600b548211156106665760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161051c565b60006106706114c9565b905061067c83826114ec565b9392505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161047f9185906104e3908661152e565b6000546001600160a01b031633146106e35760405162461bcd60e51b815260040161051c9061215f565b6106ee8160646122b7565b60105550565b3360008181526004602052604090205460ff16156107695760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b606482015260840161051c565b60006107748361158d565b5050506001600160a01b0386166000908152600160205260409020549394506107a293925084915050611611565b6001600160a01b038316600090815260016020526040902055600b546107c89082611611565b600b55600c546107d8908461152e565b600c55505050565b6000600a548311156108345760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161051c565b816108545760006108448461158d565b5094965061048395505050505050565b600061085f8461158d565b5093965061048395505050505050565b6000546001600160a01b031633146108995760405162461bcd60e51b815260040161051c9061215f565b6108a48160646122b7565b600f5550565b6000546001600160a01b031633146108d45760405162461bcd60e51b815260040161051c9061215f565b6108df8160646122b7565b60115550565b6000546001600160a01b0316331461090f5760405162461bcd60e51b815260040161051c9061215f565b6001600160a01b03811660009081526005602052604090205460ff16156109785760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920646576206163636f756e740000604482015260640161051c565b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b03811660009081526004602052604081205460ff1615610a1b57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610483906105ff565b6000546001600160a01b03163314610a675760405162461bcd60e51b815260040161051c9061215f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061047f33846104e385604051806060016040528060258152602001612347602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061148f565b600061047f3384846110ca565b6000546001600160a01b03163314610b375760405162461bcd60e51b815260040161051c9061215f565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610ba45760405162461bcd60e51b815260206004820152601e60248201527f57652063616e206e6f74206578636c7564652044455820726f757465722e0000604482015260640161051c565b6001600160a01b03811660009081526004602052604090205460ff1615610c0d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161051c565b6001600160a01b03811660009081526001602052604090205415610c67576001600160a01b038116600090815260016020526040902054610c4d906105ff565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b03163314610cf75760405162461bcd60e51b815260040161051c9061215f565b6001600160a01b038116610d5c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610de15760405162461bcd60e51b815260040161051c9061215f565b6001600160a01b03811660009081526004602052604090205460ff16610e495760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161051c565b60005b600754811015610fa257816001600160a01b031660078281548110610e8157634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610f905760078054610eac906001906122d6565b81548110610eca57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600780546001600160a01b039092169183908110610f0457634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556007805480610f6a57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f9a816122ed565b915050610e4c565b5050565b6001600160a01b0383166110085760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051c565b6001600160a01b0382166110695760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661112e5760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051c565b6001600160a01b0382166111905760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051c565b600081116111f25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051c565b6001600160a01b03831660009081526005602052604090205460019060ff168061123457506001600160a01b03831660009081526005602052604090205460ff165b8061125757506001600160a01b03831660009081526004602052604090205460ff165b15611260575060005b8061126d5761126d611653565b6000546001600160a01b0385811691161480159061129957506000546001600160a01b03848116911614155b15611319576112aa6009600a61220f565b6112b9906402540be4006122b7565b8211156113195760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161051c565b6001600160a01b03841660009081526004602052604090205460ff16801561135a57506001600160a01b03831660009081526004602052604090205460ff16155b1561136f5761136a848484611698565b61146d565b6001600160a01b03841660009081526004602052604090205460ff161580156113b057506001600160a01b03831660009081526004602052604090205460ff165b156113c05761136a848484611776565b6001600160a01b03841660009081526004602052604090205460ff1615801561140257506001600160a01b03831660009081526004602052604090205460ff16155b156114125761136a8484846117d6565b6001600160a01b03841660009081526004602052604090205460ff16801561145257506001600160a01b03831660009081526004602052604090205460ff165b156114625761136a848484611835565b61146d8484846117d6565b8061148957611489601254600f55601354601055601454601155565b50505050565b600081848411156114b35760405162461bcd60e51b815260040161051c919061210c565b5060006114c084866122d6565b95945050505050565b60008060006114d6611896565b90925090506114e582826114ec565b9250505090565b600061067c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a50565b60008061153b8385612194565b90508381101561067c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051c565b6000806000806000806000806000806115ae8b600f54601054601154611a7e565b92509250925060006115c28c858585611ad5565b905060006115ce6114c9565b90506000806115de8f8885611aed565b9150915060006115f18383898988611b17565b929e50919c509a5091985093965091945092505050919395979092949650565b600061067c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061148f565b600f541580156116635750601054155b801561166f5750601154155b1561167657565b600f805460125560108054601355601180546014556000928390559082905555565b60006116a26114c9565b905060008060008060008060006116b88961158d565b965096509650965096509650965060006116db8984611b5390919063ffffffff16565b905060006116e9838b611b53565b90506116f88d8d8d8c8c611bd2565b611702838e611c76565b61170c848e611d78565b61171a878383888888611db6565b8b6001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161175f91815260200190565b60405180910390a350505050505050505050505050565b60006117806114c9565b905060008060008060008060006117968961158d565b965096509650965096509650965060006117b98984611b5390919063ffffffff16565b905060006117c7838b611b53565b90506116f88d8d888c8c611e1e565b60006117e06114c9565b905060008060008060008060006117f68961158d565b965096509650965096509650965060006118198984611b5390919063ffffffff16565b90506000611827838b611b53565b90506116f88d8d8b8b611ea6565b600061183f6114c9565b905060008060008060008060006118558961158d565b965096509650965096509650965060006118788984611b5390919063ffffffff16565b90506000611886838b611b53565b90506116f88d8d8d8c8a8d611f1a565b600b54600a546000918291825b600754811015611a20578260016000600784815481106118d357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061194c575081600260006007848154811061192557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561196257600b54600a54945094505050509091565b6119b6600160006007848154811061198a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611611565b9250611a0c60026000600784815481106119e057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611611565b915080611a18816122ed565b9150506118a3565b50600a54600b54611a30916114ec565b821015611a4757600b54600a549350935050509091565b90939092509050565b60008183611a715760405162461bcd60e51b815260040161051c919061210c565b5060006114c084866121ac565b6000808080611a9a6064611a9481818c8c611b53565b906114ec565b90506000611aaf6064611a9481818d8c611b53565b90506000611ac46064611a9481818e8c611b53565b929a91995091975095505050505050565b60006114c082611ae785818989611611565b90611611565b60008080611afb8685611b53565b90506000611b098686611b53565b919791965090945050505050565b600080611b248584611b53565b90506000611b328585611b53565b90506000611b4682611ae785818d8d611611565b9998505050505050505050565b600082611b6257506000610483565b6000611b6e83856122b7565b905082611b7b85836121ac565b1461067c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051c565b6001600160a01b038516600090815260026020526040902054611bf59084611611565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611c249083611611565b6001600160a01b038087166000908152600160205260408082209390935590861681522054611c53908261152e565b6001600160a01b0390941660009081526001602052604090209390935550505050565b6000611c806114c9565b90506000611c8e8483611b53565b905060006008600081548110611cb457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168083526001909152604090912054909150611ce6908361152e565b6001600160a01b038216600090815260016020908152604080832093909355600290522054611d15908661152e565b6001600160a01b0380831660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d699089815260200190565b60405180910390a35050505050565b6000611d826114c9565b90506000611d908483611b53565b905060006009600081548110611cb457634e487b7160e01b600052603260045260246000fd5b611dd384611ae787611ae78a600b5461161190919063ffffffff16565b600b55600c54611de3908461152e565b600c55600d54611df3908361152e565b600d55600e54611e03908261152e565b600e55600a54611e139083611611565b600a55505050505050565b6001600160a01b038516600090815260016020526040902054611e419083611611565b6001600160a01b03808716600090815260016020908152604080832094909455918716815260029091522054611e77908461152e565b6001600160a01b038516600090815260026020908152604080832093909355600190522054611c53908261152e565b6001600160a01b038416600090815260016020526040902054611ec99083611611565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611ef8908261152e565b6001600160a01b03909316600090815260016020526040902092909255505050565b6001600160a01b038616600090815260026020526040902054611f3d9085611611565b6001600160a01b038716600090815260026020908152604080832093909355600190522054611f6c9084611611565b6001600160a01b03808816600090815260016020908152604080832094909455918816815260029091522054611fa2908361152e565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611fd1908261152e565b6001600160a01b039095166000908152600160205260409020949094555050505050565b80356001600160a01b038116811461200c57600080fd5b919050565b600060208284031215612022578081fd5b61067c82611ff5565b6000806040838503121561203d578081fd5b61204683611ff5565b915061205460208401611ff5565b90509250929050565b600080600060608486031215612071578081fd5b61207a84611ff5565b925061208860208501611ff5565b9150604084013590509250925092565b600080604083850312156120aa578182fd5b6120b383611ff5565b946020939093013593505050565b6000602082840312156120d2578081fd5b5035919050565b600080604083850312156120eb578182fd5b8235915060208301358015158114612101578182fd5b809150509250929050565b6000602080835283518082850152825b818110156121385785810183015185820160400152820161211c565b818111156121495783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156121a7576121a7612308565b500190565b6000826121c757634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156122075781600019048211156121ed576121ed612308565b808516156121fa57918102915b93841c93908002906121d1565b509250929050565b600061067c838360008261222557506001610483565b8161223257506000610483565b816001811461224857600281146122525761226e565b6001915050610483565b60ff84111561226357612263612308565b50506001821b610483565b5060208310610133831016604e8410600b8410161715612291575081810a610483565b61229b83836121cc565b80600019048211156122af576122af612308565b029392505050565b60008160001904831182151516156122d1576122d1612308565b500290565b6000828210156122e8576122e8612308565b500390565b600060001982141561230157612301612308565b5060010190565b634e487b7160e01b600052601160045260246000fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122004014a333e6e2074ec259b66d4d22b15e70bea71dbbb773c24e98302a4c4da7264736f6c63430008040033