0 txs
1.3k calls
constructor
constructor()
functions
approvedDepositTokens
viewfunction approvedDepositTokens(address) view returns (bool)
approvedRewardTokens
viewfunction approvedRewardTokens(address) view returns (bool)
bonusEndBlock
viewfunction bonusEndBlock() view returns (uint256)
bonusMultiplier
viewfunction bonusMultiplier() view returns (uint256)
currentRewardToken
viewfunction currentRewardToken() view returns (address)
freebaseNFT
viewfunction freebaseNFT() view returns (address)
getMultiplier
viewfunction getMultiplier(uint256 _from, uint256 _to) view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingRewards
viewfunction pendingRewards(uint256 _pid, address _user) view returns (uint256)
pid
viewfunction pid() view returns (uint256)
poolInfo
viewfunction poolInfo(uint256) view returns (address token, uint256 allocPoint, uint256 lastRewardBlock, uint256 accRewardPerShare)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rewardPerBlock
viewfunction rewardPerBlock() view returns (uint256)
startBlock
viewfunction startBlock() view returns (uint256)
totalAllocPoint
viewfunction totalAllocPoint() view returns (uint256)
totalUnclaimedRewards
viewfunction totalUnclaimedRewards(address) view returns (uint256)
unclaimedRewards
viewfunction unclaimedRewards(address, address) view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userInfo
viewfunction userInfo(uint256, address) view returns (uint256 amount, uint256 rewardDebt)
addDepositToken
nonpayablefunction addDepositToken(uint256 _allocPoint, address _token, bool _withUpdate)
addRewardToken
nonpayablefunction addRewardToken(address _rewardToken, uint256 _transferAmount)
claimUnclaimedRewards
nonpayablefunction claimUnclaimedRewards(address _token)
deposit
nonpayablefunction deposit(uint256 _pid, uint256 _amount)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(uint256 _pid)
initialize
nonpayablefunction initialize(uint256 _rewardPerBlock, uint256 _startBlock, uint256 _bonusEndBlock, address _freebaseNft)
massUpdatePools
nonpayablefunction massUpdatePools()
renounceOwnership
nonpayablefunction renounceOwnership()
setBonusMultiplier
nonpayablefunction setBonusMultiplier(uint256 _newBonusMultiplier)
setRewardAllocationPoint
nonpayablefunction setRewardAllocationPoint(uint256 _pid, uint256 _allocPoint, bool _withUpdate)
setRewardToken
nonpayablefunction setRewardToken(address _rewardToken)
topUpRewardToken
nonpayablefunction topUpRewardToken(uint256 _amount, address _rewardToken)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePool
nonpayablefunction updatePool(uint256 _pid)
updateRewardPerBlock
nonpayablefunction updateRewardPerBlock(uint256 _rewardPerBlock)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(uint256 _pid, uint256 _amount)
withdrawRewardToken
nonpayablefunction withdrawRewardToken(address _token)
events
BonusMultiplierSet
event BonusMultiplierSet(uint256 oldBonusMultiplier, uint256 newBonusMultiplier)
ClaimUnclaimedRewards
event ClaimUnclaimedRewards(address indexed user, address indexed token, uint256 amount)
Deposit
event Deposit(address indexed user, uint256 indexed pid, uint256 amount)
EmergencyWithdraw
event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardAllocationPointSet
event RewardAllocationPointSet(uint256 indexed pid, uint256 allocPoint, uint256 totalAllocPoint)
RewardPerBlockUpdated
event RewardPerBlockUpdated(uint256 rewardPerBlock)
RewardTokenAdded
event RewardTokenAdded(address indexed token, bool approved)
RewardTokenSet
event RewardTokenSet(address indexed token)
RewardTokenToppedUp
event RewardTokenToppedUp(uint256 amount, address indexed token)
RewardTokenWithdrawn
event RewardTokenWithdrawn(address indexed token, uint256 amount)
RewardTransferred
event RewardTransferred(address indexed user, uint256 amount)
TokenAdded
event TokenAdded(uint256 indexed poolId, address indexed token, uint256 allocPoint, bool approved)
UnclaimedRewardsUpdated
event UnclaimedRewardsUpdated(address indexed token, address indexed user, uint256 amount)
Upgraded
event Upgraded(address indexed implementation)
Withdraw
event Withdraw(address indexed user, uint256 indexed pid, uint256 amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AddressZero
error AddressZero()
AlreadyApproved
error AlreadyApproved(address token)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InsufficientBalance
error InsufficientBalance(address user, uint256 balance, uint256 amount)
InvalidAmount
error InvalidAmount()
InvalidBonusMultiplier
error InvalidBonusMultiplier()
InvalidInitialization
error InvalidInitialization()
InvalidPoolId
error InvalidPoolId(uint256 pid)
InvalidStartAndBonusEndBlocks
error InvalidStartAndBonusEndBlocks()
InvalidTokenDecimals
error InvalidTokenDecimals(address token)
NotApproved
error NotApproved(address token)
NotEnoughRewardTokensToWithdraw
error NotEnoughRewardTokensToWithdraw(address token)
NotInitializing
error NotInitializing()
NoUnclaimedRewards
error NoUnclaimedRewards()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516127c26200010460003960008181611e3901528181611e620152611fa301526127c26000f3fe60806040526004361061021a5760003560e01c8063715018a611610123578063ad3cb1cc116100ab578063e94631d21161006f578063e94631d2146106f9578063f106845414610726578063f2fde38b1461073c578063f42b192c1461075c578063fd58e63a1461077c57600080fd5b8063ad3cb1cc1461063b578063c780682f14610679578063d18df53c14610699578063d871424b146106b9578063e2bbb158146106d957600080fd5b80638aee8127116100f25780638aee8127146105545780638da5cb5b146105745780638dbb1e3a146105b157806393f1a40b146105d1578063a8b973a11461062557600080fd5b8063715018a6146104d957806380d1c67b146104ee57806383ca20141461051e5780638ae39cac1461053e57600080fd5b806348cd4cb1116101a657806352d1902d1161017557806352d1902d1461042f5780635312ea8e146104445780635d7e13f814610464578063630b5ba1146104a45780636736e8ca146104b957600080fd5b806348cd4cb1146103c65780634df46cba146103dc5780634f1ef286146103fc57806351eb05a61461040f57600080fd5b806317caf6f1116101ed57806317caf6f1146103225780631aed6553146103385780631f8d519d1461034e57806343f178361461036e578063441a3e70146103a657600080fd5b806301f8a9761461021f57806307b14524146102415780630e3802e91461028c5780631526fe27146102ac575b600080fd5b34801561022b57600080fd5b5061023f61023a36600461238d565b61079c565b005b34801561024d57600080fd5b5061027961025c3660046123c2565b600c60209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561029857600080fd5b5061023f6102a73660046123f5565b6107e7565b3480156102b857600080fd5b506102f86102c736600461238d565b60086020526000908152604090208054600182015460028301546003909301546001600160a01b0390921692909184565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610283565b34801561032e57600080fd5b5061027960055481565b34801561034457600080fd5b5061027960015481565b34801561035a57600080fd5b5061023f61036936600461241f565b610988565b34801561037a57600080fd5b5060075461038e906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b3480156103b257600080fd5b5061023f6103c136600461245e565b610b19565b3480156103d257600080fd5b5061027960065481565b3480156103e857600080fd5b5061023f6103f7366004612480565b610c73565b61023f61040a3660046124b1565b610df5565b34801561041b57600080fd5b5061023f61042a36600461238d565b610e14565b34801561043b57600080fd5b50610279610f69565b34801561045057600080fd5b5061023f61045f36600461238d565b610f86565b34801561047057600080fd5b5061049461047f366004612480565b600b6020526000908152604090205460ff1681565b6040519015158152602001610283565b3480156104b057600080fd5b5061023f611037565b3480156104c557600080fd5b5061023f6104d4366004612480565b611056565b3480156104e557600080fd5b5061023f6111c0565b3480156104fa57600080fd5b50610494610509366004612480565b600a6020526000908152604090205460ff1681565b34801561052a57600080fd5b5061023f610539366004612581565b6111d4565b34801561054a57600080fd5b5061027960025481565b34801561056057600080fd5b5061023f61056f366004612480565b611402565b34801561058057600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661038e565b3480156105bd57600080fd5b506102796105cc36600461245e565b6114c1565b3480156105dd57600080fd5b506106106105ec3660046125c1565b60096020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610283565b34801561063157600080fd5b5061027960035481565b34801561064757600080fd5b5061066c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102839190612608565b34801561068557600080fd5b5061023f6106943660046125c1565b611535565b3480156106a557600080fd5b506102796106b43660046125c1565b61161a565b3480156106c557600080fd5b5061023f6106d436600461263b565b6117be565b3480156106e557600080fd5b5061023f6106f436600461245e565b611876565b34801561070557600080fd5b50610279610714366004612480565b600d6020526000908152604090205481565b34801561073257600080fd5b5061027960045481565b34801561074857600080fd5b5061023f610757366004612480565b611a6b565b34801561076857600080fd5b5060005461038e906001600160a01b031681565b34801561078857600080fd5b5061023f61079736600461238d565b611aa9565b6107a4611b17565b60028190556107b1611037565b6040518181527f5ed0ffa545a9eae0edd36b74378d16454cf385281383c7632ad5b2ebf3ab2b929060200160405180910390a150565b6107ef611b17565b816001600160a01b03811661081757604051639fabe1c160e01b815260040160405180910390fd5b82806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087a9190612669565b60ff166012146108ad57604051639236bba760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b0384166000908152600a602052604090205460ff16156108f257604051633040d2cb60e21b81526001600160a01b03851660048201526024016108a4565b826000036109135760405163162908e360e11b815260040160405180910390fd5b6001600160a01b0384166000818152600a60205260409020805460ff1916600117905561094290333086611b72565b604051600181526001600160a01b038516907f86caf602676e3d58f39798b816844b16895db3cb0d0906a98e8a63963ed18d8b906020015b60405180910390a250505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156109ce5750825b905060008267ffffffffffffffff1660011480156109eb5750303b155b9050811580156109f9575080155b15610a175760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a4157845460ff60401b1916600160401b1785555b856001600160a01b038116610a6957604051639fabe1c160e01b815260040160405180910390fd5b878910610a895760405163e889f2f760e01b815260040160405180910390fd5b610a9233611bdf565b506002899055600187815560068990556000600581905560039190915580546001600160a01b0319166001600160a01b0388161790558315610b0e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b816004548110610b3f5760405163d531737d60e01b8152600481018290526024016108a4565b6000838152600860209081526040808320600983528184203385529092529091208054841115610b9557805460405163db42144d60e01b81523360048201526024810191909152604481018590526064016108a4565b610b9e85610e14565b6000816001015464e8d4a5100084600301548460000154610bbf91906126a2565b610bc991906126b9565b610bd391906126db565b905084826000016000828254610be991906126db565b90915550506003830154825464e8d4a5100091610c05916126a2565b610c0f91906126b9565b6001830155610c1e3382611bf0565b8254610c34906001600160a01b03163387611dfd565b604051858152869033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a3505050505050565b610c7b611b17565b806001600160a01b038116610ca357604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b0382166000908152600a602052604090205460ff16610ce7576040516301952d1b60e31b81526001600160a01b03831660048201526024016108a4565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5291906126ee565b6001600160a01b0384166000908152600d6020526040902054909150811015610d995760405163f44abe6d60e01b81526001600160a01b03841660048201526024016108a4565b610dad6001600160a01b0384163383611dfd565b826001600160a01b03167f5991a08bb51d1fc3f552255ed446f040dca378ad3ff91763507b63b185eb5d2e82604051610de891815260200190565b60405180910390a2505050565b610dfd611e2e565b610e0682611ed3565b610e108282611edb565b5050565b806004548110610e3a5760405163d531737d60e01b8152600481018290526024016108a4565b600082815260086020526040902060028101544311610e5857505050565b80546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec491906126ee565b9050801580610ed557506001820154155b15610ee65750436002909101555050565b6000610ef68360020154436114c1565b90506000600554846001015460025484610f1091906126a2565b610f1a91906126a2565b610f2491906126b9565b905082610f368264e8d4a510006126a2565b610f4091906126b9565b846003016000828254610f539190612707565b9091555050436002909401939093555050505050565b6000610f73611f98565b5060008051602061276d83398151915290565b806004548110610fac5760405163d531737d60e01b8152600481018290526024016108a4565b600082815260086020908152604080832060098352818420338086529352908320805484825560018201949094558154919390929091610ff8916001600160a01b039091169083611dfd565b604051818152859033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595906020015b60405180910390a35050505050565b60045460005b81811015610e105761104e81610e14565b60010161103d565b336000908152600c602090815260408083206001600160a01b03851684529091528120549081900361109b57604051633a5a2b2160e01b815260040160405180910390fd5b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156110e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110591906126ee565b101561112f5760405163f44abe6d60e01b81526001600160a01b03831660048201526024016108a4565b336000908152600c602090815260408083206001600160a01b03861684528252808320839055600d9091528120805483929061116c9084906126db565b9091555061117c90503382611bf0565b6040518181526001600160a01b0383169033907f670e1ab5f3524e4c9d0d8a7494a7b20d6d647e2b3de8c0963d510f5b01357ef09060200160405180910390a35050565b6111c8611b17565b6111d26000611fe1565b565b6111dc611b17565b816001600160a01b03811661120457604051639fabe1c160e01b815260040160405180910390fd5b82806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190612669565b60ff1660121461129557604051639236bba760e01b81526001600160a01b03821660048201526024016108a4565b6001600160a01b0384166000908152600b602052604090205460ff16156112da57604051633040d2cb60e21b81526001600160a01b03851660048201526024016108a4565b6001600160a01b0384166000908152600b60205260409020805460ff19166001179055821561130b5761130b611037565b6000600654431161131e57600654611320565b435b905085600560008282546113349190612707565b9091555050604080516080810182526001600160a01b0387811680835260208084018b81528486018781526000606087018181526004805483526008865291899020975188546001600160a01b03191697169690961787559151600180880191909155905160028701559351600390950194909455925484518b8152938401929092529290917f8bdf307e6b0d4478fcb9d8b9997f4911bfe0f174eaa29a4bc1dd9fa708a6bc71910160405180910390a3600480549060006113f58361271a565b9190505550505050505050565b61140a611b17565b806001600160a01b03811661143257604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b0382166000908152600a602052604090205460ff16611476576040516301952d1b60e31b81526001600160a01b03831660048201526024016108a4565b600780546001600160a01b0319166001600160a01b0384169081179091556040517f2d6b04df9b7d358407d1a014f1114b064add34c19d63d395db155a7e533e967a90600090a25050565b600060015482116114ea576003546114d984846126db565b6114e391906126a2565b905061152f565b60015483106114fd576114e383836126db565b60015461150a90836126db565b6003548460015461151b91906126db565b61152591906126a2565b6114e39190612707565b92915050565b61153d611b17565b806001600160a01b03811661156557604051639fabe1c160e01b815260040160405180910390fd5b826000036115865760405163162908e360e11b815260040160405180910390fd5b6001600160a01b0382166000908152600a602052604090205460ff166115ca576040516301952d1b60e31b81526001600160a01b03831660048201526024016108a4565b6115df6001600160a01b038316333086611b72565b816001600160a01b03167f5a9c8112bc28846ac9ad522ea8cfce60bc88c5af2c8213722fa69bdbc74c8cd884604051610de891815260200190565b6000816001600160a01b03811661164457604051639fabe1c160e01b815260040160405180910390fd5b83600454811061166a5760405163d531737d60e01b8152600481018290526024016108a4565b6000858152600860209081526040808320600983528184206001600160a01b03898116865293528184206003820154825493516370a0823160e01b815230600482015292959194909391929116906370a0823190602401602060405180830381865afa1580156116de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170291906126ee565b905083600201544311801561171657508015155b1561178457600061172b8560020154436114c1565b9050600060055486600101546002548461174591906126a2565b61174f91906126a2565b61175991906126b9565b90508261176b8264e8d4a510006126a2565b61177591906126b9565b61177f9085612707565b935050505b6001830154835464e8d4a510009061179d9085906126a2565b6117a791906126b9565b6117b191906126db565b9998505050505050505050565b6117c6611b17565b8260045481106117ec5760405163d531737d60e01b8152600481018290526024016108a4565b81156117fa576117fa611037565b600084815260086020526040902060010154600554849161181a916126db565b6118249190612707565b6005908155600085815260086020908152604091829020600101869055915481518681529283015285917f412f080b82a3b77aa2e3d1d27f9d857dbe7203be255c2d7c27f7dc81de6b9cee910161097a565b81600454811061189c5760405163d531737d60e01b8152600481018290526024016108a4565b6000838152600860209081526040808320600983528184203385529092529091206118c685610e14565b805415611910576000816001015464e8d4a51000846003015484600001546118ee91906126a2565b6118f891906126b9565b61190291906126db565b905061190e3382611bf0565b505b838160000160008282546119249190612707565b90915550506003820154815464e8d4a5100091611940916126a2565b61194a91906126b9565b60018201558154611966906001600160a01b0316333087611b72565b6000546040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906126ee565b600003611a37576000546040516335313c2160e11b81523360048201526001600160a01b0390911690636a62784290602401600060405180830381600087803b158015611a1e57600080fd5b505af1158015611a32573d6000803e3d6000fd5b505050505b604051848152859033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590602001611028565b611a73611b17565b6001600160a01b038116611a9d57604051631e4fbdf760e01b8152600060048201526024016108a4565b611aa681611fe1565b50565b611ab1611b17565b80600003611ad257604051633fdf4e0b60e01b815260040160405180910390fd5b600380549082905560408051828152602081018490527ff06ec8b65b1a4808a665efef90d71d17d90caa3d326f01dbd48f07962a05cd94910160405180910390a15050565b33611b497f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146111d25760405163118cdaa760e01b81523360048201526024016108a4565b6040516001600160a01b038481166024830152838116604483015260648201839052611bd99186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612052565b50505050565b611be76120b5565b611aa6816120fe565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611c39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5d91906126ee565b905080821115611da657600754611c7e906001600160a01b03168483611dfd565b826001600160a01b03167f9c944f9bf53dd7797190e4b01a2e438a604c4d8f33a684d386a7e9376929614182604051611cb991815260200190565b60405180910390a26000611ccd82846126db565b6001600160a01b038086166000908152600c60209081526040808320600754909416835292905290812080549293508392909190611d0c908490612707565b90915550506007546001600160a01b03166000908152600d602052604081208054839290611d3b908490612707565b90915550506007546001600160a01b038581166000818152600c60209081526040808320949095168083529381529084902054935193845290927f354299d646c4b1eb7829e5559a2326635dc9ebc1033239b03b3ea3686be3f80e910160405180910390a350505050565b600754611dbd906001600160a01b03168484611dfd565b826001600160a01b03167f9c944f9bf53dd7797190e4b01a2e438a604c4d8f33a684d386a7e9376929614183604051610de891815260200190565b505050565b6040516001600160a01b03838116602483015260448201839052611df891859182169063a9059cbb90606401611ba7565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611eb557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ea960008051602061276d833981519152546001600160a01b031690565b6001600160a01b031614155b156111d25760405163703e46dd60e11b815260040160405180910390fd5b611aa6611b17565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f35575060408051601f3d908101601f19168201909252611f32918101906126ee565b60015b611f5d57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016108a4565b60008051602061276d8339815191528114611f8e57604051632a87526960e21b8152600481018290526024016108a4565b611df88383612106565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d25760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006120676001600160a01b0384168361215c565b9050805160001415801561208c57508080602001905181019061208a9190612733565b155b15611df857604051635274afe760e01b81526001600160a01b03841660048201526024016108a4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166111d257604051631afcd79f60e31b815260040160405180910390fd5b611a736120b5565b61210f82612171565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561215457611df882826121d6565b610e1061224c565b606061216a8383600061226b565b9392505050565b806001600160a01b03163b6000036121a757604051634c9c8ce360e01b81526001600160a01b03821660048201526024016108a4565b60008051602061276d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516121f39190612750565b600060405180830381855af49150503d806000811461222e576040519150601f19603f3d011682016040523d82523d6000602084013e612233565b606091505b5091509150612243858383612308565b95945050505050565b34156111d25760405163b398979f60e01b815260040160405180910390fd5b6060814710156122905760405163cd78605960e01b81523060048201526024016108a4565b600080856001600160a01b031684866040516122ac9190612750565b60006040518083038185875af1925050503d80600081146122e9576040519150601f19603f3d011682016040523d82523d6000602084013e6122ee565b606091505b50915091506122fe868383612308565b9695505050505050565b60608261231d5761231882612364565b61216a565b815115801561233457506001600160a01b0384163b155b1561235d57604051639996b31560e01b81526001600160a01b03851660048201526024016108a4565b508061216a565b8051156123745780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006020828403121561239f57600080fd5b5035919050565b80356001600160a01b03811681146123bd57600080fd5b919050565b600080604083850312156123d557600080fd5b6123de836123a6565b91506123ec602084016123a6565b90509250929050565b6000806040838503121561240857600080fd5b612411836123a6565b946020939093013593505050565b6000806000806080858703121561243557600080fd5b843593506020850135925060408501359150612453606086016123a6565b905092959194509250565b6000806040838503121561247157600080fd5b50508035926020909101359150565b60006020828403121561249257600080fd5b61216a826123a6565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156124c457600080fd5b6124cd836123a6565b9150602083013567ffffffffffffffff808211156124ea57600080fd5b818501915085601f8301126124fe57600080fd5b8135818111156125105761251061249b565b604051601f8201601f19908116603f011681019083821181831017156125385761253861249b565b8160405282815288602084870101111561255157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8015158114611aa657600080fd5b60008060006060848603121561259657600080fd5b833592506125a6602085016123a6565b915060408401356125b681612573565b809150509250925092565b600080604083850312156125d457600080fd5b823591506123ec602084016123a6565b60005b838110156125ff5781810151838201526020016125e7565b50506000910152565b60208152600082518060208401526126278160408501602087016125e4565b601f01601f19169190910160400192915050565b60008060006060848603121561265057600080fd5b833592506020840135915060408401356125b681612573565b60006020828403121561267b57600080fd5b815160ff8116811461216a57600080fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761152f5761152f61268c565b6000826126d657634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561152f5761152f61268c565b60006020828403121561270057600080fd5b5051919050565b8082018082111561152f5761152f61268c565b60006001820161272c5761272c61268c565b5060010190565b60006020828403121561274557600080fd5b815161216a81612573565b600082516127628184602087016125e4565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220dcb39262b05f2faac0710d45d5febf629abbdddaf3d7d0ff0f2a7b6ac37d7e7164736f6c63430008170033