361 txs
1.27m calls
constructor
constructor(address _quoteToken)
functions
balance
viewfunction balance(address token) view returns (uint256)
decimalInfo
viewfunction decimalInfo(address baseToken) view returns (tuple)
feeAddr
viewfunction feeAddr() view returns (address)
isAdmin
viewfunction isAdmin(address) view returns (bool)
isPauseRole
viewfunction isPauseRole(address) view returns (bool)
lendManagers
viewfunction lendManagers(address) view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
poolSize
viewfunction poolSize(address token) view returns (uint256)
query
viewfunction query(address fromToken, address toToken, uint256 fromAmount) view returns (uint256 toAmount)
quoteToken
viewfunction quoteToken() view returns (address)
tokenInfos
viewfunction tokenInfos(address) view returns (uint192 reserve, uint16 feeRate, uint128 maxGamma, uint128 maxNotionalSwap)
tryQuery
viewfunction tryQuery(address fromToken, address toToken, uint256 fromAmount) view returns (uint256 toAmount)
unclaimedFee
viewfunction unclaimedFee() view returns (uint256)
wooracle
viewfunction wooracle() view returns (address)
claimFee
nonpayablefunction claimFee()
deposit
nonpayablefunction deposit(address token, uint256 amount)
depositAll
nonpayablefunction depositAll(address token)
inCaseTokenGotStuck
nonpayablefunction inCaseTokenGotStuck(address stuckToken)
init
nonpayablefunction init(address _wooracle, address _feeAddr)
migrateToNewPool
nonpayablefunction migrateToNewPool(address token, address newPool)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
repayLegacy
nonpayablefunction repayLegacy(address repaidToken, uint256 amount)
repayPrincipal
nonpayablefunction repayPrincipal(address repaidToken, uint256 principalAmount) returns (uint256 repaidAmount)
repayWeeklyLending
nonpayablefunction repayWeeklyLending(address wantToken) returns (uint256 repaidAmount)
setAdmin
nonpayablefunction setAdmin(address addr, bool flag)
setFeeAddr
nonpayablefunction setFeeAddr(address _feeAddr)
setFeeRate
nonpayablefunction setFeeRate(address token, uint16 rate)
setLendManager
nonpayablefunction setLendManager(address _lendManager)
setMaxGamma
nonpayablefunction setMaxGamma(address token, uint128 maxGamma)
setMaxNotionalSwap
nonpayablefunction setMaxNotionalSwap(address token, uint128 maxNotionalSwap)
setPauseRole
nonpayablefunction setPauseRole(address addr, bool flag)
setTokenInfo
nonpayablefunction setTokenInfo(address token, uint16 _feeRate, uint128 _maxGamma, uint128 _maxNotionalSwap)
setWooracle
nonpayablefunction setWooracle(address _wooracle)
skim
nonpayablefunction skim(address token)
skimMulTokens
nonpayablefunction skimMulTokens(address[] tokens)
swap
nonpayablefunction swap(address fromToken, address toToken, uint256 fromAmount, uint256 minToAmount, address to, address rebateTo) returns (uint256 realToAmount)
sync
nonpayablefunction sync(address token)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(address token, uint256 amount)
withdrawAll
nonpayablefunction withdrawAll(address token)
events
AdminUpdated
event AdminUpdated(address indexed addr, bool flag)
Deposit
event Deposit(address indexed token, address indexed sender, uint256 amount)
FeeAddrUpdated
event FeeAddrUpdated(address indexed newFeeAddr)
Migrate
event Migrate(address indexed token, address indexed receiver, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PauseRoleUpdated
event PauseRoleUpdated(address indexed addr, bool flag)
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(address indexed token, address indexed receiver, uint256 amount)
WooracleUpdated
event WooracleUpdated(address indexed newWooracle)
WooSwap
event WooSwap(address indexed fromToken, address indexed toToken, uint256 fromAmount, uint256 toAmount, address from, address indexed to, address rebateTo, uint256 swapVol, uint256 swapFee)
errors
No errors.
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162005f3438038062005f348339810160408190526200003491620000af565b6200003f336200005f565b600180556002805460ff191690556001600160a01b0316608052620000e1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000c257600080fd5b81516001600160a01b0381168114620000da57600080fd5b9392505050565b608051615d81620001b36000396000818161033f015281816112300152818161127d015281816115b40152818161188601528181611d0d01528181611d5701528181611fb0015281816126ae015281816126f801528181612750015281816131c401528181613245015281816135b1015281816135ed0152818161368f015281816137ff01528181613bcb01528181613c1301528181613c9901528181613ccb01528181613d5501528181613deb01528181614260015281816142b6015281816149e30152614a1f0152615d816000f3fe608060405234801561001057600080fd5b50600436106102e85760003560e01c8063a1ae849011610191578063e1a4e72a116100e3578063f2fde38b11610097578063fa09e63011610071578063fa09e63014610730578063fa75d16014610743578063fc60fb5d1461078657600080fd5b8063f2fde38b146106f7578063f3fef3a31461070a578063f58a435f1461071d57600080fd5b8063e4d43ec1116100c8578063e4d43ec1146106c8578063ebc80f13146106d1578063f09a4016146106e457600080fd5b8063e1a4e72a146106a2578063e3d670d7146106b557600080fd5b8063b2e693d311610145578063bc8530f91161011f578063bc8530f914610669578063ce824f191461067c578063d6285b7f1461068f57600080fd5b8063b2e693d314610549578063ba46ae7214610572578063bc25cf771461065657600080fd5b8063a584119411610176578063a584119414610510578063a8a4ff6a14610523578063b2855b4f1461053657600080fd5b8063a1ae8490146104b7578063a26db1a7146104ca57600080fd5b8063637e10cb1161024a5780637f0eec02116101fe578063966fb4c3116101d8578063966fb4c31461048957806399d32fc41461049c5780639f0d5f27146104a457600080fd5b80637f0eec021461045d5780638456cb59146104705780638da5cb5b1461047857600080fd5b8063686f30b01161022f578063686f30b014610421578063715018a6146104345780637dc203821461043c57600080fd5b8063637e10cb146103fb57806368078eed1461040e57600080fd5b80633f4ba83a116102a15780634b0bddd2116102865780634b0bddd2146103ca5780635905d23c146103dd5780635c975abb146103f057600080fd5b80633f4ba83a146103af57806347e7ef24146103b757600080fd5b8063217a4b70116102d2578063217a4b701461033a57806324d7806c1461037957806339e7fddc1461039c57600080fd5b80622259b4146102ed5780630426d97514610325575b600080fd5b6103106102fb36600461560c565b60056020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b610338610333366004615629565b610799565b005b6103617f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161031c565b61031061038736600461560c565b60046020526000908152604090205460ff1681565b600854610361906001600160a01b031681565b61033861096c565b6103386103c5366004615662565b6109ea565b6103386103d836600461569c565b610bc9565b6103386103eb36600461569c565b610d11565b60025460ff16610310565b610338610409366004615662565b610dfb565b61033861041c3660046156dc565b611016565b61033861042f36600461572f565b611149565b61033861121a565b61044f61044a36600461575d565b61122c565b60405190815260200161031c565b61033861046b36600461584b565b6112dc565b61033861139d565b6000546001600160a01b0316610361565b6103386104973660046158fd565b611433565b610338611542565b6103386104b236600461560c565b6115ed565b6103386104c536600461560c565b6116e8565b6104dd6104d836600461560c565b6117be565b60408051825167ffffffffffffffff9081168252602080850151821690830152928201519092169082015260600161031c565b61033861051e36600461560c565b61199f565b61033861053136600461572f565b611a8a565b61033861054436600461560c565b611b4d565b61036161055736600461560c565b6009602052600090815260409020546001600160a01b031681565b61060061058036600461560c565b6006602052600090815260409020805460019091015477ffffffffffffffffffffffffffffffffffffffffffffffff8216917801000000000000000000000000000000000000000000000000900461ffff16906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041684565b6040805177ffffffffffffffffffffffffffffffffffffffffffffffff909516855261ffff90931660208501526fffffffffffffffffffffffffffffffff9182169284019290925216606082015260800161031c565b61033861066436600461560c565b611c23565b600754610361906001600160a01b031681565b61044f61068a366004615957565b611d09565b61033861069d36600461560c565b611dae565b6103386106b036600461560c565b611ed9565b61044f6106c336600461560c565b611fac565b61044f60035481565b61044f6106df36600461560c565b612011565b6103386106f2366004615629565b61235c565b61033861070536600461560c565b612403565b610338610718366004615662565b612490565b61044f61072b366004615957565b6126aa565b61033861073e36600461560c565b612897565b61044f61075136600461560c565b6001600160a01b031660009081526006602052604090205477ffffffffffffffffffffffffffffffffffffffffffffffff1690565b61044f610794366004615662565b612948565b6107a1612cde565b6001600160a01b0382166107fc5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a2021746f6b656e000000000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0381166108525760405162461bcd60e51b815260206004820152601160248201527f576f6f505056323a20216e6577506f6f6c00000000000000000000000000000060448201526064016107f3565b6001600160a01b038216600090815260066020526040812080547fffffffffffffffff00000000000000000000000000000000000000000000000016905561089983611fac565b90506108a6838383612d38565b6040517f9f0d5f270000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152831690639f0d5f2790602401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50505050816001600160a01b0316836001600160a01b03167f18df02dcc52b9c494f391df09661519c0069bd8540141946280399408205ca1a8360405161095f91815260200190565b60405180910390a3505050565b6000546001600160a01b031633148061099457503360009081526004602052604090205460ff165b6109e05760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6109e8612e81565b565b6109f2612ef1565b6000546001600160a01b0316331480610a1a57503360009081526004602052604090205460ff165b610a665760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6000610a7183611fac565b9050610a7f83333085612f4a565b600081610a8b85611fac565b610a9591906159c7565b905082811015610ae75760405162461bcd60e51b815260206004820152600d60248201527f414d4f554e545f494e535546460000000000000000000000000000000000000060448201526064016107f3565b6001600160a01b038416600090815260066020526040902054610b2590849077ffffffffffffffffffffffffffffffffffffffffffffffff166159de565b6001600160a01b03851660008181526006602090815260409182902080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff95909516949094179093555185815233927f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62910160405180910390a35050610bc560018055565b5050565b6000546001600160a01b0316331480610bf157503360009081526004602052604090205460ff165b610c3d5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b038216610c935760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b03821660008181526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a1113391015b60405180910390a25050565b6000546001600160a01b0316331480610d3957503360009081526004602052604090205460ff165b610d855760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b03821660008181526005602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f949c0260fa3a6145f57958b7bf0efeb5edb4d3e1e573353a16e69aea2450883d9101610d05565b610e03612ef1565b6000546001600160a01b0316331480610e2b57503360009081526004602052604090205460ff165b610e775760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b03808316600090815260096020526040902054168115610fbf576001600160a01b038316600090815260066020526040902054610ed690839077ffffffffffffffffffffffffffffffffffffffffffffffff166159c7565b6001600160a01b038416600090815260066020526040902080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff92909216919091179055610f40838284612d38565b6040517f371fd8e6000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382169063371fd8e690602401600060405180830381600087803b158015610f9b57600080fd5b505af1158015610faf573d6000803e3d6000fd5b50505050610fbf83826000612d38565b806001600160a01b0316836001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161100491815260200190565b60405180910390a350610bc560018055565b6000546001600160a01b031633148061103e57503360009081526004602052604090205460ff165b61108a5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b620186a08161ffff1611156110e15760405162461bcd60e51b815260206004820152600560248201527f217261746500000000000000000000000000000000000000000000000000000060448201526064016107f3565b6001600160a01b039091166000908152600660205260409020805461ffff9092167801000000000000000000000000000000000000000000000000027fffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633148061117157503360009081526004602052604090205460ff165b6111bd5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b0391909116600090815260066020526040902060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff909216919091179055565b611222612cde565b6109e8600061309c565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b03160361127b576112748686868686613104565b90506112d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316036112c157611274878686868661373f565b6112cf878787878787613d2e565b90505b9695505050505050565b6112e4612ef1565b6000546001600160a01b031633148061130c57503360009081526004602052604090205460ff165b6113585760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b805160005b8181101561138f5761138783828151811061137a5761137a6159f6565b6020026020010151611c23565b60010161135d565b505061139a60018055565b50565b6000546001600160a01b03163314806113c557503360009081526004602052604090205460ff165b806113df57503360009081526005602052604090205460ff165b61142b5760405162461bcd60e51b815260206004820152601560248201527f576f6f505056323a202169735061757365526f6c65000000000000000000000060448201526064016107f3565b6109e8614608565b6000546001600160a01b031633148061145b57503360009081526004602052604090205460ff165b6114a75760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b039093166000908152600660205260409020805461ffff9093167801000000000000000000000000000000000000000000000000027fffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff9093169290921782556fffffffffffffffffffffffffffffffff92831670010000000000000000000000000000000002921691909117600190910155565b61154a612ef1565b6008546001600160a01b03166115a25760405162461bcd60e51b815260206004820152601160248201527f576f6f505056323a20216665654164647200000000000000000000000000000060448201526064016107f3565b6003805460009091556008546115e3907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683614663565b506109e860018055565b6000546001600160a01b031633148061161557503360009081526004602052604090205460ff165b6116615760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015261139a9082906001600160a01b038216906370a0823190602401602060405180830381865afa1580156116c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c59190615a25565b6000546001600160a01b031633148061171057503360009081526004602052604090205460ff165b61175c5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f59ddfdd1bf7e3ea08a07e8aaa1fe2ce9c840fab69fe5ede6ea727a45eb42fc6690600090a250565b6040805160608082018352600080835260208301819052828401528251908101928390526007547fd449a832000000000000000000000000000000000000000000000000000000009093526001600160a01b0384811660648301529192909182911663d449a83260848301602060405180830381865afa158015611846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186a9190615a3e565b61187590600a615b7d565b67ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119069190615a3e565b61191190600a615b7d565b67ffffffffffffffff168152602001836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119829190615a3e565b61198d90600a615b7d565b67ffffffffffffffff16905292915050565b6119a7612ef1565b6000546001600160a01b03163314806119cf57503360009081526004602052604090205460ff165b611a1b5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b611a2481611fac565b6001600160a01b038216600090815260066020526040902080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff929092169190911790556001805550565b6000546001600160a01b0316331480611ab257503360009081526004602052604090205460ff165b611afe5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b03909116600090815260066020526040902060010180546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b6000546001600160a01b0316331480611b7557503360009081526004602052604090205460ff165b611bc15760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f76f97b3f5ffcc8d8d9577d141751a7bed446b46d837fbc81b5c01c165bbfbbf490600090a250565b611c2b612ef1565b6000546001600160a01b0316331480611c5357503360009081526004602052604090205460ff165b611c9f5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b611d0081611cb56000546001600160a01b031690565b6001600160a01b03841660009081526006602052604090205477ffffffffffffffffffffffffffffffffffffffffffffffff16611cf185611fac565b611cfb91906159c7565b614663565b61139a60018055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603611d5557611d4e83836147a5565b9050611da7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603611d9857611d4e84836148b1565b611da38484846149b3565b5090505b9392505050565b611db6612cde565b8060096000836001600160a01b0316631f1fcd516040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190615b96565b6001600160a01b0390811682526020808301939093526040918201600090812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016958316959095179094558416808452600483529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590519081527f235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a11133910160405180910390a250565b611ee1612cde565b7fffffffffffffffffffffffff11111111111111111111111111111111111111126001600160a01b03821601611f1b5761139a3347614c61565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9f9190615a25565b9050610bc5823383614663565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614611ff557611ff082614d23565b61200b565b60035461200183614d23565b61200b91906159c7565b92915050565b600061201b612ef1565b6000546001600160a01b031633148061204357503360009081526004602052604090205460ff165b61208f5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b038083166000908152600960205260408082205481517fa373ed4e0000000000000000000000000000000000000000000000000000000081529151931692839263a373ed4e926004808201939182900301818387803b1580156120f857600080fd5b505af115801561210c573d6000803e3d6000fd5b505050506000816001600160a01b031663f077cbab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121749190615a25565b90506000826001600160a01b0316631f1fcd516040518163ffffffff1660e01b81526004016020604051808303816000875af11580156121b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121dc9190615b96565b905081156122fe576001600160a01b03811660009081526006602052604090205461222290839077ffffffffffffffffffffffffffffffffffffffffffffffff166159c7565b6001600160a01b038216600090815260066020526040902080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff9290921691909117905561228c818484612d38565b826001600160a01b031663c1ae359a6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156122cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f09190615a25565b93506122fe81846000612d38565b826001600160a01b0316816001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8460405161234391815260200190565b60405180910390a350505061235760018055565b919050565b612364612cde565b6007546001600160a01b0316156123bd5760405162461bcd60e51b815260206004820152601560248201527f576f6f505056323a20494e49545f494e56414c4944000000000000000000000060448201526064016107f3565b600780546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560088054929093169116179055565b61240b612cde565b6001600160a01b0381166124875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107f3565b61139a8161309c565b612498612ef1565b6000546001600160a01b03163314806124c057503360009081526004602052604090205460ff165b61250c5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b03821660009081526006602052604090205477ffffffffffffffffffffffffffffffffffffffffffffffff1681111561258e5760405162461bcd60e51b815260206004820152601060248201527f576f6f505056323a2021616d6f756e740000000000000000000000000000000060448201526064016107f3565b6001600160a01b0382166000908152600660205260409020546125cc90829077ffffffffffffffffffffffffffffffffffffffffffffffff166159c7565b6001600160a01b0383166000908152600660205260409020805477ffffffffffffffffffffffffffffffffffffffffffffffff929092167fffffffffffffffff000000000000000000000000000000000000000000000000909216919091179055612649826126436000546001600160a01b031690565b83614663565b6000546001600160a01b03166001600160a01b0316826001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161269991815260200190565b60405180910390a3610bc560018055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036126f6576126ef83836147a5565b9050612815565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603612739576126ef84836148b1565b60006127468585856149b3565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260066020526040902054919350915077ffffffffffffffffffffffffffffffffffffffffffffffff168111156128135760405162461bcd60e51b815260206004820152602160248201527f576f6f505056323a20494e535546465f51554f54455f464f525f53574150464560448201527f450000000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b505b6001600160a01b03831660009081526006602052604090205477ffffffffffffffffffffffffffffffffffffffffffffffff16811115611da75760405162461bcd60e51b815260206004820152601760248201527f576f6f505056323a20494e535546465f42414c414e434500000000000000000060448201526064016107f3565b6000546001600160a01b03163314806128bf57503360009081526004602052604090205460ff165b61290b5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b61139a81610718836001600160a01b031660009081526006602052604090205477ffffffffffffffffffffffffffffffffffffffffffffffff1690565b6000612952612ef1565b6000546001600160a01b031633148061297a57503360009081526004602052604090205460ff165b6129c65760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202161646d696e000000000000000000000000000000000060448201526064016107f3565b6001600160a01b038084166000908152600960205260408082205481517fa373ed4e0000000000000000000000000000000000000000000000000000000081529151931692839263a373ed4e926004808201939182900301818387803b158015612a2f57600080fd5b505af1158015612a43573d6000803e3d6000fd5b505050506000816001600160a01b03166352c49c446040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab9190615a25565b9050600061271082846001600160a01b031663e5e2abf56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b159190615a25565b612b1f9190615bb3565b612b299190615c1f565b9050600081612b3884886159de565b612b4291906159de565b90508015612c84576001600160a01b038716600090815260066020526040902054612b8890829077ffffffffffffffffffffffffffffffffffffffffffffffff166159c7565b6001600160a01b038816600090815260066020526040902080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff92909216919091179055612bf2878583612d38565b6040517f3560df8c000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b03851690633560df8c906024016020604051808303816000875af1158015612c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c769190615a25565b9450612c8487856000612d38565b836001600160a01b0316876001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb83604051612cc991815260200190565b60405180910390a35050505061200b60018055565b6000546001600160a01b031633146109e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790529151600092839290871691612dc29190615c33565b6000604051808303816000865af19150503d8060008114612dff576040519150601f19603f3d011682016040523d82523d6000602084013e612e04565b606091505b5091509150818015612e2e575080511580612e2e575080806020019051810190612e2e9190615c6e565b612e7a5760405162461bcd60e51b815260206004820152600260248201527f534100000000000000000000000000000000000000000000000000000000000060448201526064016107f3565b5050505050565b612e89614e64565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600260015403612f435760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107f3565b6002600155565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691612fdc9190615c33565b6000604051808303816000865af19150503d8060008114613019576040519150601f19603f3d011682016040523d82523d6000602084013e61301e565b606091505b50915091508180156130485750805115806130485750808060200190518101906130489190615c6e565b6130945760405162461bcd60e51b815260206004820152600360248201527f535446000000000000000000000000000000000000000000000000000000000060448201526064016107f3565b505050505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061310e612ef1565b613116614eb6565b6001600160a01b03861661316c5760405162461bcd60e51b815260206004820152601360248201527f576f6f505056323a202162617365546f6b656e0000000000000000000000000060448201526064016107f3565b6001600160a01b0383166131c25760405162461bcd60e51b815260206004820152600c60248201527f576f6f505056323a2021746f000000000000000000000000000000000000000060448201526064016107f3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316036132435760405162461bcd60e51b815260206004820152601e60248201527f576f6f505056323a2062617365546f6b656e3d3d71756f7465546f6b656e000060448201526064016107f3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038116600090815260066020526040902054869177ffffffffffffffffffffffffffffffffffffffffffffffff909116906132a590611fac565b6132af91906159c7565b10156132fd5760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202151554f5445000000000000000000000000000000000060448201526064016107f3565b6001600160a01b038616600090815260066020526040812054620186a090613345907801000000000000000000000000000000000000000000000000900461ffff1688615bb3565b61334f9190615c1f565b905061335b81876159c7565b95508060035461336b91906159de565b6003556007546040517f31e658a50000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015260009283929116906331e658a590602401608060405180830381865afa1580156133d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f99190615ca3565b9050613406898983614f09565b6007546040517fd5bade070000000000000000000000000000000000000000000000000000000081526001600160a01b038d811660048301526fffffffffffffffffffffffffffffffff84166024830152939750919450919091169063d5bade0790604401600060405180830381600087803b15801561348557600080fd5b505af1158015613499573d6000803e3d6000fd5b50505050868410156135125760405162461bcd60e51b8152602060048201526024808201527f576f6f505056323a2062617365416d6f756e745f4c545f6d696e42617365416d60448201527f6f756e740000000000000000000000000000000000000000000000000000000060648201526084016107f3565b50506001600160a01b03871660009081526006602052604090205461355290839077ffffffffffffffffffffffffffffffffffffffffffffffff166159c7565b6001600160a01b0388811660009081526006602052604080822080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff9586161790557f0000000000000000000000000000000000000000000000000000000000000000909216815220546135e3918891166159de565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166000908152600660205260409020805477ffffffffffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffff000000000000000000000000000000000000000000000000909316929092179091558416301461367957613679878584614663565b836001600160a01b0316876001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f0e8e403c2d36126272b08c75823e988381d9dc47f2f0a9a080d95f891d95c469848a6136e491906159de565b8633896136f1898f6159de565b6040805195865260208601949094526001600160a01b039283168585015291166060840152608083015260a08201879052519081900360c00190a45061373660018055565b95945050505050565b6000613749612ef1565b613751614eb6565b6001600160a01b0386166137a75760405162461bcd60e51b815260206004820152601360248201527f576f6f505056323a202162617365546f6b656e0000000000000000000000000060448201526064016107f3565b6001600160a01b0383166137fd5760405162461bcd60e51b815260206004820152600c60248201527f576f6f505056323a2021746f000000000000000000000000000000000000000060448201526064016107f3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03160361387e5760405162461bcd60e51b815260206004820152601e60248201527f576f6f505056323a2062617365546f6b656e3d3d71756f7465546f6b656e000060448201526064016107f3565b6001600160a01b038616600090815260066020526040902054859077ffffffffffffffffffffffffffffffffffffffffffffffff166138bc88611fac565b6138c691906159c7565b10156139145760405162461bcd60e51b815260206004820152600e60248201527f576f6f505056323a20214241534500000000000000000000000000000000000060448201526064016107f3565b6007546040517f31e658a50000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260009283929116906331e658a590602401608060405180830381865afa15801561397b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399f9190615ca3565b90506139ac888883615217565b6007546040517fd5bade070000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301526fffffffffffffffffffffffffffffffff84166024830152939650919450919091169063d5bade0790604401600060405180830381600087803b158015613a2b57600080fd5b505af1158015613a3f573d6000803e3d6000fd5b505050506001600160a01b038816600090815260066020526040812054909250620186a09150613a8f907801000000000000000000000000000000000000000000000000900461ffff1684615bb3565b613a999190615c1f565b9050613aa581836159c7565b915084821015613b1d5760405162461bcd60e51b815260206004820152602660248201527f576f6f505056323a2071756f7465416d6f756e745f4c545f6d696e51756f746560448201527f416d6f756e74000000000000000000000000000000000000000000000000000060648201526084016107f3565b80600354613b2b91906159de565b6003556001600160a01b038716600090815260066020526040902054613b6c90879077ffffffffffffffffffffffffffffffffffffffffffffffff166159de565b6001600160a01b0388811660009081526006602052604080822080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff9586161790557f0000000000000000000000000000000000000000000000000000000000000000909216815220548291613bff918591166159c7565b613c0991906159c7565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166000908152600660205260409020805477ffffffffffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921790915584163014613cbf57613cbf7f00000000000000000000000000000000000000000000000000000000000000008584614663565b836001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b03167f0e8e403c2d36126272b08c75823e988381d9dc47f2f0a9a080d95f891d95c46989863389888a6136f191906159de565b6000613d38612ef1565b613d40614eb6565b6001600160a01b03871615801590613d8a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614155b613dd65760405162461bcd60e51b815260206004820152601460248201527f576f6f505056323a202162617365546f6b656e3100000000000000000000000060448201526064016107f3565b6001600160a01b03861615801590613e2057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b613e6c5760405162461bcd60e51b815260206004820152601460248201527f576f6f505056323a202162617365546f6b656e3200000000000000000000000060448201526064016107f3565b856001600160a01b0316876001600160a01b031603613ecd5760405162461bcd60e51b815260206004820152601560248201527f576f6f505056323a2062617365313d3d6261736532000000000000000000000060448201526064016107f3565b6001600160a01b038316613f235760405162461bcd60e51b815260206004820152600c60248201527f576f6f505056323a2021746f000000000000000000000000000000000000000060448201526064016107f3565b6001600160a01b038716600090815260066020526040902054859077ffffffffffffffffffffffffffffffffffffffffffffffff16613f6189611fac565b613f6b91906159c7565b1015613fb95760405162461bcd60e51b815260206004820152601760248201527f576f6f505056323a202142415345315f42414c414e434500000000000000000060448201526064016107f3565b6007546040517f31e658a50000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015260009216906331e658a590602401608060405180830381865afa15801561401d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140419190615ca3565b6007546040517f31e658a50000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152929350600092909116906331e658a590602401608060405180830381865afa1580156140aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ce9190615ca3565b9050600080600060026140e9866020015186602001516155b6565b6140f39190615d24565b6001600160a01b03808e1660009081526006602052604080822054928f1682528120549293509161414c9161ffff78010000000000000000000000000000000000000000000000009182900481169291909104166155e0565b67ffffffffffffffff83166020808901829052870152905060006141718e8d89615217565b8092508195505050600760009054906101000a90046001600160a01b03166001600160a01b031663d5bade078f836040518363ffffffff1660e01b81526004016141e29291906001600160a01b039290921682526fffffffffffffffffffffffffffffffff16602082015260400190565b600060405180830381600087803b1580156141fc57600080fd5b505af1158015614210573d6000803e3d6000fd5b50505050620186a08261ffff16856142289190615bb3565b6142329190615c1f565b9450505050818161424391906159c7565b90508160035461425391906159de565b6003556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600660205260409020546142b490839077ffffffffffffffffffffffffffffffffffffffffffffffff166159c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660009081526006602052604080822080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff958616179055918e1681522054614345918b91166159de565b6001600160a01b038c16600090815260066020526040812080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff93909316929092179091556143b08b8386614f09565b6007546040517fd5bade070000000000000000000000000000000000000000000000000000000081526001600160a01b038f811660048301526fffffffffffffffffffffffffffffffff84166024830152939950919350919091169063d5bade0790604401600060405180830381600087803b15801561442f57600080fd5b505af1158015614443573d6000803e3d6000fd5b50505050888610156144bd5760405162461bcd60e51b815260206004820152602660248201527f576f6f505056323a206261736532416d6f756e745f4c545f6d696e426173653260448201527f416d6f756e74000000000000000000000000000000000000000000000000000060648201526084016107f3565b506001600160a01b038a166000908152600660205260409020546144fc90869077ffffffffffffffffffffffffffffffffffffffffffffffff166159c7565b6001600160a01b038b8116600090815260066020526040902080547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff93909316929092179091553090881614614571576145718a8887614663565b866001600160a01b03168a6001600160a01b03168c6001600160a01b03167f0e8e403c2d36126272b08c75823e988381d9dc47f2f0a9a080d95f891d95c4698c89338c89896145c091906159de565b6040805195865260208601949094526001600160a01b039283168585015291166060840152608083015260a08201889052519081900360c00190a4505050506112d260018055565b614610614eb6565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ed43390565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916146ed9190615c33565b6000604051808303816000865af19150503d806000811461472a576040519150601f19603f3d011682016040523d82523d6000602084013e61472f565b606091505b50915091508180156147595750805115806147595750808060200190518101906147599190615c6e565b612e7a5760405162461bcd60e51b815260206004820152600260248201527f535400000000000000000000000000000000000000000000000000000000000060448201526064016107f3565b60006147af614eb6565b6001600160a01b038316600090815260066020526040812054620186a0906147f7907801000000000000000000000000000000000000000000000000900461ffff1685615bb3565b6148019190615c1f565b905061480d81846159c7565b6007546040517f31e658a50000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152929550600092909116906331e658a590602401608060405180830381865afa158015614876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061489a9190615ca3565b90506148a7858583614f09565b5095945050505050565b60006148bb614eb6565b6007546040517f31e658a50000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260009216906331e658a590602401608060405180830381865afa15801561491f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149439190615ca3565b9050614950848483615217565b506001600160a01b03851660009081526006602052604081205491935090620186a09061499d907801000000000000000000000000000000000000000000000000900461ffff1685615bb3565b6149a79190615c1f565b905061373681846159c7565b6000806149be614eb6565b6001600160a01b03851615806149db57506001600160a01b038416155b80614a1757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b80614a5357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15614a6357506000905080614c59565b6007546040517f31e658a50000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906331e658a590602401608060405180830381865afa158015614ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aeb9190615ca3565b6007546040517f31e658a50000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906331e658a590602401608060405180830381865afa158015614b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b789190615ca3565b905060006002614b90846020015184602001516155b6565b614b9a9190615d24565b6001600160a01b03808a1660009081526006602052604080822054928b16825281205492935091614bf39161ffff78010000000000000000000000000000000000000000000000009182900481169291909104166155e0565b67ffffffffffffffff8316602080870182905285015290506000614c188a8987615217565b509050620186a0614c2d61ffff841683615bb3565b614c379190615c1f565b9550614c4386826159c7565b9050614c50898286614f09565b50965050505050505b935093915050565b604080516000808252602082019092526001600160a01b038416908390604051614c8b9190615c33565b60006040518083038185875af1925050503d8060008114614cc8576040519150601f19603f3d011682016040523d82523d6000602084013e614ccd565b606091505b5050905080614d1e5760405162461bcd60e51b815260206004820152600360248201527f535445000000000000000000000000000000000000000000000000000000000060448201526064016107f3565b505050565b604080513060248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790529051600091829182916001600160a01b03861691614da89190615c33565b600060405180830381855afa9150503d8060008114614de3576040519150601f19603f3d011682016040523d82523d6000602084013e614de8565b606091505b5091509150818015614dfc57506020815110155b614e485760405162461bcd60e51b815260206004820152601160248201527f576f6f505056323a202142414c414e434500000000000000000000000000000060448201526064016107f3565b80806020019051810190614e5c9190615a25565b949350505050565b60025460ff166109e85760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107f3565b60025460ff16156109e85760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016107f3565b6000808260600151614f5d5760405162461bcd60e51b815260206004820152601960248201527f576f6f505056323a20214f5241434c455f4645415349424c450000000000000060448201526064016107f3565b82516fffffffffffffffffffffffffffffffff16614fbd5760405162461bcd60e51b815260206004820152601560248201527f576f6f505056323a20214f524143455f5052494345000000000000000000000060448201526064016107f3565b6000614fc8866117be565b6001600160a01b0387166000908152600660205260408120600101549192509070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1686111561505d5760405162461bcd60e51b815260206004820152601a60248201527f576f6f505056323a20216d61784e6f74696f6e616c56616c756500000000000060448201526064016107f3565b816020015167ffffffffffffffff16856040015167ffffffffffffffff16876150869190615bb3565b6150909190615c1f565b6001600160a01b0388166000908152600660205260409020600101549091506fffffffffffffffffffffffffffffffff168111156151105760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202167616d6d61000000000000000000000000000000000060448201526064016107f3565b816020015167ffffffffffffffff16670de0b6b3a7640000866020015167ffffffffffffffff1683670de0b6b3a764000061514b91906159c7565b61515591906159c7565b87600001516fffffffffffffffffffffffffffffffff16856000015167ffffffffffffffff16866040015167ffffffffffffffff168b6151959190615bb3565b61519f9190615bb3565b6151a99190615c1f565b6151b39190615bb3565b6151bd9190615c1f565b6151c79190615c1f565b93506151db81670de0b6b3a76400006159c7565b8551615201906fffffffffffffffffffffffffffffffff16670de0b6b3a7640000615bb3565b61520b9190615c1f565b92505050935093915050565b600080826060015161526b5760405162461bcd60e51b815260206004820152601960248201527f576f6f505056323a20214f5241434c455f4645415349424c450000000000000060448201526064016107f3565b82516fffffffffffffffffffffffffffffffff166152cb5760405162461bcd60e51b815260206004820152601560248201527f576f6f505056323a20214f524143455f5052494345000000000000000000000060448201526064016107f3565b60006152d6866117be565b9050600080826000015167ffffffffffffffff16836040015167ffffffffffffffff16846020015167ffffffffffffffff1688600001516fffffffffffffffffffffffffffffffff168a61532a9190615bb3565b6153349190615bb3565b61533e9190615c1f565b6153489190615c1f565b6001600160a01b03891660009081526006602052604090206001015490915070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111156153dc5760405162461bcd60e51b815260206004820152601a60248201527f576f6f505056323a20216d61784e6f74696f6e616c56616c756500000000000060448201526064016107f3565b826040015167ffffffffffffffff16836000015167ffffffffffffffff16876040015167ffffffffffffffff1688600001516fffffffffffffffffffffffffffffffff168a61542b9190615bb3565b6154359190615bb3565b61543f9190615c1f565b6154499190615c1f565b6001600160a01b0389166000908152600660205260409020600101549092506fffffffffffffffffffffffffffffffff168211156154c95760405162461bcd60e51b815260206004820152600f60248201527f576f6f505056323a202167616d6d61000000000000000000000000000000000060448201526064016107f3565b826040015167ffffffffffffffff16670de0b6b3a7640000876020015167ffffffffffffffff1684670de0b6b3a764000061550491906159c7565b61550e91906159c7565b856000015167ffffffffffffffff16866020015167ffffffffffffffff168a600001516fffffffffffffffffffffffffffffffff168c61554e9190615bb3565b6155589190615bb3565b6155629190615c1f565b61556c9190615bb3565b6155769190615c1f565b6155809190615c1f565b8651909550670de0b6b3a764000091506fffffffffffffffffffffffffffffffff166155ac83836159c7565b6152019190615bb3565b60008167ffffffffffffffff168367ffffffffffffffff16116155d95781611da7565b5090919050565b60008161ffff168361ffff16116155d95781611da7565b6001600160a01b038116811461139a57600080fd5b60006020828403121561561e57600080fd5b8135611da7816155f7565b6000806040838503121561563c57600080fd5b8235615647816155f7565b91506020830135615657816155f7565b809150509250929050565b6000806040838503121561567557600080fd5b8235615680816155f7565b946020939093013593505050565b801515811461139a57600080fd5b600080604083850312156156af57600080fd5b82356156ba816155f7565b915060208301356156578161568e565b803561ffff8116811461235757600080fd5b600080604083850312156156ef57600080fd5b82356156fa816155f7565b9150615708602084016156ca565b90509250929050565b6fffffffffffffffffffffffffffffffff8116811461139a57600080fd5b6000806040838503121561574257600080fd5b823561574d816155f7565b9150602083013561565781615711565b60008060008060008060c0878903121561577657600080fd5b8635615781816155f7565b95506020870135615791816155f7565b9450604087013593506060870135925060808701356157af816155f7565b915060a08701356157bf816155f7565b809150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615843576158436157cd565b604052919050565b6000602080838503121561585e57600080fd5b823567ffffffffffffffff8082111561587657600080fd5b818501915085601f83011261588a57600080fd5b81358181111561589c5761589c6157cd565b8060051b91506158ad8483016157fc565b81815291830184019184810190888411156158c757600080fd5b938501935b838510156158f157843592506158e1836155f7565b82825293850193908501906158cc565b98975050505050505050565b6000806000806080858703121561591357600080fd5b843561591e816155f7565b935061592c602086016156ca565b9250604085013561593c81615711565b9150606085013561594c81615711565b939692955090935050565b60008060006060848603121561596c57600080fd5b8335615977816155f7565b92506020840135615987816155f7565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156159d9576159d9615998565b500390565b600082198211156159f1576159f1615998565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215615a3757600080fd5b5051919050565b600060208284031215615a5057600080fd5b815160ff81168114611da757600080fd5b600181815b80851115615aa2578167ffffffffffffffff04821115615a8857615a88615998565b80851615615a9557918102915b93841c9390800290615a66565b509250929050565b600082615ab95750600161200b565b81615ac65750600061200b565b8160018114615adc5760028114615ae657615b1b565b600191505061200b565b60ff841115615af757615af7615998565b6001841b915067ffffffffffffffff821115615b1557615b15615998565b5061200b565b5060208310610133831016604e8410600b8410161715615b51575081810a67ffffffffffffffff811115611ff057611ff0615998565b615b5b8383615a61565b8067ffffffffffffffff04821115615b7557615b75615998565b029392505050565b6000611da760ff841667ffffffffffffffff8416615aaa565b600060208284031215615ba857600080fd5b8151611da7816155f7565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615beb57615beb615998565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615c2e57615c2e615bf0565b500490565b6000825160005b81811015615c545760208186018101518583015201615c3a565b81811115615c63576000828501525b509190910192915050565b600060208284031215615c8057600080fd5b8151611da78161568e565b805167ffffffffffffffff8116811461235757600080fd5b600060808284031215615cb557600080fd5b6040516080810181811067ffffffffffffffff82111715615cd857615cd86157cd565b6040528251615ce681615711565b8152615cf460208401615c8b565b6020820152615d0560408401615c8b565b60408201526060830151615d188161568e565b60608201529392505050565b600067ffffffffffffffff80841680615d3f57615d3f615bf0565b9216919091049291505056fea2646970667358221220e3c7d1e8bba3ae4b470dd28bd6adb05fbbec0ebd2db3b708259d83dd1e0ad06c64736f6c634300080e0033000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831