0x6080604052600436106102975760003560e01c80636b67c4df1161015a578063ad56c13c116100c1578063d0d41fe11161007a578063d0d41fe1146107f4578063dd62ed3e14610814578063e2f456051461085a578063e8845a9514610870578063f278430114610885578063f2fde38b146108a557600080fd5b8063ad56c13c146106ed578063ad740f8c14610737578063b62496f514610757578063bfb5c43a14610787578063c0246668146107b4578063c492f046146107d457600080fd5b806395d89b411161011357806395d89b411461062057806398982ccf146106355780639a7a23d61461066d578063a457c2d71461068d578063a8b9d240146106ad578063a9059cbb146106cd57600080fd5b80636b67c4df1461047c57806370a0823114610577578063715018a6146105ad57806388bdd9be146105c25780638da5cb5b146105e2578063906e9dd01461060057600080fd5b806339509351116101fe5780634ef901dc116101b75780634ef901dc146104be5780634fbee193146104de5780635ebf4db91461051757806365b8dbc0146105375780636827e7641461047c5780636843cd841461055757600080fd5b8063395093511461042857806349bd5a5e146104485780634be8f8b11461047c5780634ce994f81461047c5780634d33b1ef146104915780634e71d92d146104a957600080fd5b806323b872dd1161025057806323b872dd1461037f57806325b617031461039f5780632c1f5216146103b55780632f9c4569146103d557806330bb4cff146103f7578063313ce5671461040c57600080fd5b806306fdde03146102a3578063095ea7b3146102ce5780631694505e146102fe57806318160ddd146103365780631df4ccfc146103555780632014e5d61461036a57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86108c5565b6040516102c59190612b13565b60405180910390f35b3480156102da57600080fd5b506102ee6102e936600461293f565b610957565b60405190151581526020016102c5565b34801561030a57600080fd5b5060065461031e906001600160a01b031681565b6040516001600160a01b0390911681526020016102c5565b34801561034257600080fd5b506002545b6040519081526020016102c5565b34801561036157600080fd5b50610347606481565b34801561037657600080fd5b50610347604681565b34801561038b57600080fd5b506102ee61039a3660046128d2565b61096e565b3480156103ab57600080fd5b50610347600c5481565b3480156103c157600080fd5b5060075461031e906001600160a01b031681565b3480156103e157600080fd5b506103f56103f0366004612912565b6109d7565b005b34801561040357600080fd5b50610347610aca565b34801561041857600080fd5b50604051601281526020016102c5565b34801561043457600080fd5b506102ee61044336600461293f565b610b4c565b34801561045457600080fd5b5061031e7f00000000000000000000000002dff5bd909f3e49a69eebb7eed481c2c4df9ba381565b34801561048857600080fd5b50610347600a81565b34801561049d57600080fd5b50600c544210156102ee565b3480156104b557600080fd5b506103f5610b82565b3480156104ca57600080fd5b506103f56104d9366004612a45565b610c02565b3480156104ea57600080fd5b506102ee6104f9366004612862565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561052357600080fd5b506103f5610532366004612a45565b610cef565b34801561054357600080fd5b506103f5610552366004612862565b610d7b565b34801561056357600080fd5b50610347610572366004612862565b610e9c565b34801561058357600080fd5b50610347610592366004612862565b6001600160a01b031660009081526020819052604090205490565b3480156105b957600080fd5b506103f5610f1b565b3480156105ce57600080fd5b506103f56105dd366004612862565b610f8f565b3480156105ee57600080fd5b506005546001600160a01b031661031e565b34801561060c57600080fd5b506103f561061b366004612862565b6113ae565b34801561062c57600080fd5b506102b861143b565b34801561064157600080fd5b50610347610650366004612a75565b600f60209081526000928352604080842090915290825290205481565b34801561067957600080fd5b506103f5610688366004612912565b61144a565b34801561069957600080fd5b506102ee6106a836600461293f565b611541565b3480156106b957600080fd5b506103476106c8366004612862565b611590565b3480156106d957600080fd5b506102ee6106e836600461293f565b6115c3565b3480156106f957600080fd5b5061070d610708366004612862565b6115d0565b604080516001600160a01b03909516855260208501939093529183015260608201526080016102c5565b34801561074357600080fd5b506103f5610752366004612862565b611663565b34801561076357600080fd5b506102ee610772366004612862565b60116020526000908152604090205460ff1681565b34801561079357600080fd5b506103476107a2366004612a45565b60106020526000908152604090205481565b3480156107c057600080fd5b506103f56107cf366004612912565b6116af565b3480156107e057600080fd5b506103f56107ef3660046129a8565b6117c3565b34801561080057600080fd5b506103f561080f366004612862565b6118ad565b34801561082057600080fd5b5061034761082f36600461289a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561086657600080fd5b5061034760085481565b34801561087c57600080fd5b50610347601e81565b34801561089157600080fd5b506103f56108a0366004612a99565b611934565b3480156108b157600080fd5b506103f56108c0366004612862565b6119af565b6060600380546108d490612d01565b80601f016020809104026020016040519081016040528092919081815260200182805461090090612d01565b801561094d5780601f106109225761010080835404028352916020019161094d565b820191906000526020600020905b81548152906001019060200180831161093057829003601f168201915b5050505050905090565b6000610964338484611b00565b5060015b92915050565b600061097b848484611c25565b6109cd84336109c885604051806060016040528060288152602001612db7602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612115565b611b00565b5060019392505050565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b8152600401610a0190612ba9565b60405180910390fd5b6001600160a01b0382166000908152600e602052604090205460ff1615158115151415610a9f5760405162461bcd60e51b815260206004820152603760248201527f4150454e4f55543a205072652074726164696e6720697320616c72656164792060448201527f7468652076616c7565206f6620276578636c75646564270000000000000000006064820152608401610a01565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b600754604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015610b0f57600080fd5b505afa158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190612a5d565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109649185906109c89086611a9a565b60075460405163807ab4f760e01b81523360048201526001600160a01b039091169063807ab4f790602401602060405180830381600087803b158015610bc757600080fd5b505af1158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff9190612a29565b50565b6005546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610a0190612ba9565b42600c5411610c895760405162461bcd60e51b8152602060048201526024808201527f4150454e4f55543a2054726164696e672068617320616c7265616479207374616044820152631c9d195960e21b6064820152608401610a01565b428111610cea5760405162461bcd60e51b815260206004820152602960248201527f4150454e4f55543a2053746172742074696d65206d75737420626520696e207460448201526868652066757475726560b81b6064820152608401610a01565b600c55565b6005546001600160a01b03163314610d195760405162461bcd60e51b8152600401610a0190612ba9565b600754604051635ebf4db960e01b8152600481018390526001600160a01b0390911690635ebf4db9906024015b600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b5050505050565b6005546001600160a01b03163314610da55760405162461bcd60e51b8152600401610a0190612ba9565b6006546001600160a01b0382811691161415610e185760405162461bcd60e51b815260206004820152602c60248201527f4150454e4f55543a2054686520726f7574657220616c7265616479206861732060448201526b74686174206164647265737360a01b6064820152608401610a01565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600680546001600160a01b0319166001600160a01b0383811691821790925560075460405163031e79db60e41b81526004810192909252909116906331e79db090602401610d46565b6007546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b60206040518083038186803b158015610ee357600080fd5b505afa158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109689190612a5d565b6005546001600160a01b03163314610f455760405162461bcd60e51b8152600401610a0190612ba9565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610fb95760405162461bcd60e51b8152600401610a0190612ba9565b6007546001600160a01b03828116911614156110365760405162461bcd60e51b815260206004820152603660248201527f4150454e4f55543a20546865206469766964656e6420747261636b657220616c6044820152757265616479206861732074686174206164647265737360501b6064820152608401610a01565b6000819050306001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b6919061287e565b6001600160a01b0316146111485760405162461bcd60e51b815260206004820152604d60248201527f4150454e4f55543a20546865206e6577206469766964656e6420747261636b6560448201527f72206d757374206265206f776e656420627920746865204150454e4f5554207460648201526c1bdad95b8818dbdb9d1c9858dd609a1b608482015260a401610a01565b60405163031e79db60e41b81526001600160a01b03821660048201819052906331e79db090602401600060405180830381600087803b15801561118a57600080fd5b505af115801561119e573d6000803e3d6000fd5b505060405163031e79db60e41b81523060048201526001600160a01b03841692506331e79db09150602401600060405180830381600087803b1580156111e357600080fd5b505af11580156111f7573d6000803e3d6000fd5b50505050806001600160a01b03166331e79db061121c6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561125d57600080fd5b505af1158015611271573d6000803e3d6000fd5b505060065460405163031e79db60e41b81526001600160a01b03918216600482015290841692506331e79db09150602401600060405180830381600087803b1580156112bc57600080fd5b505af11580156112d0573d6000803e3d6000fd5b505060405163031e79db60e41b81526001600160a01b037f00000000000000000000000002dff5bd909f3e49a69eebb7eed481c2c4df9ba381166004830152841692506331e79db09150602401600060405180830381600087803b15801561133757600080fd5b505af115801561134b573d6000803e3d6000fd5b50506007546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600780546001600160a01b0319166001600160a01b039290921691909117905550565b600b546001600160a01b031633146114195760405162461bcd60e51b815260206004820152602860248201527f4150454e4f55543a2073656e646572206d757374206265206d61726b6574696e604482015267674164647265737360c01b6064820152608401610a01565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546108d490612d01565b6005546001600160a01b031633146114745760405162461bcd60e51b8152600401610a0190612ba9565b7f00000000000000000000000002dff5bd909f3e49a69eebb7eed481c2c4df9ba36001600160a01b0316826001600160a01b031614156115335760405162461bcd60e51b815260206004820152604e60248201527f4150454e4f55543a205468652050616e63616b6553776170207061697220636160448201527f6e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d6160648201526d726b65744d616b6572506169727360901b608482015260a401610a01565b61153d828261214f565b5050565b600061096433846109c885604051806060016040528060258152602001612ddf602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612115565b6007546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401610ecb565b6000610964338484611c25565b60075460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283928392169063fbcbc0f19060240160806040518083038186803b15801561161c57600080fd5b505afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611654919061296a565b93509350935093509193509193565b6005546001600160a01b0316331461168d5760405162461bcd60e51b8152600401610a0190612ba9565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116d95760405162461bcd60e51b8152600401610a0190612ba9565b6001600160a01b0382166000908152600d602052604090205460ff16151581151514156117645760405162461bcd60e51b815260206004820152603360248201527f4150454e4f55543a204163636f756e7420697320616c7265616479207468652060448201527276616c7565206f6620276578636c756465642760681b6064820152608401610a01565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146117ed5760405162461bcd60e51b8152600401610a0190612ba9565b60005b8281101561186c5781600d600086868581811061181d57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118329190612862565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061186481612d3c565b9150506117f0565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516118a093929190612aba565b60405180910390a1505050565b6009546001600160a01b031633146119125760405162461bcd60e51b815260206004820152602260248201527f4150454e4f55543a2073656e646572206d757374206265206465764164647265604482015261737360f01b6064820152608401610a01565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b30600090815260208190526040902054808311156119a05760405162461bcd60e51b815260206004820152602360248201527f4150454e4f55543a20496e73756666696369656e7420746f6b656e2062616c616044820152626e636560e81b6064820152608401610a01565b6119aa83836122b7565b505050565b6005546001600160a01b031633146119d95760405162461bcd60e51b8152600401610a0190612ba9565b6001600160a01b038116611a3e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a01565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611aa78385612c93565b905083811015611af95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a01565b9392505050565b6001600160a01b038316611b625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a01565b6001600160a01b038216611bc35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a01565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611c4b5760405162461bcd60e51b8152600401610a0190612bde565b6001600160a01b038216611c715760405162461bcd60e51b8152600401610a0190612b66565b6000611c7f600c5442101590565b6001600160a01b0380861660009081526011602052604080822054928716825290205491925060ff908116911682611d49576001600160a01b0386166000908152600e602052604090205460ff16611d495760405162461bcd60e51b815260206004820152604160248201527f4150454e4f55543a2054686973206163636f756e742063616e6e6f742073656e60448201527f6420746f6b656e7320756e74696c2074726164696e6720697320656e61626c656064820152601960fa1b608482015260a401610a01565b83611d6257611d5a86866000612463565b505050505050565b6001600160a01b0386166000908152600d602052604090205460ff16158015611da457506001600160a01b03861660009081526011602052604090205460ff16155b15611ebd576000611db361256c565b90506000611dcf6001611dc942620151806125ac565b90611a9a565b6000818152600f602090815260408083206001600160a01b038d1684529091529020549091508290611e019088611a9a565b1115611e6a5760405162461bcd60e51b815260206004820152603260248201527f4150454e4f55543a2054686973206163636f756e7420686173206578636565646044820152711959081b585e0819185a5b1e481b1a5b5a5d60721b6064820152608401610a01565b6000818152600f602090815260408083206001600160a01b038c168452909152902054611e979087611a9a565b6000918252600f602090815260408084206001600160a01b038c16855290915290912055505b30600090815260208190526040902054600854811015848015611edd5750805b8015611ef35750600654600160a01b900460ff16155b8015611efc5750825b15611f2d576006805460ff60a01b1916600160a01b179055611f1f8260006122b7565b6006805460ff60a01b191690555b60008380611f385750845b8015611f4e5750600654600160a01b900460ff16155b8015611f7357506001600160a01b0389166000908152600d602052604090205460ff16155b8015611f9857506001600160a01b0388166000908152600d602052604090205460ff16155b90508015611fed57600085611fc257611fbd6064611fb78a601e6125ee565b906125ac565b611fd2565b611fd26064611fb78a600a6125ee565b9050611fde888261266d565b9750611feb8a3083612463565b505b611ff8898989612463565b6007546001600160a01b031663e30443bc8a612029816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561206f57600080fd5b505af1925050508015612080575060015b506007546001600160a01b031663e30443bc896120b2816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156120f857600080fd5b505af1925050508015612109575060015b50505050505050505050565b600081848411156121395760405162461bcd60e51b8152600401610a019190612b13565b5060006121468486612cea565b95945050505050565b6001600160a01b03821660009081526011602052604090205460ff16151581151514156121ee5760405162461bcd60e51b815260206004820152604160248201527f4150454e4f55543a204175746f6d61746564206d61726b6574206d616b65722060448201527f7061697220697320616c72656164792073657420746f20746861742076616c756064820152606560f81b608482015260a401610a01565b6001600160a01b0382166000908152601160205260409020805460ff1916821580159190911790915561227b5760075460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b15801561226257600080fd5b505af1158015612276573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6122c182826126af565b4760006122d46064611fb78460466125ee565b905060006122e86064611fb785600a6125ee565b905060006122fc6064611fb786600a6125ee565b90506000612316826123108581898961266d565b9061266d565b6007546040519192506001600160a01b0316908590600081818185875af1925050503d8060008114612364576040519150601f19603f3d011682016040523d82523d6000602084013e612369565b606091505b5050600a546040516001600160a01b0390911691508490600081818185875af1925050503d80600081146123b9576040519150601f19603f3d011682016040523d82523d6000602084013e6123be565b606091505b50506009546040516001600160a01b0390911691508390600081818185875af1925050503d806000811461240e576040519150601f19603f3d011682016040523d82523d6000602084013e612413565b606091505b5050600b546040516001600160a01b0390911691508290600081818185875af1925050503d8060008114612109576040519150601f19603f3d011682016040523d82523d6000602084013e612109565b6001600160a01b0383166124895760405162461bcd60e51b8152600401610a0190612bde565b6001600160a01b0382166124af5760405162461bcd60e51b8152600401610a0190612b66565b6124ec81604051806060016040528060268152602001612d91602691396001600160a01b0386166000908152602081905260409020549190612115565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461251b9082611a9a565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c18565b60008061258b62015180611fb7600c544261266d90919063ffffffff16565b60008181526010602052604090205490915080610968576002549250505090565b6000611af983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612834565b6000826125fd57506000610968565b60006126098385612ccb565b9050826126168583612cab565b14611af95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a01565b6000611af983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612115565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126f257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e919061287e565b8160018151811061279f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526006546127c59130911685611b00565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906127fd9086908690869030904290600401612c23565b600060405180830381600087803b15801561281757600080fd5b505af115801561282b573d6000803e3d6000fd5b50505050505050565b600081836128555760405162461bcd60e51b8152600401610a019190612b13565b5060006121468486612cab565b600060208284031215612873578081fd5b8135611af981612d6d565b60006020828403121561288f578081fd5b8151611af981612d6d565b600080604083850312156128ac578081fd5b82356128b781612d6d565b915060208301356128c781612d6d565b809150509250929050565b6000806000606084860312156128e6578081fd5b83356128f181612d6d565b9250602084013561290181612d6d565b929592945050506040919091013590565b60008060408385031215612924578182fd5b823561292f81612d6d565b915060208301356128c781612d82565b60008060408385031215612951578182fd5b823561295c81612d6d565b946020939093013593505050565b6000806000806080858703121561297f578081fd5b845161298a81612d6d565b60208601516040870151606090970151919890975090945092505050565b6000806000604084860312156129bc578283fd5b833567ffffffffffffffff808211156129d3578485fd5b818601915086601f8301126129e6578485fd5b8135818111156129f4578586fd5b8760208260051b8501011115612a08578586fd5b60209283019550935050840135612a1e81612d82565b809150509250925092565b600060208284031215612a3a578081fd5b8151611af981612d82565b600060208284031215612a56578081fd5b5035919050565b600060208284031215612a6e578081fd5b5051919050565b60008060408385031215612a87578182fd5b8235915060208301356128c781612d6d565b60008060408385031215612aab578182fd5b50508035926020909101359150565b6040808252810183905260008460608301825b86811015612afd578235612ae081612d6d565b6001600160a01b0316825260209283019290910190600101612acd565b5080925050508215156020830152949350505050565b6000602080835283518082850152825b81811015612b3f57858101830151858201604001528201612b23565b81811115612b505783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612c725784516001600160a01b031683529383019391830191600101612c4d565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ca657612ca6612d57565b500190565b600082612cc657634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612ce557612ce5612d57565b500290565b600082821015612cfc57612cfc612d57565b500390565b600181811c90821680612d1557607f821691505b60208210811415612d3657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d5057612d50612d57565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610bff57600080fd5b8015158114610bff57600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f5c42aee05c37116bc8398545115f9e19cec99b60827bbea021ae58b0b82d65864736f6c63430008040033
0x60a0604052692a5a058fc295ed000000600855600980546001600160a01b03199081167382b6c2499d2b5170de86af1492d8e8f5026e4ae517909155600a80548216733ba091bdd1d500b37f43bea198976eecd0ef02a0179055600b805490911673f548b5ea73a7d5fbb9c4fb6be6040f790e4b6e621790556362ce4432600c553480156200008d57600080fd5b506040805180820182526007808252661054115393d55560ca1b602080840182815285518087019096529285528401528151919291620000d09160039162000ae8565b508051620000e690600490602084019062000ae8565b5050506000620000fb620007fe60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350604051620001579062000b77565b604051809103906000f08015801562000174573d6000803e3d6000fd5b50600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001f057600080fd5b505afa15801562000205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022b919062000b9c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027457600080fd5b505afa15801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af919062000b9c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f857600080fd5b505af11580156200030d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000333919062000b9c565b600680546001600160a01b0319166001600160a01b038516179055606081901b6001600160601b03191660805290506200036f81600162000802565b60075460405163031e79db60e41b81526001600160a01b0390911660048201819052906331e79db090602401600060405180830381600087803b158015620003b657600080fd5b505af1158015620003cb573d6000803e3d6000fd5b505060075460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b1580156200041557600080fd5b505af11580156200042a573d6000803e3d6000fd5b50506007546001600160a01b031691506331e79db09050620004546005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200049657600080fd5b505af1158015620004ab573d6000803e3d6000fd5b505060075460405163031e79db60e41b81526001600160a01b03868116600483015290911692506331e79db09150602401600060405180830381600087803b158015620004f757600080fd5b505af11580156200050c573d6000803e3d6000fd5b505050506001600e6000620005266200097360201b60201c565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600d92839052908120805490931660019081179093556200057e6005546001600160a01b031690565b6001600160a01b031681526020808201929092526040016000908120805460ff1916931515939093179092556010905269152d02c7e14af68000007f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb018190557f8c6065603763fec3f5742441d3833f3f43b982453612d76adb39a885e3006b5f556954b40b1f852bda0000007f853b2fefe141400fef543280f93d98bd49996069f632d0d20236afeeed8e46a2556969e10de76676d08000007fb3edd0d534d647cffdae9f1294f11ad21f3fcf2814bea44c92bbb8d384a57d9e5569d3c21bcecceda10000007f1588ac671d87f82adc0e6ae8ab009c0de98f92a20243897597e566bc59b9c126556a013da329b63364718000007f61a7346ab5ebdac457db2a901eaf1b805239b6049a1b2f34bab85e2e274f39cb556a01a784379d99db420000007f20edfb71820f6f00f6a84ccfefb91587cd9f849f8349b0a3182a4795899d9cd9556a02116545850052128000007f4ef6145e44e4298293af15ae5f84f922a836b1d6db608fd5008f32a528b312a9556a027b46536c66c8e30000007f5f04e77c60ed37290f5789e2e9c5d396103f3c4b14614065cbb4c8362609d5a5556a02e5276153cd3fb38000007fa8197f9f3066d467dba941614f445cf878e0beb059ed920f6258667ed2470eb8556a034f086f3b33b6840000007fbbe6df1631c6a5c37158096bc15825d83d22eaca9ac1e829be6dfcdebed1d2d755600b90526a069e10de76676d080000007f222281f8a778a50c678b18290b6f1f76b73341460456cd404319acd135fca47755620007f6620007e36005546001600160a01b031690565b6b033b2e3c9fd0803ce800000062000982565b505062000c27565b3390565b6001600160a01b03821660009081526011602052604090205460ff1615158115151415620008a75760405162461bcd60e51b815260206004820152604160248201527f4150454e4f55543a204175746f6d61746564206d61726b6574206d616b65722060448201527f7061697220697320616c72656164792073657420746f20746861742076616c756064820152606560f81b608482015260a4015b60405180910390fd5b6001600160a01b0382166000908152601160205260409020805460ff19168215801591909117909155620009375760075460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b1580156200091d57600080fd5b505af115801562000932573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031690565b6001600160a01b038216620009da5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200089e565b620009f68160025462000a7e60201b62001a9a1790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000a2991839062001a9a62000a7e821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008062000a8d838562000bc5565b90508381101562000ae15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200089e565b9392505050565b82805462000af69062000bea565b90600052602060002090601f01602090048101928262000b1a576000855562000b65565b82601f1062000b3557805160ff191683800117855562000b65565b8280016001018555821562000b65579182015b8281111562000b6557825182559160200191906001019062000b48565b5062000b7392915062000b85565b5090565b610ffa8062003a8d83390190565b5b8082111562000b73576000815560010162000b86565b60006020828403121562000bae578081fd5b81516001600160a01b038116811462000ae1578182fd5b6000821982111562000be557634e487b7160e01b81526011600452602481fd5b500190565b600181811c9082168062000bff57607f821691505b6020821081141562000c2157634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c612e3962000c546000396000818161045a015281816112e901526114760152612e396000f3fe6080604052600436106102975760003560e01c80636b67c4df1161015a578063ad56c13c116100c1578063d0d41fe11161007a578063d0d41fe1146107f4578063dd62ed3e14610814578063e2f456051461085a578063e8845a9514610870578063f278430114610885578063f2fde38b146108a557600080fd5b8063ad56c13c146106ed578063ad740f8c14610737578063b62496f514610757578063bfb5c43a14610787578063c0246668146107b4578063c492f046146107d457600080fd5b806395d89b411161011357806395d89b411461062057806398982ccf146106355780639a7a23d61461066d578063a457c2d71461068d578063a8b9d240146106ad578063a9059cbb146106cd57600080fd5b80636b67c4df1461047c57806370a0823114610577578063715018a6146105ad57806388bdd9be146105c25780638da5cb5b146105e2578063906e9dd01461060057600080fd5b806339509351116101fe5780634ef901dc116101b75780634ef901dc146104be5780634fbee193146104de5780635ebf4db91461051757806365b8dbc0146105375780636827e7641461047c5780636843cd841461055757600080fd5b8063395093511461042857806349bd5a5e146104485780634be8f8b11461047c5780634ce994f81461047c5780634d33b1ef146104915780634e71d92d146104a957600080fd5b806323b872dd1161025057806323b872dd1461037f57806325b617031461039f5780632c1f5216146103b55780632f9c4569146103d557806330bb4cff146103f7578063313ce5671461040c57600080fd5b806306fdde03146102a3578063095ea7b3146102ce5780631694505e146102fe57806318160ddd146103365780631df4ccfc146103555780632014e5d61461036a57600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86108c5565b6040516102c59190612b13565b60405180910390f35b3480156102da57600080fd5b506102ee6102e936600461293f565b610957565b60405190151581526020016102c5565b34801561030a57600080fd5b5060065461031e906001600160a01b031681565b6040516001600160a01b0390911681526020016102c5565b34801561034257600080fd5b506002545b6040519081526020016102c5565b34801561036157600080fd5b50610347606481565b34801561037657600080fd5b50610347604681565b34801561038b57600080fd5b506102ee61039a3660046128d2565b61096e565b3480156103ab57600080fd5b50610347600c5481565b3480156103c157600080fd5b5060075461031e906001600160a01b031681565b3480156103e157600080fd5b506103f56103f0366004612912565b6109d7565b005b34801561040357600080fd5b50610347610aca565b34801561041857600080fd5b50604051601281526020016102c5565b34801561043457600080fd5b506102ee61044336600461293f565b610b4c565b34801561045457600080fd5b5061031e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048857600080fd5b50610347600a81565b34801561049d57600080fd5b50600c544210156102ee565b3480156104b557600080fd5b506103f5610b82565b3480156104ca57600080fd5b506103f56104d9366004612a45565b610c02565b3480156104ea57600080fd5b506102ee6104f9366004612862565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561052357600080fd5b506103f5610532366004612a45565b610cef565b34801561054357600080fd5b506103f5610552366004612862565b610d7b565b34801561056357600080fd5b50610347610572366004612862565b610e9c565b34801561058357600080fd5b50610347610592366004612862565b6001600160a01b031660009081526020819052604090205490565b3480156105b957600080fd5b506103f5610f1b565b3480156105ce57600080fd5b506103f56105dd366004612862565b610f8f565b3480156105ee57600080fd5b506005546001600160a01b031661031e565b34801561060c57600080fd5b506103f561061b366004612862565b6113ae565b34801561062c57600080fd5b506102b861143b565b34801561064157600080fd5b50610347610650366004612a75565b600f60209081526000928352604080842090915290825290205481565b34801561067957600080fd5b506103f5610688366004612912565b61144a565b34801561069957600080fd5b506102ee6106a836600461293f565b611541565b3480156106b957600080fd5b506103476106c8366004612862565b611590565b3480156106d957600080fd5b506102ee6106e836600461293f565b6115c3565b3480156106f957600080fd5b5061070d610708366004612862565b6115d0565b604080516001600160a01b03909516855260208501939093529183015260608201526080016102c5565b34801561074357600080fd5b506103f5610752366004612862565b611663565b34801561076357600080fd5b506102ee610772366004612862565b60116020526000908152604090205460ff1681565b34801561079357600080fd5b506103476107a2366004612a45565b60106020526000908152604090205481565b3480156107c057600080fd5b506103f56107cf366004612912565b6116af565b3480156107e057600080fd5b506103f56107ef3660046129a8565b6117c3565b34801561080057600080fd5b506103f561080f366004612862565b6118ad565b34801561082057600080fd5b5061034761082f36600461289a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561086657600080fd5b5061034760085481565b34801561087c57600080fd5b50610347601e81565b34801561089157600080fd5b506103f56108a0366004612a99565b611934565b3480156108b157600080fd5b506103f56108c0366004612862565b6119af565b6060600380546108d490612d01565b80601f016020809104026020016040519081016040528092919081815260200182805461090090612d01565b801561094d5780601f106109225761010080835404028352916020019161094d565b820191906000526020600020905b81548152906001019060200180831161093057829003601f168201915b5050505050905090565b6000610964338484611b00565b5060015b92915050565b600061097b848484611c25565b6109cd84336109c885604051806060016040528060288152602001612db7602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612115565b611b00565b5060019392505050565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b8152600401610a0190612ba9565b60405180910390fd5b6001600160a01b0382166000908152600e602052604090205460ff1615158115151415610a9f5760405162461bcd60e51b815260206004820152603760248201527f4150454e4f55543a205072652074726164696e6720697320616c72656164792060448201527f7468652076616c7565206f6620276578636c75646564270000000000000000006064820152608401610a01565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b600754604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015610b0f57600080fd5b505afa158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190612a5d565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109649185906109c89086611a9a565b60075460405163807ab4f760e01b81523360048201526001600160a01b039091169063807ab4f790602401602060405180830381600087803b158015610bc757600080fd5b505af1158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff9190612a29565b50565b6005546001600160a01b03163314610c2c5760405162461bcd60e51b8152600401610a0190612ba9565b42600c5411610c895760405162461bcd60e51b8152602060048201526024808201527f4150454e4f55543a2054726164696e672068617320616c7265616479207374616044820152631c9d195960e21b6064820152608401610a01565b428111610cea5760405162461bcd60e51b815260206004820152602960248201527f4150454e4f55543a2053746172742074696d65206d75737420626520696e207460448201526868652066757475726560b81b6064820152608401610a01565b600c55565b6005546001600160a01b03163314610d195760405162461bcd60e51b8152600401610a0190612ba9565b600754604051635ebf4db960e01b8152600481018390526001600160a01b0390911690635ebf4db9906024015b600060405180830381600087803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b5050505050565b6005546001600160a01b03163314610da55760405162461bcd60e51b8152600401610a0190612ba9565b6006546001600160a01b0382811691161415610e185760405162461bcd60e51b815260206004820152602c60248201527f4150454e4f55543a2054686520726f7574657220616c7265616479206861732060448201526b74686174206164647265737360a01b6064820152608401610a01565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600680546001600160a01b0319166001600160a01b0383811691821790925560075460405163031e79db60e41b81526004810192909252909116906331e79db090602401610d46565b6007546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b60206040518083038186803b158015610ee357600080fd5b505afa158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109689190612a5d565b6005546001600160a01b03163314610f455760405162461bcd60e51b8152600401610a0190612ba9565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610fb95760405162461bcd60e51b8152600401610a0190612ba9565b6007546001600160a01b03828116911614156110365760405162461bcd60e51b815260206004820152603660248201527f4150454e4f55543a20546865206469766964656e6420747261636b657220616c6044820152757265616479206861732074686174206164647265737360501b6064820152608401610a01565b6000819050306001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b6919061287e565b6001600160a01b0316146111485760405162461bcd60e51b815260206004820152604d60248201527f4150454e4f55543a20546865206e6577206469766964656e6420747261636b6560448201527f72206d757374206265206f776e656420627920746865204150454e4f5554207460648201526c1bdad95b8818dbdb9d1c9858dd609a1b608482015260a401610a01565b60405163031e79db60e41b81526001600160a01b03821660048201819052906331e79db090602401600060405180830381600087803b15801561118a57600080fd5b505af115801561119e573d6000803e3d6000fd5b505060405163031e79db60e41b81523060048201526001600160a01b03841692506331e79db09150602401600060405180830381600087803b1580156111e357600080fd5b505af11580156111f7573d6000803e3d6000fd5b50505050806001600160a01b03166331e79db061121c6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561125d57600080fd5b505af1158015611271573d6000803e3d6000fd5b505060065460405163031e79db60e41b81526001600160a01b03918216600482015290841692506331e79db09150602401600060405180830381600087803b1580156112bc57600080fd5b505af11580156112d0573d6000803e3d6000fd5b505060405163031e79db60e41b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152841692506331e79db09150602401600060405180830381600087803b15801561133757600080fd5b505af115801561134b573d6000803e3d6000fd5b50506007546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600780546001600160a01b0319166001600160a01b039290921691909117905550565b600b546001600160a01b031633146114195760405162461bcd60e51b815260206004820152602860248201527f4150454e4f55543a2073656e646572206d757374206265206d61726b6574696e604482015267674164647265737360c01b6064820152608401610a01565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546108d490612d01565b6005546001600160a01b031633146114745760405162461bcd60e51b8152600401610a0190612ba9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156115335760405162461bcd60e51b815260206004820152604e60248201527f4150454e4f55543a205468652050616e63616b6553776170207061697220636160448201527f6e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d6160648201526d726b65744d616b6572506169727360901b608482015260a401610a01565b61153d828261214f565b5050565b600061096433846109c885604051806060016040528060258152602001612ddf602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612115565b6007546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401610ecb565b6000610964338484611c25565b60075460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283928392169063fbcbc0f19060240160806040518083038186803b15801561161c57600080fd5b505afa158015611630573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611654919061296a565b93509350935093509193509193565b6005546001600160a01b0316331461168d5760405162461bcd60e51b8152600401610a0190612ba9565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116d95760405162461bcd60e51b8152600401610a0190612ba9565b6001600160a01b0382166000908152600d602052604090205460ff16151581151514156117645760405162461bcd60e51b815260206004820152603360248201527f4150454e4f55543a204163636f756e7420697320616c7265616479207468652060448201527276616c7565206f6620276578636c756465642760681b6064820152608401610a01565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146117ed5760405162461bcd60e51b8152600401610a0190612ba9565b60005b8281101561186c5781600d600086868581811061181d57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118329190612862565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061186481612d3c565b9150506117f0565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516118a093929190612aba565b60405180910390a1505050565b6009546001600160a01b031633146119125760405162461bcd60e51b815260206004820152602260248201527f4150454e4f55543a2073656e646572206d757374206265206465764164647265604482015261737360f01b6064820152608401610a01565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b30600090815260208190526040902054808311156119a05760405162461bcd60e51b815260206004820152602360248201527f4150454e4f55543a20496e73756666696369656e7420746f6b656e2062616c616044820152626e636560e81b6064820152608401610a01565b6119aa83836122b7565b505050565b6005546001600160a01b031633146119d95760405162461bcd60e51b8152600401610a0190612ba9565b6001600160a01b038116611a3e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a01565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611aa78385612c93565b905083811015611af95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a01565b9392505050565b6001600160a01b038316611b625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a01565b6001600160a01b038216611bc35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a01565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611c4b5760405162461bcd60e51b8152600401610a0190612bde565b6001600160a01b038216611c715760405162461bcd60e51b8152600401610a0190612b66565b6000611c7f600c5442101590565b6001600160a01b0380861660009081526011602052604080822054928716825290205491925060ff908116911682611d49576001600160a01b0386166000908152600e602052604090205460ff16611d495760405162461bcd60e51b815260206004820152604160248201527f4150454e4f55543a2054686973206163636f756e742063616e6e6f742073656e60448201527f6420746f6b656e7320756e74696c2074726164696e6720697320656e61626c656064820152601960fa1b608482015260a401610a01565b83611d6257611d5a86866000612463565b505050505050565b6001600160a01b0386166000908152600d602052604090205460ff16158015611da457506001600160a01b03861660009081526011602052604090205460ff16155b15611ebd576000611db361256c565b90506000611dcf6001611dc942620151806125ac565b90611a9a565b6000818152600f602090815260408083206001600160a01b038d1684529091529020549091508290611e019088611a9a565b1115611e6a5760405162461bcd60e51b815260206004820152603260248201527f4150454e4f55543a2054686973206163636f756e7420686173206578636565646044820152711959081b585e0819185a5b1e481b1a5b5a5d60721b6064820152608401610a01565b6000818152600f602090815260408083206001600160a01b038c168452909152902054611e979087611a9a565b6000918252600f602090815260408084206001600160a01b038c16855290915290912055505b30600090815260208190526040902054600854811015848015611edd5750805b8015611ef35750600654600160a01b900460ff16155b8015611efc5750825b15611f2d576006805460ff60a01b1916600160a01b179055611f1f8260006122b7565b6006805460ff60a01b191690555b60008380611f385750845b8015611f4e5750600654600160a01b900460ff16155b8015611f7357506001600160a01b0389166000908152600d602052604090205460ff16155b8015611f9857506001600160a01b0388166000908152600d602052604090205460ff16155b90508015611fed57600085611fc257611fbd6064611fb78a601e6125ee565b906125ac565b611fd2565b611fd26064611fb78a600a6125ee565b9050611fde888261266d565b9750611feb8a3083612463565b505b611ff8898989612463565b6007546001600160a01b031663e30443bc8a612029816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561206f57600080fd5b505af1925050508015612080575060015b506007546001600160a01b031663e30443bc896120b2816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156120f857600080fd5b505af1925050508015612109575060015b50505050505050505050565b600081848411156121395760405162461bcd60e51b8152600401610a019190612b13565b5060006121468486612cea565b95945050505050565b6001600160a01b03821660009081526011602052604090205460ff16151581151514156121ee5760405162461bcd60e51b815260206004820152604160248201527f4150454e4f55543a204175746f6d61746564206d61726b6574206d616b65722060448201527f7061697220697320616c72656164792073657420746f20746861742076616c756064820152606560f81b608482015260a401610a01565b6001600160a01b0382166000908152601160205260409020805460ff1916821580159190911790915561227b5760075460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b15801561226257600080fd5b505af1158015612276573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6122c182826126af565b4760006122d46064611fb78460466125ee565b905060006122e86064611fb785600a6125ee565b905060006122fc6064611fb786600a6125ee565b90506000612316826123108581898961266d565b9061266d565b6007546040519192506001600160a01b0316908590600081818185875af1925050503d8060008114612364576040519150601f19603f3d011682016040523d82523d6000602084013e612369565b606091505b5050600a546040516001600160a01b0390911691508490600081818185875af1925050503d80600081146123b9576040519150601f19603f3d011682016040523d82523d6000602084013e6123be565b606091505b50506009546040516001600160a01b0390911691508390600081818185875af1925050503d806000811461240e576040519150601f19603f3d011682016040523d82523d6000602084013e612413565b606091505b5050600b546040516001600160a01b0390911691508290600081818185875af1925050503d8060008114612109576040519150601f19603f3d011682016040523d82523d6000602084013e612109565b6001600160a01b0383166124895760405162461bcd60e51b8152600401610a0190612bde565b6001600160a01b0382166124af5760405162461bcd60e51b8152600401610a0190612b66565b6124ec81604051806060016040528060268152602001612d91602691396001600160a01b0386166000908152602081905260409020549190612115565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461251b9082611a9a565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c18565b60008061258b62015180611fb7600c544261266d90919063ffffffff16565b60008181526010602052604090205490915080610968576002549250505090565b6000611af983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612834565b6000826125fd57506000610968565b60006126098385612ccb565b9050826126168583612cab565b14611af95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a01565b6000611af983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612115565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126f257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e919061287e565b8160018151811061279f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526006546127c59130911685611b00565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906127fd9086908690869030904290600401612c23565b600060405180830381600087803b15801561281757600080fd5b505af115801561282b573d6000803e3d6000fd5b50505050505050565b600081836128555760405162461bcd60e51b8152600401610a019190612b13565b5060006121468486612cab565b600060208284031215612873578081fd5b8135611af981612d6d565b60006020828403121561288f578081fd5b8151611af981612d6d565b600080604083850312156128ac578081fd5b82356128b781612d6d565b915060208301356128c781612d6d565b809150509250929050565b6000806000606084860312156128e6578081fd5b83356128f181612d6d565b9250602084013561290181612d6d565b929592945050506040919091013590565b60008060408385031215612924578182fd5b823561292f81612d6d565b915060208301356128c781612d82565b60008060408385031215612951578182fd5b823561295c81612d6d565b946020939093013593505050565b6000806000806080858703121561297f578081fd5b845161298a81612d6d565b60208601516040870151606090970151919890975090945092505050565b6000806000604084860312156129bc578283fd5b833567ffffffffffffffff808211156129d3578485fd5b818601915086601f8301126129e6578485fd5b8135818111156129f4578586fd5b8760208260051b8501011115612a08578586fd5b60209283019550935050840135612a1e81612d82565b809150509250925092565b600060208284031215612a3a578081fd5b8151611af981612d82565b600060208284031215612a56578081fd5b5035919050565b600060208284031215612a6e578081fd5b5051919050565b60008060408385031215612a87578182fd5b8235915060208301356128c781612d6d565b60008060408385031215612aab578182fd5b50508035926020909101359150565b6040808252810183905260008460608301825b86811015612afd578235612ae081612d6d565b6001600160a01b0316825260209283019290910190600101612acd565b5080925050508215156020830152949350505050565b6000602080835283518082850152825b81811015612b3f57858101830151858201604001528201612b23565b81811115612b505783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612c725784516001600160a01b031683529383019391830191600101612c4d565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ca657612ca6612d57565b500190565b600082612cc657634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612ce557612ce5612d57565b500290565b600082821015612cfc57612cfc612d57565b500390565b600181811c90821680612d1557607f821691505b60208210811415612d3657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d5057612d50612d57565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610bff57600080fd5b8015158114610bff57600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f5c42aee05c37116bc8398545115f9e19cec99b60827bbea021ae58b0b82d65864736f6c63430008040033608060405234801561001057600080fd5b50600680546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35069021e19e0c9bab2400000600955610f89806100716000396000f3fe6080604052600436106101185760003560e01c8063807ab4f7116100a0578063aafd847a11610064578063aafd847a146102fb578063be10b61414610331578063e30443bc14610347578063f2fde38b14610367578063fbcbc0f11461038757600080fd5b8063807ab4f71461025d57806385a6b3ae1461027d5780638da5cb5b1461029357806391b89fba146102bb578063a8b9d240146102db57600080fd5b80634e7b827f116100e75780634e7b827f1461019d5780635ebf4db9146101dd5780636a474002146101fd57806370a0823114610212578063715018a61461024857600080fd5b806303c833021461012c57806327ce0147146101345780633009a6091461016757806331e79db01461017d57600080fd5b36610127576101256103d1565b005b600080fd5b6101256103d1565b34801561014057600080fd5b5061015461014f366004610d31565b610459565b6040519081526020015b60405180910390f35b34801561017357600080fd5b5061015460075481565b34801561018957600080fd5b50610125610198366004610d31565b6104bb565b3480156101a957600080fd5b506101cd6101b8366004610d31565b60086020526000908152604090205460ff1681565b604051901515815260200161015e565b3480156101e957600080fd5b506101256101f8366004610d78565b610579565b34801561020957600080fd5b506101256105a8565b34801561021e57600080fd5b5061015461022d366004610d31565b6001600160a01b031660009081526001602052604090205490565b34801561025457600080fd5b506101256105b4565b34801561026957600080fd5b506101cd610278366004610d31565b610628565b34801561028957600080fd5b5061015460055481565b34801561029f57600080fd5b506006546040516001600160a01b03909116815260200161015e565b3480156102c757600080fd5b506101546102d6366004610d31565b61067a565b3480156102e757600080fd5b506101546102f6366004610d31565b610681565b34801561030757600080fd5b50610154610316366004610d31565b6001600160a01b031660009081526004602052604090205490565b34801561033d57600080fd5b5061015460095481565b34801561035357600080fd5b50610125610362366004610d4d565b6106ad565b34801561037357600080fd5b50610125610382366004610d31565b61072d565b34801561039357600080fd5b506103a76103a2366004610d31565b610818565b604080516001600160a01b039095168552602085019390935291830152606082015260800161015e565b6000600254116103e057600080fd5b34156104575760025461040e906103fb34600160801b61085b565b6104059190610e71565b600054906108e1565b60005560405134815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a260055461045390346108e1565b6005555b565b6001600160a01b03811660009081526003602090815260408083205460019092528220548254600160801b926104ab926104a6926104a09161049b919061085b565b610940565b90610950565b61098e565b6104b59190610e71565b92915050565b6006546001600160a01b031633146104ee5760405162461bcd60e51b81526004016104e590610de3565b60405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff161561051457600080fd5b6001600160a01b0381166000908152600860205260408120805460ff191660011790556105429082906109a1565b6040516001600160a01b038216907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a250565b6006546001600160a01b031633146105a35760405162461bcd60e51b81526004016104e590610de3565b600955565b6105b133610a00565b50565b6006546001600160a01b031633146105de5760405162461bcd60e51b81526004016104e590610de3565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546000906001600160a01b031633146106555760405162461bcd60e51b81526004016104e590610de3565b600061066083610a00565b905080156106715750600192915050565b50600092915050565b60006104b5825b6001600160a01b0381166000908152600460205260408120546104b5906106a784610459565b90610b3d565b6006546001600160a01b031633146106d75760405162461bcd60e51b81526004016104e590610de3565b6001600160a01b03821660009081526008602052604090205460ff16156106fc575050565b60095481106107145761070f82826109a1565b61071f565b61071f8260006109a1565b61072882610628565b505050565b6006546001600160a01b031633146107575760405162461bcd60e51b81526004016104e590610de3565b6001600160a01b0381166107bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e5565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b806000808061082684610681565b925061083184610459565b9150610852846001600160a01b031660009081526004602052604090205490565b90509193509193565b60008261086a575060006104b5565b60006108768385610e91565b9050826108838583610e71565b146108da5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104e5565b9392505050565b6000806108ee8385610e59565b9050838110156108da5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104e5565b600081818112156104b557600080fd5b60008061095d8385610e18565b9050600083121580156109705750838112155b80610985575060008312801561098557508381125b6108da57600080fd5b60008082121561099d57600080fd5b5090565b6001600160a01b038216600090815260016020526040902054808211156109e05760006109ce8383610b3d565b90506109da8482610b7f565b50505050565b808210156107285760006109f48284610b3d565b90506109da8482610c20565b600080610a0c83610681565b90508015610671576001600160a01b038316600090815260046020526040902054610a3790826108e1565b6001600160a01b038416600081815260046020526040908190209290925590517fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d90610a869084815260200190565b60405180910390a26000836001600160a01b031682610bb890604051600060405180830381858888f193505050503d8060008114610ae0576040519150601f19603f3d011682016040523d82523d6000602084013e610ae5565b606091505b5050905080610b36576001600160a01b038416600090815260046020526040902054610b119083610b3d565b6001600160a01b03909416600090815260046020526040812094909455509192915050565b5092915050565b60006108da83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cba565b600254610b8c90826108e1565b6002556001600160a01b038216600090815260016020526040902054610bb290826108e1565b6001600160a01b03831660009081526001602052604081209190915554610c0090610be19061049b908461085b565b6001600160a01b03841660009081526003602052604090205490610cf4565b6001600160a01b0390921660009081526003602052604090209190915550565b610c5d81604051806060016040528060228152602001610f32602291396001600160a01b0385166000908152600160205260409020549190610cba565b6001600160a01b038316600090815260016020526040902055600254610c839082610b3d565b600255600054610c0090610c9b9061049b908461085b565b6001600160a01b03841660009081526003602052604090205490610950565b60008184841115610cde5760405162461bcd60e51b81526004016104e59190610d90565b506000610ceb8486610eef565b95945050505050565b600080610d018385610eb0565b905060008312158015610d145750838113155b80610985575060008312801561098557508381136108da57600080fd5b600060208284031215610d42578081fd5b81356108da81610f1c565b60008060408385031215610d5f578081fd5b8235610d6a81610f1c565b946020939093013593505050565b600060208284031215610d89578081fd5b5035919050565b6000602080835283518082850152825b81811015610dbc57858101830151858201604001528201610da0565b81811115610dcd5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600080821280156001600160ff1b0384900385131615610e3a57610e3a610f06565b600160ff1b8390038412811615610e5357610e53610f06565b50500190565b60008219821115610e6c57610e6c610f06565b500190565b600082610e8c57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610eab57610eab610f06565b500290565b60008083128015600160ff1b850184121615610ece57610ece610f06565b6001600160ff1b0384018313811615610ee957610ee9610f06565b50500390565b600082821015610f0157610f01610f06565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146105b157600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220c99d4b9db43474c8ea91eaa911df5e7e206801b1f7ecdd8c70f34c8d20cf8fcb64736f6c63430008040033