0x6080604052600436106103c75760003560e01c806385261485116101f2578063d2d7ad831161010d578063f0cd1dac116100a0578063f84ba65d1161006f578063f84ba65d14610b89578063f872858a14610ba9578063f8f6329014610bca578063fb4b8e6c14610bea57600080fd5b8063f0cd1dac14610b1d578063f1d5f51714610b33578063f2fde38b14610b53578063f680f79914610b7357600080fd5b8063e6b2603b116100dc578063e6b2603b14610aa8578063ec28438a14610abd578063ee828db314610add578063ef422a1814610afd57600080fd5b8063d2d7ad8314610a15578063da00097d14610a2b578063dc44b6a014610a4c578063dd62ed3e14610a6257600080fd5b8063a9059cbb11610185578063c816841b11610154578063c816841b1461098f578063c8607952146109af578063c867d60b146109c5578063c9c9afc5146109f557600080fd5b8063a9059cbb14610919578063c2e5ec0414610939578063c49b9a8014610959578063c5d241891461097957600080fd5b806395d89b41116101c157806395d89b41146108a457806398e944c8146108b9578063a457c2d7146108d9578063a5d69d1f146108f957600080fd5b8063852614851461081f57806388790a68146108405780638b42507f146108565780638da5cb5b1461088657600080fd5b80633b97084a116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146107bd578063807c2d9c146107d357806382eefb43146107e9578063844d591c146107ff57600080fd5b8063672434821461072d57806370a082311461074d578063715018a61461078357806375f0a8741461079857600080fd5b80634cb80fd5116102b15780634cb80fd5146106a75780635194f9bf146106c75780635342acb4146106dd5780635881f3ef1461070d57600080fd5b80633b97084a1461061c5780633ecad2711461063c5780634a74bb021461066c5780634ada218b1461068d57600080fd5b806323555d571161035a57806327c8f8351161032957806327c8f835146105915780632b112e49146105c5578063313ce567146105da57806339509351146105fc57600080fd5b806323555d571461051b57806323b872dd146105315780632563ae831461055157806326cd1e301461057157600080fd5b80631694505e116103965780631694505e1461049c57806318160ddd146104bc5780631870517a146104db5780632198cf6c146104fb57600080fd5b806306fdde03146103d357806308733214146103fe5780630930907b14610420578063095ea7b31461046c57600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610c0a565b6040516103f59190612f4c565b60405180910390f35b34801561040a57600080fd5b5061041e610419366004612eb1565b610c9c565b005b34801561042c57600080fd5b506104547f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103f5565b34801561047857600080fd5b5061048c610487366004612dcd565b610d5a565b60405190151581526020016103f5565b3480156104a857600080fd5b50601a54610454906001600160a01b031681565b3480156104c857600080fd5b506016545b6040519081526020016103f5565b3480156104e757600080fd5b5061041e6104f6366004612eb1565b610d71565b34801561050757600080fd5b5061041e610516366004612da0565b610e1b565b34801561052757600080fd5b506104cd600f5481565b34801561053d57600080fd5b5061048c61054c366004612d60565b610e70565b34801561055d57600080fd5b5061041e61056c366004612e61565b610edb565b34801561057d57600080fd5b5061041e61058c366004612dcd565b610f23565b34801561059d57600080fd5b506104547f000000000000000000000000000000000000000000000000000000000000dead81565b3480156105d157600080fd5b506104cd611045565b3480156105e657600080fd5b5060035460405160ff90911681526020016103f5565b34801561060857600080fd5b5061048c610617366004612dcd565b6110d8565b34801561062857600080fd5b5061041e610637366004612e99565b61110e565b34801561064857600080fd5b5061048c610657366004612cf0565b600a6020526000908152604090205460ff1681565b34801561067857600080fd5b50601b5461048c90600160a81b900460ff1681565b34801561069957600080fd5b5060085461048c9060ff1681565b3480156106b357600080fd5b5061041e6106c2366004612cf0565b611265565b3480156106d357600080fd5b506104cd60125481565b3480156106e957600080fd5b5061048c6106f8366004612cf0565b60096020526000908152604090205460ff1681565b34801561071957600080fd5b50610454610728366004612cf0565b6112dd565b34801561073957600080fd5b5061041e610748366004612df8565b611651565b34801561075957600080fd5b506104cd610768366004612cf0565b6001600160a01b031660009081526006602052604090205490565b34801561078f57600080fd5b5061041e611953565b3480156107a457600080fd5b506003546104549061010090046001600160a01b031681565b3480156107c957600080fd5b506104cd60185481565b3480156107df57600080fd5b506104cd60195481565b3480156107f557600080fd5b506104cd60155481565b34801561080b57600080fd5b5061041e61081a366004612da0565b6119cd565b34801561082b57600080fd5b50601b5461048c90600160c01b900460ff1681565b34801561084c57600080fd5b506104cd60105481565b34801561086257600080fd5b5061048c610871366004612cf0565b600c6020526000908152604090205460ff1681565b34801561089257600080fd5b506000546001600160a01b0316610454565b3480156108b057600080fd5b506103e8611a22565b3480156108c557600080fd5b50600554610454906001600160a01b031681565b3480156108e557600080fd5b5061048c6108f4366004612dcd565b611a31565b34801561090557600080fd5b5061041e610914366004612e61565b611a80565b34801561092557600080fd5b5061048c610934366004612dcd565b611ac8565b34801561094557600080fd5b5061041e610954366004612e61565b611ad5565b34801561096557600080fd5b5061041e610974366004612e61565b611b12565b34801561098557600080fd5b506104cd600e5481565b34801561099b57600080fd5b50601b54610454906001600160a01b031681565b3480156109bb57600080fd5b506104cd60115481565b3480156109d157600080fd5b5061048c6109e0366004612cf0565b600b6020526000908152604090205460ff1681565b348015610a0157600080fd5b5061041e610a10366004612cf0565b611b94565b348015610a2157600080fd5b506104cd60175481565b348015610a3757600080fd5b50601b5461048c90600160b01b900460ff1681565b348015610a5857600080fd5b506104cd600d5481565b348015610a6e57600080fd5b506104cd610a7d366004612d28565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610ab457600080fd5b5061041e611be0565b348015610ac957600080fd5b5061041e610ad8366004612e99565b611c62565b348015610ae957600080fd5b5061041e610af8366004612e61565b611d22565b348015610b0957600080fd5b5061041e610b18366004612da0565b611d6a565b348015610b2957600080fd5b506104cd60145481565b348015610b3f57600080fd5b5061041e610b4e366004612e99565b611dbf565b348015610b5f57600080fd5b5061041e610b6e366004612cf0565b611dee565b348015610b7f57600080fd5b506104cd60135481565b348015610b9557600080fd5b5061041e610ba4366004612da0565b611ed8565b348015610bb557600080fd5b50601b5461048c90600160b81b900460ff1681565b348015610bd657600080fd5b50600454610454906001600160a01b031681565b348015610bf657600080fd5b5061041e610c05366004612cf0565b611f2d565b606060018054610c19906130e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c45906130e1565b8015610c925780601f10610c6757610100808354040283529160200191610c92565b820191906000526020600020905b815481529060010190602001808311610c7557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610ccf5760405162461bcd60e51b8152600401610cc690612fe1565b60405180910390fd5b601083905560118290556012819055610cf281610cec8585612060565b90612060565b601555601354610d049060089061308b565b6015541115610d555760405162461bcd60e51b815260206004820152601f60248201527f53656c6c2066656573206d7573742062652031322e3525206f72206c657373006044820152606401610cc6565b505050565b6000610d673384846120bf565b5060015b92915050565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b8152600401610cc690612fe1565b600d839055600e829055600f819055610db881610cec8585612060565b601455601354610dca9060089061308b565b6014541115610d555760405162461bcd60e51b815260206004820152601e60248201527f4275792066656573206d7573742062652031322e3525206f72206c65737300006044820152606401610cc6565b6000546001600160a01b03163314610e455760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610e7d8484846121e3565b50610ed08433610ecb85604051806060016040528060288152602001613171602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190612606565b6120bf565b5060015b9392505050565b6000546001600160a01b03163314610f055760405162461bcd60e51b8152600401610cc690612fe1565b601b8054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610f4d5760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b038216301415610fc55760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610cc6565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561100d57600080fd5b505af1158015611021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612e7d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600660205260408120546110d3906110cd6110c47f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b031660009081526006602052604090205490565b60165490612640565b90612640565b905090565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610d67918590610ecb9086612060565b6000546001600160a01b031633146111385760405162461bcd60e51b8152600401610cc690612fe1565b61115b620186a06111556001601654611f9f90919063ffffffff16565b9061201e565b8110156111d05760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f206c6f776572207468616e20302e30303125206f6620746f6b656e73000000006064820152608401610cc6565b6111eb60646111556001601654611f9f90919063ffffffff16565b8111156112605760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e73000000000000006064820152608401610cc6565b601755565b6000546001600160a01b0316331461128f5760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b0381166112b55760405162461bcd60e51b8152600401610cc690612f9f565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146113085760405162461bcd60e51b8152600401610cc690612fe1565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561134657600080fd5b505afa15801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e9190612d0c565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c657600080fd5b505afa1580156113da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fe9190612d0c565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561144457600080fd5b505afa158015611458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147c9190612d0c565b91506001600160a01b03821661160057806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c557600080fd5b505afa1580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fd9190612d0c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561154557600080fd5b505afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190612d0c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd9190612d0c565b91505b601b80546001600160a01b038085166001600160a01b03199283168117909355601a80549490911693909116929092179091556000908152600a60205260409020805460ff19166001179055919050565b6000546001600160a01b0316331461167b5760405162461bcd60e51b8152600401610cc690612fe1565b338382146116c45760405162461bcd60e51b815260206004820152601660248201527508ae4e4dee474409ad2e6dac2e8c6d04098cadccee8d60531b6044820152606401610cc6565b6000805b83811015611716578484828181106116f057634e487b7160e01b600052603260045260246000fd5b90506020020135826117029190613073565b91508061170e8161311c565b9150506116c8565b5080611737836001600160a01b031660009081526006602052604090205490565b10156117855760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e74204572726f72212100000000006044820152606401610cc6565b6001600160a01b0382166000908152600660205260409020546117a89082612640565b6001600160a01b0383166000908152600660205260408120919091555b8581101561194a576118508585838181106117f057634e487b7160e01b600052603260045260246000fd5b90506020020135600660008a8a8681811061181b57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118309190612cf0565b6001600160a01b0316815260208101919091526040016000205490612060565b6006600089898581811061187457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118899190612cf0565b6001600160a01b031681526020810191909152604001600020558686828181106118c357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118d89190612cf0565b6001600160a01b0316836001600160a01b031660008051602061319983398151915287878581811061191a57634e487b7160e01b600052603260045260246000fd5b9050602002013560405161193091815260200190565b60405180910390a3806119428161311c565b9150506117c5565b50505050505050565b6000546001600160a01b0316331461197d5760405162461bcd60e51b8152600401610cc690612fe1565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b031633146119f75760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b606060028054610c19906130e1565b6000610d673384610ecb856040518060600160405280602581526020016131b9602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190612606565b6000546001600160a01b03163314611aaa5760405162461bcd60e51b8152600401610cc690612fe1565b601b8054911515600160b01b0260ff60b01b19909216919091179055565b6000610ed03384846121e3565b6000546001600160a01b03163314611aff5760405162461bcd60e51b8152600401610cc690612fe1565b6008805460ff1916911515919091179055565b6000546001600160a01b03163314611b3c5760405162461bcd60e51b8152600401610cc690612fe1565b601b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611b8990831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611bbe5760405162461bcd60e51b8152600401610cc690612fe1565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c0a5760405162461bcd60e51b8152600401610cc690612fe1565b604051600090339047908381818185875af1925050503d8060008114611c4c576040519150601f19603f3d011682016040523d82523d6000602084013e611c51565b606091505b5050905080611c5f57600080fd5b50565b6000546001600160a01b03163314611c8c5760405162461bcd60e51b8152600401610cc690612fe1565b611ca86103e86111556001601654611f9f90919063ffffffff16565b811015611d1d5760405162461bcd60e51b815260206004820152603860248201527f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460448201527f68616e20302c3125206f6620746f74616c20737570706c7900000000000000006064820152608401610cc6565b601855565b6000546001600160a01b03163314611d4c5760405162461bcd60e51b8152600401610cc690612fe1565b601b8054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611d945760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611de95760405162461bcd60e51b8152600401610cc690612fe1565b601955565b6000546001600160a01b03163314611e185760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b038116611e7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cc6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611f025760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611f575760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b038116611f7d5760405162461bcd60e51b8152600401610cc690612f9f565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600082611fae57506000610d6b565b6000611fba83856130ab565b905082611fc7858361308b565b14610ed45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cc6565b6000610ed483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612682565b60008061206d8385613073565b905083811015610ed45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cc6565b6001600160a01b0383166121215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cc6565b6001600160a01b0382166121825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cc6565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166122495760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc6565b6001600160a01b0383166122ab5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc6565b601b54600160a01b900460ff16156122cf576122c88484846126b0565b9050610ed4565b6001600160a01b0384166000908152600c602052604090205460ff1615801561231157506001600160a01b0383166000908152600c602052604090205460ff16155b80156123265750601b54600160c01b900460ff165b1561238e5760185482111561238e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cc6565b30600090815260066020526040902054601754811080159081906123bc5750601b54600160a01b900460ff16155b80156123e157506001600160a01b0386166000908152600a602052604090205460ff16155b80156123f65750601b54600160a81b900460ff165b1561241c57601b54600160b01b900460ff16156124135760175491505b61241c82612784565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03891660009081526006909152919091205461246e918690612606565b6001600160a01b038716600090815260066020908152604080832093909355600990529081205460ff16806124bb57506001600160a01b03861660009081526009602052604090205460ff165b6124cf576124ca878787612931565b6124d1565b845b601b54909150600160b81b900460ff16801561250657506001600160a01b0386166000908152600b602052604090205460ff16155b1561258d5760195461253182610cec896001600160a01b031660009081526006602052604090205490565b111561258d5760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610cc6565b6001600160a01b0386166000908152600660205260409020546125b09082612060565b6001600160a01b038088166000818152600660205260409081902093909355915190891690600080516020613199833981519152906125f29085815260200190565b60405180910390a360019350505050610ed4565b6000818484111561262a5760405162461bcd60e51b8152600401610cc69190612f4c565b50600061263784866130ca565b95945050505050565b6000610ed483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612606565b600081836126a35760405162461bcd60e51b8152600401610cc69190612f4c565b506000612637848661308b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054612701918490612606565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546127309083612060565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020613199833981519152906127729086815260200190565b60405180910390a35060019392505050565b601b805460ff60a01b1916600160a01b1790556015546014546000916127aa9190612060565b905060006127c5601054600d5461206090919063ffffffff16565b905060006127e0601154600e5461206090919063ffffffff16565b905060006127f5600261115586818988611f9f565b905060006128038683612640565b90504761280f82612a25565b600061281b4783612640565b9050600061283461282d88600261201e565b8990612640565b9050600061284960026111558481878d611f9f565b9050600061285b83611155868b611f9f565b9050600061286d826110cd8786612640565b905081156128b5576003546040516101009091046001600160a01b0316906108fc8415029084906000818181858888f193505050501580156128b3573d6000803e3d6000fd5b505b80156128f7576004546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156128f5573d6000803e3d6000fd5b505b6000831180156129075750600088115b15612916576129168884612be3565b5050601b805460ff60a01b1916905550505050505050505050565b6001600160a01b0383166000908152600a6020526040812054819060ff16156129755761296e606461115560145486611f9f90919063ffffffff16565b90506129b3565b6001600160a01b0384166000908152600a602052604090205460ff16156129b3576129b0606461115560155486611f9f90919063ffffffff16565b90505b8015612a1b57306000908152600660205260409020546129d39082612060565b30600081815260066020526040908190209290925590516001600160a01b0387169060008051602061319983398151915290612a129085815260200190565b60405180910390a35b6126378382612640565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a6857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612abc57600080fd5b505afa158015612ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af49190612d0c565b81600181518110612b1557634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601a54612b3b91309116846120bf565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612b74908590600090869030904290600401613037565b600060405180830381600087803b158015612b8e57600080fd5b505af1158015612ba2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612bd7929190613016565b60405180910390a15050565b601a54612bfb9030906001600160a01b0316846120bf565b601a5460055460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612c6657600080fd5b505af1158015612c7a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c9f9190612edc565b5050505050565b60008083601f840112612cb7578182fd5b50813567ffffffffffffffff811115612cce578182fd5b6020830191508360208260051b8501011115612ce957600080fd5b9250929050565b600060208284031215612d01578081fd5b8135610ed48161314d565b600060208284031215612d1d578081fd5b8151610ed48161314d565b60008060408385031215612d3a578081fd5b8235612d458161314d565b91506020830135612d558161314d565b809150509250929050565b600080600060608486031215612d74578081fd5b8335612d7f8161314d565b92506020840135612d8f8161314d565b929592945050506040919091013590565b60008060408385031215612db2578182fd5b8235612dbd8161314d565b91506020830135612d5581613162565b60008060408385031215612ddf578182fd5b8235612dea8161314d565b946020939093013593505050565b60008060008060408587031215612e0d578081fd5b843567ffffffffffffffff80821115612e24578283fd5b612e3088838901612ca6565b90965094506020870135915080821115612e48578283fd5b50612e5587828801612ca6565b95989497509550505050565b600060208284031215612e72578081fd5b8135610ed481613162565b600060208284031215612e8e578081fd5b8151610ed481613162565b600060208284031215612eaa578081fd5b5035919050565b600080600060608486031215612ec5578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ef0578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612f415781516001600160a01b031687529582019590820190600101612f1c565b509495945050505050565b6000602080835283518082850152825b81811015612f7857858101830151858201604001528201612f5c565b81811115612f895783604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061302f6040830184612f09565b949350505050565b85815284602082015260a06040820152600061305660a0830186612f09565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561308657613086613137565b500190565b6000826130a657634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156130c5576130c5613137565b500290565b6000828210156130dc576130dc613137565b500390565b600181811c908216806130f557607f821691505b6020821081141561311657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561313057613130613137565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611c5f57600080fd5b8015158114611c5f57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220987948e6ef407283749e802eda1aa9420cecdf7d8b37d4f9499ddfb7004848a664736f6c63430008040033
0x610100604052600660c0819052650acc2dcd2e6d60d31b60e09081526200002a91600191906200081d565b5060408051808201909152600780825266048acc2dcd2e6d60cb1b60209092019182526200005b916002916200081d565b506003805474d2f06b0f16925fd9bda60da1b004edfc9588db49126001600160a81b0319909116179055600480546001600160a01b03191673d2f06b0f16925fd9bda60da1b004edfc9588db491790556ddead000000000000000000000000608052600060a0819052600d819055600e819055600f8190556010819055601181905560129081556064601355620000f490600a620009c7565b6200010490633b9aca0062000a86565b6016556200013f6103e86200012b6001601654620006a060201b62001f9f1790919060201c565b6200073460201b6200201e1790919060201c565b6017556200016560646200012b6064601654620006a060201b62001f9f1790919060201c565b6018556200018b60646200012b6064601654620006a060201b62001f9f1790919060201c565b601955601b805463ffffffff60a81b1916630101000160a81b179055348015620001b457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024957600080fd5b505afa1580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002849190620008c3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002cd57600080fd5b505afa158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003089190620008c3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200035157600080fd5b505af115801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c9190620008c3565b601b80546001600160a01b039283166001600160a01b031991821617909155601a805492841692909116821790553060009081526007602090815260408083209383529290529081206000199055600190600990620003f36000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560035461010090048216815260099093528183208054851660019081179091556004549091168352818320805485168217905530835290822080549093168117909255600b906200047a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600354610100900482168152600b909352818320805485166001908117909155600454821684528284208054861682179055601b549091168352818320805485168217905530835290822080549093168117909255600c90620005136000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600354610100900482168152600c84528281208054861660019081179091556004549092168152828120805486168317905530815291909120805490931617909155600f54600e54600d54620005ba93620005a69290620020606200077e821b17901c565b6200077e60201b620020601790919060201c565b601481905550620005e5601254620005a66011546010546200077e60201b620020601790919060201c565b601555601b546001600160a01b03166000908152600a60205260408120805460ff19166001179055600580546001600160a01b03191633179055601654906006906200062e3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6016546040516200069191815260200190565b60405180910390a35062000afb565b600082620006b1575060006200072e565b6000620006bf838562000a86565b905082620006ce85836200095d565b146200072b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200072b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007e160201b60201c565b6000806200078d838562000942565b9050838110156200072b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000722565b60008183620008055760405162461bcd60e51b8152600401620007229190620008ec565b5060006200081484866200095d565b95945050505050565b8280546200082b9062000aa8565b90600052602060002090601f0160209004810192826200084f57600085556200089a565b82601f106200086a57805160ff19168380011785556200089a565b828001600101855582156200089a579182015b828111156200089a5782518255916020019190600101906200087d565b50620008a8929150620008ac565b5090565b5b80821115620008a85760008155600101620008ad565b600060208284031215620008d5578081fd5b81516001600160a01b03811681146200072b578182fd5b6000602080835283518082850152825b818110156200091a57858101830151858201604001528201620008fc565b818111156200092c5783604083870101525b50601f01601f1916929092016040019392505050565b6000821982111562000958576200095862000ae5565b500190565b6000826200097957634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620009bf578160001904821115620009a357620009a362000ae5565b80851615620009b157918102915b93841c939080029062000983565b509250929050565b60006200072b60ff841683600082620009e3575060016200072e565b81620009f2575060006200072e565b816001811462000a0b576002811462000a165762000a36565b60019150506200072e565b60ff84111562000a2a5762000a2a62000ae5565b50506001821b6200072e565b5060208310610133831016604e8410600b841016171562000a5b575081810a6200072e565b62000a6783836200097e565b806000190482111562000a7e5762000a7e62000ae5565b029392505050565b600081600019048311821515161562000aa35762000aa362000ae5565b500290565b600181811c9082168062000abd57607f821691505b6020821081141562000adf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a05160601c61321362000b3560003960008181610432015261104f0152600081816105a3015261108a01526132136000f3fe6080604052600436106103c75760003560e01c806385261485116101f2578063d2d7ad831161010d578063f0cd1dac116100a0578063f84ba65d1161006f578063f84ba65d14610b89578063f872858a14610ba9578063f8f6329014610bca578063fb4b8e6c14610bea57600080fd5b8063f0cd1dac14610b1d578063f1d5f51714610b33578063f2fde38b14610b53578063f680f79914610b7357600080fd5b8063e6b2603b116100dc578063e6b2603b14610aa8578063ec28438a14610abd578063ee828db314610add578063ef422a1814610afd57600080fd5b8063d2d7ad8314610a15578063da00097d14610a2b578063dc44b6a014610a4c578063dd62ed3e14610a6257600080fd5b8063a9059cbb11610185578063c816841b11610154578063c816841b1461098f578063c8607952146109af578063c867d60b146109c5578063c9c9afc5146109f557600080fd5b8063a9059cbb14610919578063c2e5ec0414610939578063c49b9a8014610959578063c5d241891461097957600080fd5b806395d89b41116101c157806395d89b41146108a457806398e944c8146108b9578063a457c2d7146108d9578063a5d69d1f146108f957600080fd5b8063852614851461081f57806388790a68146108405780638b42507f146108565780638da5cb5b1461088657600080fd5b80633b97084a116102e257806367243482116102755780637d1db4a5116102445780637d1db4a5146107bd578063807c2d9c146107d357806382eefb43146107e9578063844d591c146107ff57600080fd5b8063672434821461072d57806370a082311461074d578063715018a61461078357806375f0a8741461079857600080fd5b80634cb80fd5116102b15780634cb80fd5146106a75780635194f9bf146106c75780635342acb4146106dd5780635881f3ef1461070d57600080fd5b80633b97084a1461061c5780633ecad2711461063c5780634a74bb021461066c5780634ada218b1461068d57600080fd5b806323555d571161035a57806327c8f8351161032957806327c8f835146105915780632b112e49146105c5578063313ce567146105da57806339509351146105fc57600080fd5b806323555d571461051b57806323b872dd146105315780632563ae831461055157806326cd1e301461057157600080fd5b80631694505e116103965780631694505e1461049c57806318160ddd146104bc5780631870517a146104db5780632198cf6c146104fb57600080fd5b806306fdde03146103d357806308733214146103fe5780630930907b14610420578063095ea7b31461046c57600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610c0a565b6040516103f59190612f4c565b60405180910390f35b34801561040a57600080fd5b5061041e610419366004612eb1565b610c9c565b005b34801561042c57600080fd5b506104547f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103f5565b34801561047857600080fd5b5061048c610487366004612dcd565b610d5a565b60405190151581526020016103f5565b3480156104a857600080fd5b50601a54610454906001600160a01b031681565b3480156104c857600080fd5b506016545b6040519081526020016103f5565b3480156104e757600080fd5b5061041e6104f6366004612eb1565b610d71565b34801561050757600080fd5b5061041e610516366004612da0565b610e1b565b34801561052757600080fd5b506104cd600f5481565b34801561053d57600080fd5b5061048c61054c366004612d60565b610e70565b34801561055d57600080fd5b5061041e61056c366004612e61565b610edb565b34801561057d57600080fd5b5061041e61058c366004612dcd565b610f23565b34801561059d57600080fd5b506104547f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d157600080fd5b506104cd611045565b3480156105e657600080fd5b5060035460405160ff90911681526020016103f5565b34801561060857600080fd5b5061048c610617366004612dcd565b6110d8565b34801561062857600080fd5b5061041e610637366004612e99565b61110e565b34801561064857600080fd5b5061048c610657366004612cf0565b600a6020526000908152604090205460ff1681565b34801561067857600080fd5b50601b5461048c90600160a81b900460ff1681565b34801561069957600080fd5b5060085461048c9060ff1681565b3480156106b357600080fd5b5061041e6106c2366004612cf0565b611265565b3480156106d357600080fd5b506104cd60125481565b3480156106e957600080fd5b5061048c6106f8366004612cf0565b60096020526000908152604090205460ff1681565b34801561071957600080fd5b50610454610728366004612cf0565b6112dd565b34801561073957600080fd5b5061041e610748366004612df8565b611651565b34801561075957600080fd5b506104cd610768366004612cf0565b6001600160a01b031660009081526006602052604090205490565b34801561078f57600080fd5b5061041e611953565b3480156107a457600080fd5b506003546104549061010090046001600160a01b031681565b3480156107c957600080fd5b506104cd60185481565b3480156107df57600080fd5b506104cd60195481565b3480156107f557600080fd5b506104cd60155481565b34801561080b57600080fd5b5061041e61081a366004612da0565b6119cd565b34801561082b57600080fd5b50601b5461048c90600160c01b900460ff1681565b34801561084c57600080fd5b506104cd60105481565b34801561086257600080fd5b5061048c610871366004612cf0565b600c6020526000908152604090205460ff1681565b34801561089257600080fd5b506000546001600160a01b0316610454565b3480156108b057600080fd5b506103e8611a22565b3480156108c557600080fd5b50600554610454906001600160a01b031681565b3480156108e557600080fd5b5061048c6108f4366004612dcd565b611a31565b34801561090557600080fd5b5061041e610914366004612e61565b611a80565b34801561092557600080fd5b5061048c610934366004612dcd565b611ac8565b34801561094557600080fd5b5061041e610954366004612e61565b611ad5565b34801561096557600080fd5b5061041e610974366004612e61565b611b12565b34801561098557600080fd5b506104cd600e5481565b34801561099b57600080fd5b50601b54610454906001600160a01b031681565b3480156109bb57600080fd5b506104cd60115481565b3480156109d157600080fd5b5061048c6109e0366004612cf0565b600b6020526000908152604090205460ff1681565b348015610a0157600080fd5b5061041e610a10366004612cf0565b611b94565b348015610a2157600080fd5b506104cd60175481565b348015610a3757600080fd5b50601b5461048c90600160b01b900460ff1681565b348015610a5857600080fd5b506104cd600d5481565b348015610a6e57600080fd5b506104cd610a7d366004612d28565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610ab457600080fd5b5061041e611be0565b348015610ac957600080fd5b5061041e610ad8366004612e99565b611c62565b348015610ae957600080fd5b5061041e610af8366004612e61565b611d22565b348015610b0957600080fd5b5061041e610b18366004612da0565b611d6a565b348015610b2957600080fd5b506104cd60145481565b348015610b3f57600080fd5b5061041e610b4e366004612e99565b611dbf565b348015610b5f57600080fd5b5061041e610b6e366004612cf0565b611dee565b348015610b7f57600080fd5b506104cd60135481565b348015610b9557600080fd5b5061041e610ba4366004612da0565b611ed8565b348015610bb557600080fd5b50601b5461048c90600160b81b900460ff1681565b348015610bd657600080fd5b50600454610454906001600160a01b031681565b348015610bf657600080fd5b5061041e610c05366004612cf0565b611f2d565b606060018054610c19906130e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c45906130e1565b8015610c925780601f10610c6757610100808354040283529160200191610c92565b820191906000526020600020905b815481529060010190602001808311610c7557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610ccf5760405162461bcd60e51b8152600401610cc690612fe1565b60405180910390fd5b601083905560118290556012819055610cf281610cec8585612060565b90612060565b601555601354610d049060089061308b565b6015541115610d555760405162461bcd60e51b815260206004820152601f60248201527f53656c6c2066656573206d7573742062652031322e3525206f72206c657373006044820152606401610cc6565b505050565b6000610d673384846120bf565b5060015b92915050565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b8152600401610cc690612fe1565b600d839055600e829055600f819055610db881610cec8585612060565b601455601354610dca9060089061308b565b6014541115610d555760405162461bcd60e51b815260206004820152601e60248201527f4275792066656573206d7573742062652031322e3525206f72206c65737300006044820152606401610cc6565b6000546001600160a01b03163314610e455760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610e7d8484846121e3565b50610ed08433610ecb85604051806060016040528060288152602001613171602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190612606565b6120bf565b5060015b9392505050565b6000546001600160a01b03163314610f055760405162461bcd60e51b8152600401610cc690612fe1565b601b8054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610f4d5760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b038216301415610fc55760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610cc6565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561100d57600080fd5b505af1158015611021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612e7d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600660205260408120546110d3906110cd6110c47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660009081526006602052604090205490565b60165490612640565b90612640565b905090565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610d67918590610ecb9086612060565b6000546001600160a01b031633146111385760405162461bcd60e51b8152600401610cc690612fe1565b61115b620186a06111556001601654611f9f90919063ffffffff16565b9061201e565b8110156111d05760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f206c6f776572207468616e20302e30303125206f6620746f6b656e73000000006064820152608401610cc6565b6111eb60646111556001601654611f9f90919063ffffffff16565b8111156112605760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e73000000000000006064820152608401610cc6565b601755565b6000546001600160a01b0316331461128f5760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b0381166112b55760405162461bcd60e51b8152600401610cc690612f9f565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146113085760405162461bcd60e51b8152600401610cc690612fe1565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561134657600080fd5b505afa15801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e9190612d0c565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c657600080fd5b505afa1580156113da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fe9190612d0c565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561144457600080fd5b505afa158015611458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147c9190612d0c565b91506001600160a01b03821661160057806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c557600080fd5b505afa1580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fd9190612d0c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561154557600080fd5b505afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190612d0c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd9190612d0c565b91505b601b80546001600160a01b038085166001600160a01b03199283168117909355601a80549490911693909116929092179091556000908152600a60205260409020805460ff19166001179055919050565b6000546001600160a01b0316331461167b5760405162461bcd60e51b8152600401610cc690612fe1565b338382146116c45760405162461bcd60e51b815260206004820152601660248201527508ae4e4dee474409ad2e6dac2e8c6d04098cadccee8d60531b6044820152606401610cc6565b6000805b83811015611716578484828181106116f057634e487b7160e01b600052603260045260246000fd5b90506020020135826117029190613073565b91508061170e8161311c565b9150506116c8565b5080611737836001600160a01b031660009081526006602052604090205490565b10156117855760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e74204572726f72212100000000006044820152606401610cc6565b6001600160a01b0382166000908152600660205260409020546117a89082612640565b6001600160a01b0383166000908152600660205260408120919091555b8581101561194a576118508585838181106117f057634e487b7160e01b600052603260045260246000fd5b90506020020135600660008a8a8681811061181b57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118309190612cf0565b6001600160a01b0316815260208101919091526040016000205490612060565b6006600089898581811061187457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118899190612cf0565b6001600160a01b031681526020810191909152604001600020558686828181106118c357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118d89190612cf0565b6001600160a01b0316836001600160a01b031660008051602061319983398151915287878581811061191a57634e487b7160e01b600052603260045260246000fd5b9050602002013560405161193091815260200190565b60405180910390a3806119428161311c565b9150506117c5565b50505050505050565b6000546001600160a01b0316331461197d5760405162461bcd60e51b8152600401610cc690612fe1565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b031633146119f75760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b606060028054610c19906130e1565b6000610d673384610ecb856040518060600160405280602581526020016131b9602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190612606565b6000546001600160a01b03163314611aaa5760405162461bcd60e51b8152600401610cc690612fe1565b601b8054911515600160b01b0260ff60b01b19909216919091179055565b6000610ed03384846121e3565b6000546001600160a01b03163314611aff5760405162461bcd60e51b8152600401610cc690612fe1565b6008805460ff1916911515919091179055565b6000546001600160a01b03163314611b3c5760405162461bcd60e51b8152600401610cc690612fe1565b601b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611b8990831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611bbe5760405162461bcd60e51b8152600401610cc690612fe1565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c0a5760405162461bcd60e51b8152600401610cc690612fe1565b604051600090339047908381818185875af1925050503d8060008114611c4c576040519150601f19603f3d011682016040523d82523d6000602084013e611c51565b606091505b5050905080611c5f57600080fd5b50565b6000546001600160a01b03163314611c8c5760405162461bcd60e51b8152600401610cc690612fe1565b611ca86103e86111556001601654611f9f90919063ffffffff16565b811015611d1d5760405162461bcd60e51b815260206004820152603860248201527f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460448201527f68616e20302c3125206f6620746f74616c20737570706c7900000000000000006064820152608401610cc6565b601855565b6000546001600160a01b03163314611d4c5760405162461bcd60e51b8152600401610cc690612fe1565b601b8054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611d945760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611de95760405162461bcd60e51b8152600401610cc690612fe1565b601955565b6000546001600160a01b03163314611e185760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b038116611e7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cc6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611f025760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611f575760405162461bcd60e51b8152600401610cc690612fe1565b6001600160a01b038116611f7d5760405162461bcd60e51b8152600401610cc690612f9f565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600082611fae57506000610d6b565b6000611fba83856130ab565b905082611fc7858361308b565b14610ed45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cc6565b6000610ed483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612682565b60008061206d8385613073565b905083811015610ed45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cc6565b6001600160a01b0383166121215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cc6565b6001600160a01b0382166121825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cc6565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166122495760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc6565b6001600160a01b0383166122ab5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc6565b601b54600160a01b900460ff16156122cf576122c88484846126b0565b9050610ed4565b6001600160a01b0384166000908152600c602052604090205460ff1615801561231157506001600160a01b0383166000908152600c602052604090205460ff16155b80156123265750601b54600160c01b900460ff165b1561238e5760185482111561238e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cc6565b30600090815260066020526040902054601754811080159081906123bc5750601b54600160a01b900460ff16155b80156123e157506001600160a01b0386166000908152600a602052604090205460ff16155b80156123f65750601b54600160a81b900460ff165b1561241c57601b54600160b01b900460ff16156124135760175491505b61241c82612784565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03891660009081526006909152919091205461246e918690612606565b6001600160a01b038716600090815260066020908152604080832093909355600990529081205460ff16806124bb57506001600160a01b03861660009081526009602052604090205460ff165b6124cf576124ca878787612931565b6124d1565b845b601b54909150600160b81b900460ff16801561250657506001600160a01b0386166000908152600b602052604090205460ff16155b1561258d5760195461253182610cec896001600160a01b031660009081526006602052604090205490565b111561258d5760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610cc6565b6001600160a01b0386166000908152600660205260409020546125b09082612060565b6001600160a01b038088166000818152600660205260409081902093909355915190891690600080516020613199833981519152906125f29085815260200190565b60405180910390a360019350505050610ed4565b6000818484111561262a5760405162461bcd60e51b8152600401610cc69190612f4c565b50600061263784866130ca565b95945050505050565b6000610ed483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612606565b600081836126a35760405162461bcd60e51b8152600401610cc69190612f4c565b506000612637848661308b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054612701918490612606565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546127309083612060565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020613199833981519152906127729086815260200190565b60405180910390a35060019392505050565b601b805460ff60a01b1916600160a01b1790556015546014546000916127aa9190612060565b905060006127c5601054600d5461206090919063ffffffff16565b905060006127e0601154600e5461206090919063ffffffff16565b905060006127f5600261115586818988611f9f565b905060006128038683612640565b90504761280f82612a25565b600061281b4783612640565b9050600061283461282d88600261201e565b8990612640565b9050600061284960026111558481878d611f9f565b9050600061285b83611155868b611f9f565b9050600061286d826110cd8786612640565b905081156128b5576003546040516101009091046001600160a01b0316906108fc8415029084906000818181858888f193505050501580156128b3573d6000803e3d6000fd5b505b80156128f7576004546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156128f5573d6000803e3d6000fd5b505b6000831180156129075750600088115b15612916576129168884612be3565b5050601b805460ff60a01b1916905550505050505050505050565b6001600160a01b0383166000908152600a6020526040812054819060ff16156129755761296e606461115560145486611f9f90919063ffffffff16565b90506129b3565b6001600160a01b0384166000908152600a602052604090205460ff16156129b3576129b0606461115560155486611f9f90919063ffffffff16565b90505b8015612a1b57306000908152600660205260409020546129d39082612060565b30600081815260066020526040908190209290925590516001600160a01b0387169060008051602061319983398151915290612a129085815260200190565b60405180910390a35b6126378382612640565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a6857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612abc57600080fd5b505afa158015612ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af49190612d0c565b81600181518110612b1557634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601a54612b3b91309116846120bf565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612b74908590600090869030904290600401613037565b600060405180830381600087803b158015612b8e57600080fd5b505af1158015612ba2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612bd7929190613016565b60405180910390a15050565b601a54612bfb9030906001600160a01b0316846120bf565b601a5460055460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612c6657600080fd5b505af1158015612c7a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c9f9190612edc565b5050505050565b60008083601f840112612cb7578182fd5b50813567ffffffffffffffff811115612cce578182fd5b6020830191508360208260051b8501011115612ce957600080fd5b9250929050565b600060208284031215612d01578081fd5b8135610ed48161314d565b600060208284031215612d1d578081fd5b8151610ed48161314d565b60008060408385031215612d3a578081fd5b8235612d458161314d565b91506020830135612d558161314d565b809150509250929050565b600080600060608486031215612d74578081fd5b8335612d7f8161314d565b92506020840135612d8f8161314d565b929592945050506040919091013590565b60008060408385031215612db2578182fd5b8235612dbd8161314d565b91506020830135612d5581613162565b60008060408385031215612ddf578182fd5b8235612dea8161314d565b946020939093013593505050565b60008060008060408587031215612e0d578081fd5b843567ffffffffffffffff80821115612e24578283fd5b612e3088838901612ca6565b90965094506020870135915080821115612e48578283fd5b50612e5587828801612ca6565b95989497509550505050565b600060208284031215612e72578081fd5b8135610ed481613162565b600060208284031215612e8e578081fd5b8151610ed481613162565b600060208284031215612eaa578081fd5b5035919050565b600080600060608486031215612ec5578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ef0578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612f415781516001600160a01b031687529582019590820190600101612f1c565b509495945050505050565b6000602080835283518082850152825b81811015612f7857858101830151858201604001528201612f5c565b81811115612f895783604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061302f6040830184612f09565b949350505050565b85815284602082015260a06040820152600061305660a0830186612f09565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561308657613086613137565b500190565b6000826130a657634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156130c5576130c5613137565b500290565b6000828210156130dc576130dc613137565b500390565b600181811c908216806130f557607f821691505b6020821081141561311657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561313057613130613137565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611c5f57600080fd5b8015158114611c5f57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220987948e6ef407283749e802eda1aa9420cecdf7d8b37d4f9499ddfb7004848a664736f6c63430008040033