More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 210 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 20754576 | 91 days ago | IN | 0 ETH | 0.00019661 | ||||
Unstake | 20211649 | 167 days ago | IN | 0 ETH | 0.00066059 | ||||
Unstake | 19365965 | 286 days ago | IN | 0 ETH | 0.01035532 | ||||
Claim | 19365957 | 286 days ago | IN | 0 ETH | 0.00991576 | ||||
Unstake | 18931202 | 347 days ago | IN | 0 ETH | 0.00219473 | ||||
Claim | 18931200 | 347 days ago | IN | 0 ETH | 0.00219515 | ||||
Unstake | 18098682 | 463 days ago | IN | 0 ETH | 0.00130329 | ||||
Claim | 18098671 | 463 days ago | IN | 0 ETH | 0.00118593 | ||||
Unstake | 17958017 | 483 days ago | IN | 0 ETH | 0.0026913 | ||||
Unstake | 17879184 | 494 days ago | IN | 0 ETH | 0.0032531 | ||||
Claim | 17530618 | 543 days ago | IN | 0 ETH | 0.00322913 | ||||
Unstake | 17332747 | 571 days ago | IN | 0 ETH | 0.00353072 | ||||
Claim | 17332735 | 571 days ago | IN | 0 ETH | 0.00325464 | ||||
Unstake | 17286114 | 577 days ago | IN | 0 ETH | 0.00462358 | ||||
Claim | 17286108 | 577 days ago | IN | 0 ETH | 0.00527003 | ||||
Unstake | 17256471 | 581 days ago | IN | 0 ETH | 0.00516187 | ||||
Claim | 17256468 | 581 days ago | IN | 0 ETH | 0.00449704 | ||||
Stake | 17166872 | 594 days ago | IN | 0 ETH | 0.01256482 | ||||
Claim | 17149131 | 597 days ago | IN | 0 ETH | 0.0042583 | ||||
Unstake | 17126518 | 600 days ago | IN | 0 ETH | 0.00444561 | ||||
Stake | 17050696 | 610 days ago | IN | 0 ETH | 0.00347774 | ||||
Claim | 17050688 | 610 days ago | IN | 0 ETH | 0.00278857 | ||||
Unstake | 16938004 | 626 days ago | IN | 0 ETH | 0.00336168 | ||||
Claim | 16938001 | 626 days ago | IN | 0 ETH | 0.00337176 | ||||
Stake | 16894671 | 633 days ago | IN | 0 ETH | 0.00182833 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PyroStakeUpgrader
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-21 */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.0 <0.9.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } contract PyroStakingV2 is Auth { struct StakeState { uint256 stakedAmount; uint256 rewardDebt; uint256 aprIndex; uint32 lastChangeTime; uint32 lockEndTime; } address public stakingToken; uint256 public stakedTokens; uint16 public constant denominator = 10000; uint16 public depositFee; uint16 public earlyWithdrawFee; uint32 public withdrawLockPeriod; bool public available; mapping (uint256 => uint16) internal _aprValues; uint256 internal activeAPRIndex; uint256 internal lastAPRupdate; mapping (address => StakeState) internal stakerDetails; event TokenStaked(address indexed user, uint256 amount); event TokenUnstaked(address indexed user, uint256 amount, uint256 yield); event RewardClaimed(address indexed user, uint256 outAmount); event StakingConfigured(uint16 newAPR, uint16 newDepositFee, uint32 newLockPeriod, uint16 newWithdrawFee, bool available); event StakingTokenUpdate(address indexed oldToken, address indexed newToken); error LockedStake(uint32 unlockTime); error NoStakesRequired(); error DepositFeeTooHigh(uint16 attemptedFee, uint16 maxFee); error InvalidWithdrawFee(uint16 attemptedFee, uint16 maxFee); error LockTooLong(uint32 attemptedLock, uint32 maxLock); error InvalidAPR(uint16 attempted, uint16 min, uint16 max); error ZeroStake(); error StakingUnavailable(); error NoAvailableYield(); error StakingActive(); error NoRewardTokens(uint256 needed, uint256 owned); error InvalidWithdraw(); error GuaranteeTooShort(); modifier noStakes { if (stakedTokens > 0) { revert NoStakesRequired(); } _; } modifier validDepositFee(uint16 fee) { uint16 max = denominator / 2; if (fee > max) { revert DepositFeeTooHigh(fee, max); } _; } modifier validWithdrawFee(uint16 fee) { if (fee > denominator) { revert InvalidWithdrawFee(fee, denominator); } _; } modifier validLockPeriod(uint32 time) { if (time > 365 days) { revert LockTooLong(time, 365 days); } _; } modifier validAPR(uint16 proposedAPR) { uint16 max = type(uint16).max; if (proposedAPR == 0) { revert InvalidAPR(0, 1, max); } if (proposedAPR > max) { revert InvalidAPR(proposedAPR, 1, max); } _; } constructor(address tokenToStake) Auth(msg.sender) { stakingToken = tokenToStake; _setStakingConfig(4000, 670, 30 days, 5000, true); } function setStakingConfiguration( uint16 newAPR, uint16 newDepositFee, uint32 newLockPeriod, uint16 newWithdrawFee, bool active ) external authorized validAPR(newAPR) validDepositFee(newDepositFee) validWithdrawFee(newWithdrawFee) validLockPeriod(newLockPeriod) { _setStakingConfig(newAPR, newDepositFee, newLockPeriod, newWithdrawFee, active); } function _setStakingConfig( uint16 newAPR, uint16 newDepositFee, uint32 newLockPeriod, uint16 newWithdrawFee, bool newAvailability ) internal { _updateAPR(newAPR); depositFee = newDepositFee; withdrawLockPeriod = newLockPeriod; earlyWithdrawFee = newWithdrawFee; available = newAvailability; emit StakingConfigured(newAPR, newDepositFee, newLockPeriod, newWithdrawFee, newAvailability); } function setAPR(uint16 newAPR) external authorized validAPR(newAPR) { _updateAPR(newAPR); emit StakingConfigured(newAPR, depositFee, withdrawLockPeriod, earlyWithdrawFee, available); } function _updateAPR(uint16 newAPR) internal { ++activeAPRIndex; _aprValues[activeAPRIndex] = newAPR; lastAPRupdate = block.timestamp; } function setDepositFee(uint16 fee) external authorized validDepositFee(fee) { depositFee = fee; emit StakingConfigured(getCurrentAPR(), fee, withdrawLockPeriod, earlyWithdrawFee, available); } function setEarlyWithdrawFee(uint16 fee) external authorized validWithdrawFee(fee) { earlyWithdrawFee = fee; emit StakingConfigured(getCurrentAPR(), depositFee, withdrawLockPeriod, fee, available); } function setPoolAvailable(bool active) external authorized { available = active; emit StakingConfigured(getCurrentAPR(), depositFee, withdrawLockPeriod, earlyWithdrawFee, active); } function setEarlyWithdrawLock(uint32 time) external authorized validLockPeriod(time) { withdrawLockPeriod = time; emit StakingConfigured(getCurrentAPR(), depositFee, time, earlyWithdrawFee, available); } function updateStakingToken(address newToken) external authorized noStakes { emit StakingTokenUpdate(stakingToken, newToken); stakingToken = newToken; } function pendingReward(address account) public view virtual returns (uint256) { StakeState storage user = stakerDetails[account]; return _pendingReward(user); } function _pendingReward(StakeState storage user) internal view returns (uint256) { // Last change time of 0 means there's never been a stake to begin with. if (user.lastChangeTime == 0) { return 0; } // Elapsed time since last stake update. if (block.timestamp <= user.lastChangeTime) { return 0; } // Check whether APR has changed since stake was done. // Take this into consideration while securing past APR. uint256 accrued; uint256 deltaTime; if (user.aprIndex != activeAPRIndex) { if (user.lastChangeTime >= lastAPRupdate) { deltaTime = block.timestamp - user.lastChangeTime; accrued = yieldFromElapsedTime(user.stakedAmount, deltaTime, _aprValues[activeAPRIndex]); } else { uint256 recentDelta = block.timestamp - lastAPRupdate; deltaTime = lastAPRupdate - user.lastChangeTime; accrued = yieldFromElapsedTime(user.stakedAmount, recentDelta, _aprValues[activeAPRIndex]); accrued += yieldFromElapsedTime(user.stakedAmount, deltaTime, _aprValues[user.aprIndex]); } } else { deltaTime = block.timestamp - user.lastChangeTime; accrued = yieldFromElapsedTime(user.stakedAmount, deltaTime, _aprValues[user.aprIndex]); } // Accrued is what currently is pending, reward debt is stored unclaimed yield value from a update. return accrued + user.rewardDebt; } function yieldFromElapsedTime(uint256 amount, uint256 deltaTime, uint16 appliedAPR) public pure returns (uint256) { // No elapsed time, no amount, 0% APR obviously means 0 tokens yielded. if (amount == 0 || deltaTime == 0 || appliedAPR == 0) { return 0; } // Calculate the owed reward by seconds elapsed derived from the total reward. uint256 annuality = annualYield(amount, appliedAPR); if (annuality == 0) { return 0; } return (deltaTime * annuality) / 365 days; } function annualYield(uint256 amount, uint16 appliedAPR) public pure returns (uint256) { if (amount == 0 || appliedAPR == 0) { return 0; } return amount * appliedAPR / denominator; } function stake(uint256 amount) external { _stake(msg.sender, amount); } function _stake(address staker, uint256 amount) internal { if (amount == 0) { revert ZeroStake(); } if (!available) { revert StakingUnavailable(); } StakeState storage user = stakerDetails[staker]; // Calc unclaimed reward on stake update and set reward timer to now. // This allows to increase the stake without needing a claim. if (user.lastChangeTime != 0 && user.stakedAmount > 0) { user.rewardDebt = _pendingReward(user); } uint256 stakeAmount = amount; // Is deposit fee appliable? if (depositFee > 0) { uint256 dFee = depositFeeFromAmount(amount); unchecked { stakeAmount -= dFee; } } unchecked { user.stakedAmount += stakeAmount; } // First index is 1 and in case of re-stake pending yield has been stored already. if (user.aprIndex != activeAPRIndex) { user.aprIndex = activeAPRIndex; } // For a first stake we get the lock period from current configuration. uint32 rnow = uint32(block.timestamp); user.lastChangeTime = rnow; if (user.lockEndTime == 0) { user.lockEndTime = rnow + withdrawLockPeriod; } // Keeping track of overall staked tokens. unchecked { stakedTokens += stakeAmount; } // Transfer tokens from staker to the contract. IERC20(stakingToken).transferFrom(staker, address(this), amount); emit TokenStaked(staker, stakeAmount); } function depositFeeFromAmount(uint256 amount) public view returns (uint256) { if (depositFee == 0) { return 0; } return amount * depositFee / denominator; } function unstake() public virtual { _unstake(msg.sender, false); } function emergencyUnstake() external { _unstake(msg.sender, true); } function unstakeFor(address staker) external authorized { _unstake(staker, false); } function emergencyUnstakeFor(address staker) external authorized { _unstake(staker, true); } function _unstake(address staker, bool forfeit) internal { StakeState storage user = stakerDetails[staker]; uint256 userStakedTokens = user.stakedAmount; if (userStakedTokens == 0) { revert ZeroStake(); } uint256 yield; uint256 unstakeAmount = userStakedTokens; bool isEarlyWithdraw = earlyWithdrawFee > 0 && block.timestamp < user.lockEndTime; // Update user staking status. // When unstaking is done, claim is automatically done. if (forfeit) { user.lastChangeTime = uint32(block.timestamp); user.rewardDebt = 0; } else { yield = _claim(user); } user.stakedAmount = 0; // Early withdraw fee. if (isEarlyWithdraw) { // If withdraw fee is set at 100%, it means the stake is fully locked. if (earlyWithdrawFee == denominator) { revert LockedStake(user.lockEndTime); } uint256 fee = userStakedTokens * earlyWithdrawFee / denominator; unchecked { unstakeAmount -= fee; } } user.lockEndTime = 0; // Return token to staker and update staking values. IERC20(stakingToken).transfer(staker, unstakeAmount + yield); unchecked { stakedTokens -= userStakedTokens; } emit TokenUnstaked(staker, unstakeAmount, yield); } function claim() external { _claim(msg.sender); } function claimFor(address staker) external { _claim(staker); } function _claim(address staker) internal { StakeState storage user = stakerDetails[staker]; uint256 outAmount = _claim(user); if (outAmount == 0) { revert NoAvailableYield(); } if (user.aprIndex != activeAPRIndex) { user.aprIndex = activeAPRIndex; } IERC20(stakingToken).transfer(staker, outAmount); emit RewardClaimed(staker, outAmount); } /** * @dev Returns amount to be sent to user after calculating and updating yield. */ function _claim(StakeState storage user) internal returns (uint256) { uint256 outAmount = _pendingReward(user); if (outAmount > 0) { // To protect user funds, reward tokens must not come from their staked tokens. // Claim transactions will all fail. // Non emergency unstake transactions as well, so it's up to the user to decide either: // Wait for availability of reward tokens. // Recover stake and forfeit any yield. uint256 availableReward = availableRewardTokens(); if (availableReward < outAmount) { revert NoRewardTokens(outAmount, availableReward); } user.rewardDebt = 0; user.lastChangeTime = uint32(block.timestamp); } return outAmount; } function canWithdrawTokensNoFee(address user) external view returns (bool) { if (stakerDetails[user].lastChangeTime == 0) { return false; } return block.timestamp > stakerDetails[user].lockEndTime; } function rescueToken(address t) external authorized { if (t == stakingToken) { revert InvalidWithdraw(); } IERC20 rescuee = IERC20(t); uint256 balance = rescuee.balanceOf(address(this)); rescuee.transfer(msg.sender, balance); } function rescuePrizeTokens() external authorized { uint256 prize = availableRewardTokens(); if (prize > 0) { IERC20(stakingToken).transfer(msg.sender, prize); } } function _getStake(address staker) internal view returns (StakeState memory) { return stakerDetails[staker]; } function getOwnPendingReward() external view virtual returns (uint256) { StakeState storage user = stakerDetails[msg.sender]; return _pendingReward(user); } function getCurrentAPR() public view returns (uint16) { return _aprValues[activeAPRIndex]; } function availableRewardTokens() public view virtual returns (uint256) { uint256 balance = IERC20(stakingToken).balanceOf(address(this)); if (stakedTokens >= balance) { return 0; } return balance - stakedTokens; } function getLastAPRUpdate() external view returns (uint256) { return lastAPRupdate; } function countAPRUpdates() external view returns (uint256) { if (activeAPRIndex == 0) { return 0; } return activeAPRIndex - 1; } function _totalStakedTokens() internal view returns (uint256) { return stakedTokens; } } interface IPyroStaking { struct PoolConfiguration { uint256 poolStakedTokens; uint16 apr; uint16 depositFee; uint16 earlyWithdrawFee; uint32 withdrawLockPeriod; bool available; bool burnDeposit; } struct StakeState { uint256 stakedAmount; uint256 rewardDebt; uint32 lastChangeTime; uint32 lockEndTime; } function pendingReward(address account) external view returns (uint256); function forceClaimUnstake(address staker) external; function canWithdrawTokensNoFee(address user) external view returns (bool); function viewStake(address staker) external view returns (IPyroStaking.StakeState memory); function viewPoolDetails() external view returns (PoolConfiguration memory); function totalStakedTokens() external view returns (uint256); } struct CombinedStakeState { uint256 stakedAmount; uint256 rewardDebt; uint256 oldStaked; uint256 oldRewardDebt; uint256 newStaked; uint256 newRewardDebt; uint256 aprIndex; uint32 lastChangeTime; uint32 lockEndTime; uint32 oldLastChangeTime; uint32 oldLockEndTime; } /** * @dev Combines two staking strategies. */ contract PyroStakeUpgrader is PyroStakingV2 { address public previousStaking; bool internal _checkPrevious = true; constructor(address prevStaking, address token) PyroStakingV2(token) { previousStaking = prevStaking; stakingToken = token; } function pendingReward(address account) public view override returns (uint256) { uint256 previousPending; if (_checkPrevious && previousStaking != address(0)) { previousPending = IPyroStaking(previousStaking).pendingReward(account); } uint256 currPending = super.pendingReward(account); return previousPending + currPending; } function unstake() public override { if (_checkPrevious && previousStaking != address(0)) { try IPyroStaking(previousStaking).forceClaimUnstake(msg.sender) {} catch {} } super.unstake(); } function unstakeV1Only() external { IPyroStaking(previousStaking).forceClaimUnstake(msg.sender); } function availableRewardTokens() public view override returns (uint256) { uint256 oldAvailable; if (_checkPrevious && previousStaking != address(0)) { uint256 oldBalance = IERC20(stakingToken).balanceOf(previousStaking); uint256 stakedOld = IPyroStaking(previousStaking).totalStakedTokens(); if (oldBalance > stakedOld) { oldAvailable = oldBalance - stakedOld; } } uint256 v2Available = super.availableRewardTokens(); return oldAvailable + v2Available; } function getStake(address staker) public view returns (CombinedStakeState memory) { CombinedStakeState memory comStake; PyroStakingV2.StakeState memory newStake = super._getStake(staker); comStake.stakedAmount = newStake.stakedAmount; comStake.newStaked = newStake.stakedAmount; comStake.rewardDebt = newStake.rewardDebt; comStake.newRewardDebt = newStake.rewardDebt; comStake.aprIndex = newStake.aprIndex; comStake.lastChangeTime = newStake.lastChangeTime; comStake.lockEndTime = newStake.lockEndTime; if (_checkPrevious && previousStaking != address(0)) { try IPyroStaking(previousStaking).viewStake(staker) returns (IPyroStaking.StakeState memory oldStake) { comStake.oldStaked = oldStake.stakedAmount; comStake.oldRewardDebt = oldStake.rewardDebt; comStake.stakedAmount += oldStake.stakedAmount; comStake.rewardDebt += oldStake.rewardDebt; comStake.oldLastChangeTime = oldStake.lastChangeTime; comStake.oldLockEndTime = oldStake.lockEndTime; } catch {} } return comStake; } function getOwnStake() external view returns (CombinedStakeState memory) { return getStake(msg.sender); } function getOwnPendingReward() external view override returns (uint256) { return pendingReward(msg.sender); } function totalStakedTokens() external view returns (uint256) { uint256 stakedOld; if (_checkPrevious && previousStaking != address(0)) { stakedOld = IPyroStaking(previousStaking).totalStakedTokens(); } uint256 stakeV2 = super._totalStakedTokens(); return stakedOld + stakeV2; } function setCheckV1(bool doCheck) external authorized { _checkPrevious = doCheck; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"prevStaking","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint16","name":"attemptedFee","type":"uint16"},{"internalType":"uint16","name":"maxFee","type":"uint16"}],"name":"DepositFeeTooHigh","type":"error"},{"inputs":[],"name":"GuaranteeTooShort","type":"error"},{"inputs":[{"internalType":"uint16","name":"attempted","type":"uint16"},{"internalType":"uint16","name":"min","type":"uint16"},{"internalType":"uint16","name":"max","type":"uint16"}],"name":"InvalidAPR","type":"error"},{"inputs":[],"name":"InvalidWithdraw","type":"error"},{"inputs":[{"internalType":"uint16","name":"attemptedFee","type":"uint16"},{"internalType":"uint16","name":"maxFee","type":"uint16"}],"name":"InvalidWithdrawFee","type":"error"},{"inputs":[{"internalType":"uint32","name":"attemptedLock","type":"uint32"},{"internalType":"uint32","name":"maxLock","type":"uint32"}],"name":"LockTooLong","type":"error"},{"inputs":[{"internalType":"uint32","name":"unlockTime","type":"uint32"}],"name":"LockedStake","type":"error"},{"inputs":[],"name":"NoAvailableYield","type":"error"},{"inputs":[{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"owned","type":"uint256"}],"name":"NoRewardTokens","type":"error"},{"inputs":[],"name":"NoStakesRequired","type":"error"},{"inputs":[],"name":"StakingActive","type":"error"},{"inputs":[],"name":"StakingUnavailable","type":"error"},{"inputs":[],"name":"ZeroStake","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"outAmount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"newAPR","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"newDepositFee","type":"uint16"},{"indexed":false,"internalType":"uint32","name":"newLockPeriod","type":"uint32"},{"indexed":false,"internalType":"uint16","name":"newWithdrawFee","type":"uint16"},{"indexed":false,"internalType":"bool","name":"available","type":"bool"}],"name":"StakingConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldToken","type":"address"},{"indexed":true,"internalType":"address","name":"newToken","type":"address"}],"name":"StakingTokenUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"yield","type":"uint256"}],"name":"TokenUnstaked","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"appliedAPR","type":"uint16"}],"name":"annualYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"available","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"availableRewardTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"canWithdrawTokensNoFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"claimFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"countAPRUpdates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"denominator","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFeeFromAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyWithdrawFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"emergencyUnstakeFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentAPR","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastAPRUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwnPendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwnStake","outputs":[{"components":[{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"oldStaked","type":"uint256"},{"internalType":"uint256","name":"oldRewardDebt","type":"uint256"},{"internalType":"uint256","name":"newStaked","type":"uint256"},{"internalType":"uint256","name":"newRewardDebt","type":"uint256"},{"internalType":"uint256","name":"aprIndex","type":"uint256"},{"internalType":"uint32","name":"lastChangeTime","type":"uint32"},{"internalType":"uint32","name":"lockEndTime","type":"uint32"},{"internalType":"uint32","name":"oldLastChangeTime","type":"uint32"},{"internalType":"uint32","name":"oldLockEndTime","type":"uint32"}],"internalType":"struct CombinedStakeState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getStake","outputs":[{"components":[{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"oldStaked","type":"uint256"},{"internalType":"uint256","name":"oldRewardDebt","type":"uint256"},{"internalType":"uint256","name":"newStaked","type":"uint256"},{"internalType":"uint256","name":"newRewardDebt","type":"uint256"},{"internalType":"uint256","name":"aprIndex","type":"uint256"},{"internalType":"uint32","name":"lastChangeTime","type":"uint32"},{"internalType":"uint32","name":"lockEndTime","type":"uint32"},{"internalType":"uint32","name":"oldLastChangeTime","type":"uint32"},{"internalType":"uint32","name":"oldLockEndTime","type":"uint32"}],"internalType":"struct CombinedStakeState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousStaking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rescuePrizeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"t","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newAPR","type":"uint16"}],"name":"setAPR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"doCheck","type":"bool"}],"name":"setCheckV1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"name":"setDepositFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"name":"setEarlyWithdrawFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"time","type":"uint32"}],"name":"setEarlyWithdrawLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setPoolAvailable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newAPR","type":"uint16"},{"internalType":"uint16","name":"newDepositFee","type":"uint16"},{"internalType":"uint32","name":"newLockPeriod","type":"uint32"},{"internalType":"uint16","name":"newWithdrawFee","type":"uint16"},{"internalType":"bool","name":"active","type":"bool"}],"name":"setStakingConfiguration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"unstakeFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakeV1Only","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"}],"name":"updateStakingToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawLockPeriod","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deltaTime","type":"uint256"},{"internalType":"uint16","name":"appliedAPR","type":"uint16"}],"name":"yieldFromElapsedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
60806040526009805460ff60a01b1916600160a01b1790553480156200002457600080fd5b5060405162002a7338038062002a738339810160408190526200004791620001ff565b60008054336001600160a01b0319918216811783558252600160208190526040909220805460ff191683179055600280549091166001600160a01b0384161790558190620000a690610fa09061029e9062278d009061138890620000d9565b50600980546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556200025f565b620000e485620001a2565b6004805461ffff86811667ffffffff0000ffff19909216821764010000000063ffffffff88169081029190911768ff00000000ffff000019166201000087841690810260ff60401b191691909117680100000000000000008715159081029190911790955560408051938b168452602084019490945292820152606081019190915260808101919091527f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09060a00160405180910390a15050505050565b600660008154620001b39062000237565b909155506006546000908152600560205260409020805461ffff191661ffff9290921691909117905542600755565b80516001600160a01b0381168114620001fa57600080fd5b919050565b600080604083850312156200021357600080fd5b6200021e83620001e2565b91506200022e60208401620001e2565b90509250929050565b6000600182016200025857634e487b7160e01b600052601160045260246000fd5b5060010190565b612804806200026f6000396000f3fe608060405234801561001057600080fd5b50600436106102b45760003560e01c806383ad068c11610171578063c66f38fe116100d3578063f0b37c0411610097578063f9ca633a11610071578063f9ca633a146105d4578063fb7ba582146105dc578063fe9fbb80146105e457600080fd5b8063f0b37c041461059b578063f2fde38b146105ae578063f40f0f52146105c157600080fd5b8063c66f38fe14610551578063cb62900914610559578063ddeae03314610562578063df1d17ab14610575578063f09849851461058857600080fd5b8063a80a788211610135578063b6a5d7de1161010f578063b6a5d7de14610523578063b8d4d63b14610536578063bbb5d9731461053e57600080fd5b8063a80a7882146104e9578063a9bf1917146104fd578063ad4bed701461051057600080fd5b806383ad068c1461049f57806392b30b95146104b257806396ce0795146104c55780639f94e272146104ce578063a694fc3a146104d657600080fd5b80634460d3cf1161021a5780635fda307a116101de57806372f702f3116101b857806372f702f3146104645780637589cf2f146104775780637a7664601461047f57600080fd5b80635fda307a1461043057806367a52793146104435780636d3a4ac81461045157600080fd5b80634460d3cf146103ce578063489450f9146103e157806348a0d754146103e95780634c24777e146103fd5780634e71d92d1461042857600080fd5b80632cbb26191161027c578063302207cf11610256578063302207cf146103a057806330432e46146103b35780633ae73259146103c657600080fd5b80632cbb2619146103535780632def6620146103665780632f54bf6e1461036e57600080fd5b806307168489146102b95780630fe21264146102d45780631b26df23146102e957806321ae05c8146102fc5780632628490f14610326575b600080fd5b6102c1610610565b6040519081526020015b60405180910390f35b6102e76102e236600461241e565b610620565b005b6102c16102f7366004612439565b610767565b60065460009081526005602052604090205461ffff165b60405161ffff90911681526020016102cb565b60045461033e90640100000000900463ffffffff1681565b60405163ffffffff90911681526020016102cb565b6102e761036136600461247a565b6107a9565b6102e7610804565b61039061037c36600461247a565b6000546001600160a01b0391821691161490565b60405190151581526020016102cb565b6102c16103ae366004612497565b61088e565b6102e76103c13660046124da565b6108f9565b6102c1610964565b6102e76103dc36600461247a565b610a29565b6007546102c1565b60045461039090600160401b900460ff1681565b600954610410906001600160a01b031681565b6040516001600160a01b0390911681526020016102cb565b6102e7610b8c565b61039061043e36600461247a565b610b95565b6004546103139061ffff1681565b6102e761045f36600461241e565b610bf4565b600254610410906001600160a01b031681565b6102e7610d39565b61049261048d36600461247a565b610d44565b6040516102cb91906124f7565b6102e76104ad36600461247a565b610ea5565b6102e76104c036600461241e565b610f7c565b61031361271081565b6102c16110ab565b6102e76104e436600461258e565b6111ec565b6004546103139062010000900461ffff1681565b6102e761050b3660046124da565b6111f6565b6102e761051e3660046125b9565b6112e9565b6102e761053136600461247a565b611418565b6102c1611482565b6102e761054c36600461247a565b6114a3565b6102e76114fb565b6102c160035481565b6102e761057036600461247a565b611554565b6102e76105833660046125d6565b61155d565b6102c161059636600461258e565b6116fa565b6102e76105a936600461247a565b611731565b6102e76105bc36600461247a565b611795565b6102c16105cf36600461247a565b61184b565b6102e7611908565b6104926119e0565b6103906105f236600461247a565b6001600160a01b031660009081526001602052604090205460ff1690565b600061061b3361184b565b905090565b3360009081526001602052604090205460ff166106725760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064015b60405180910390fd5b806000610682600261271061266d565b90508061ffff168261ffff1611156106bb5760405163113e738160e11b815261ffff808416600483015282166024820152604401610669565b6004805461ffff851661ffff199091161790557f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c061070b60065460009081526005602052604090205461ffff1690565b6004546040805161ffff93841681528388166020820152640100000000830463ffffffff16918101919091526201000082049092166060830152600160401b900460ff161515608082015260a0015b60405180910390a1505050565b6000821580610778575061ffff8216155b15610785575060006107a3565b61271061079661ffff84168561268e565b6107a091906126a5565b90505b92915050565b3360009081526001602052604090205460ff166107f65760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b6108018160006119f1565b50565b600954600160a01b900460ff16801561082757506009546001600160a01b031615155b15610884576009546040516343ec644160e11b81523360048201526001600160a01b03909116906387d8c88290602401600060405180830381600087803b15801561087157600080fd5b505af1925050508015610882575060015b505b61088c611c21565b565b600083158061089b575082155b806108a8575061ffff8216155b156108b5575060006108f2565b60006108c18584610767565b9050806000036108d55760009150506108f2565b6301e133806108e4828661268e565b6108ee91906126a5565b9150505b9392505050565b3360009081526001602052604090205460ff166109465760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b60098054911515600160a01b0260ff60a01b19909216919091179055565b6009546000908190600160a01b900460ff16801561098c57506009546001600160a01b031615155b15610a0b57600960009054906101000a90046001600160a01b03166001600160a01b0316633ae732596040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0891906126b9565b90505b6000610a1660035490565b9050610a2281836126d2565b9250505090565b3360009081526001602052604090205460ff16610a765760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b6002546001600160a01b0390811690821603610aa5576040516335411d8b60e01b815260040160405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1291906126b9565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8691906126e5565b50505050565b61088c33611c2c565b6001600160a01b03811660009081526008602052604081206003015463ffffffff168103610bc557506000919050565b506001600160a01b0316600090815260086020526040902060030154640100000000900463ffffffff16421190565b3360009081526001602052604090205460ff16610c415760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b8061ffff808216600003610c7c5760405163b81ebab960e01b8152600060048201526001602482015261ffff82166044820152606401610669565b8061ffff168261ffff161115610cba5760405163b81ebab960e01b815261ffff80841660048301526001602483015282166044820152606401610669565b610cc383611d47565b6004546040805161ffff80871682528084166020830152640100000000840463ffffffff16928201929092526201000083049091166060820152600160401b90910460ff16151560808201527f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09060a00161075a565b61088c3360016119f1565b610d4c612395565b610d54612395565b6000610d5f84611d85565b80518352805160808085019190915260208083018051918601919091525160a0850152604082015160c0850152606082015163ffffffff90811660e08601529082015116610100840152600954909150600160a01b900460ff168015610dcf57506009546001600160a01b031615155b15610e9e5760095460405163a0ac265560e01b81526001600160a01b0386811660048301529091169063a0ac265590602401608060405180830381865afa925050508015610e3a575060408051601f3d908101601f19168201909252610e3791810190612702565b60015b15610e9e578051604084015260208101516060840152805183518490610e619083906126d2565b9052506020808201519084018051610e7a9083906126d2565b905250604081015163ffffffff908116610120850152606090910151166101408301525b5092915050565b3360009081526001602052604090205460ff16610ef25760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b60035415610f1357604051630d26615360e41b815260040160405180910390fd5b6002546040516001600160a01b038084169216907fe9009ef01442bf4abfee682ac3f0470c1bde8d70770cdd78c69d7fa67996b45e90600090a36002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3360009081526001602052604090205460ff16610fc95760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b8061271061ffff82161115610fff57604051630c1e501760e41b815261ffff821660048201526127106024820152604401610669565b6004805461ffff8416620100000263ffff0000199091161790557f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c061105660065460009081526005602052604090205461ffff1690565b6004546040805161ffff93841681528383166020820152640100000000830463ffffffff16918101919091529185166060830152600160401b900460ff161515608082015260a0015b60405180910390a15050565b6009546000908190600160a01b900460ff1680156110d357506009546001600160a01b031615155b156111e2576002546009546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906126b9565b90506000600960009054906101000a90046001600160a01b03166001600160a01b0316633ae732596040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c891906126b9565b9050808211156111df576111dc8183612785565b92505b50505b6000610a16611e28565b6108013382611ebf565b3360009081526001602052604090205460ff166112435760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b6004805468ff00000000000000001916600160401b831515021790556006546000908152600560205260409020547f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09061ffff166004546040805161ffff93841681528383166020820152640100000000830463ffffffff1691810191909152620100009091049091166060820152821515608082015260a0015b60405180910390a150565b3360009081526001602052604090205460ff166113365760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b806301e133808163ffffffff16111561137457604051632b44144b60e11b815263ffffffff821660048201526301e133806024820152604401610669565b6004805467ffffffff00000000191664010000000063ffffffff8516021790556006546000908152600560205260409020547f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09061ffff166004546040805161ffff9384168152838316602082015263ffffffff8716918101919091526201000082049092166060830152600160401b900460ff161515608082015260a00161109f565b6000546001600160a01b0316331461145b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610669565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60006006546000036114945750600090565b600160065461061b9190612785565b3360009081526001602052604090205460ff166114f05760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b6108018160016119f1565b6009546040516343ec644160e11b81523360048201526001600160a01b03909116906387d8c88290602401600060405180830381600087803b15801561154057600080fd5b505af1158015610b86573d6000803e3d6000fd5b61080181611c2c565b3360009081526001602052604090205460ff166115aa5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b8461ffff8082166000036115e55760405163b81ebab960e01b8152600060048201526001602482015261ffff82166044820152606401610669565b8061ffff168261ffff1611156116235760405163b81ebab960e01b815261ffff80841660048301526001602483015282166044820152606401610669565b856000611633600261271061266d565b90508061ffff168261ffff16111561166c5760405163113e738160e11b815261ffff808416600483015282166024820152604401610669565b8561271061ffff821611156116a257604051630c1e501760e41b815261ffff821660048201526127106024820152604401610669565b876301e133808163ffffffff1611156116e057604051632b44144b60e11b815263ffffffff821660048201526301e133806024820152604401610669565b6116ed8b8b8b8b8b6120c7565b5050505050505050505050565b60045460009061ffff16810361171257506000919050565b600454612710906117279061ffff168461268e565b6107a391906126a5565b6000546001600160a01b031633146117745760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610669565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146117d85760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610669565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616391016112de565b6009546000908190600160a01b900460ff16801561187357506009546001600160a01b031615155b156118e957600954604051637a0787a960e11b81526001600160a01b0385811660048301529091169063f40f0f5290602401602060405180830381865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e691906126b9565b90505b60006118f48461218e565b905061190081836126d2565b949350505050565b3360009081526001602052604090205460ff166119555760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b600061195f6110ab565b905080156108015760025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc91906126e5565b5050565b6119e8612395565b61061b33610d44565b6001600160a01b038216600090815260086020526040812080549091819003611a2d5760405163150a67e960e01b815260040160405180910390fd5b6004546000908290829062010000900461ffff1615801590611a6057506003850154640100000000900463ffffffff1642105b90508515611a8b5760038501805463ffffffff19164263ffffffff1617905560006001860155611a97565b611a94856121af565b92505b600085558015611b145760045461270f196201000090910461ffff1601611ae657600385015460405163bb80e83960e01b815264010000000090910463ffffffff166004820152602401610669565b60045460009061271090611b049062010000900461ffff168761268e565b611b0e91906126a5565b90920391505b60038501805467ffffffff00000000191690556002546001600160a01b031663a9059cbb88611b4386866126d2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bca91906126e5565b5060038054859003905560408051838152602081018590526001600160a01b038916917f563fc70fca9d440d883299c76a721644d5aca7c45df98aeb5292c4cb823579bf910160405180910390a250505050505050565b61088c3360006119f1565b6001600160a01b038116600090815260086020526040812090611c4e826121af565b905080600003611c715760405163fa92394f60e01b815260040160405180910390fd5b600654826002015414611c875760065460028301555b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfe91906126e5565b50826001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051611d3a91815260200190565b60405180910390a2505050565b600660008154611d5690612798565b909155506006546000908152600560205260409020805461ffff191661ffff9290921691909117905542600755565b611dc36040518060a00160405280600081526020016000815260200160008152602001600063ffffffff168152602001600063ffffffff1681525090565b506001600160a01b0316600090815260086020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260039091015463ffffffff808216606084015264010000000090910416608082015290565b6002546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9991906126b9565b90508060035410611eac57600091505090565b600354611eb99082612785565b91505090565b80600003611ee05760405163150a67e960e01b815260040160405180910390fd5b600454600160401b900460ff16611f0a5760405163ac9108a560e01b815260040160405180910390fd5b6001600160a01b0382166000908152600860205260409020600381015463ffffffff1615801590611f3b5750805415155b15611f4f57611f498161221f565b60018201555b600454829061ffff1615611f6e576000611f68846116fa565b90910390505b815481018255600654600283015414611f8a5760065460028301555b60038201805463ffffffff19164263ffffffff818116929092179283905591640100000000900416600003611ff757600454611fd490640100000000900463ffffffff16826127b1565b8360030160046101000a81548163ffffffff021916908363ffffffff1602179055505b60038054830190556002546040516323b872dd60e01b81526001600160a01b03878116600483015230602483015260448201879052909116906323b872dd906064016020604051808303816000875af1158015612058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207c91906126e5565b50846001600160a01b03167f1fdab8a8457aaf782e4b6217d6ffa6f5006eda7e50922dd092b2e1524275d774836040516120b891815260200190565b60405180910390a25050505050565b6120d085611d47565b6004805461ffff86811667ffffffff0000ffff19909216821764010000000063ffffffff88169081029190911768ff00000000ffff000019166201000087841690810268ff0000000000000000191691909117600160401b8715159081029190911790955560408051938b168452602084019490945292820152606081019190915260808101919091527f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09060a00160405180910390a15050505050565b6001600160a01b03811660009081526008602052604081206108f28161221f565b6000806121bb8361221f565b905080156107a35760006121cd6110ab565b9050818110156121fa57604051634cbad4bb60e11b81526004810183905260248101829052604401610669565b506000600184015560038301805463ffffffff19164263ffffffff1617905592915050565b600381015460009063ffffffff16810361223b57506000919050565b600382015463ffffffff16421161225457506000919050565b60008060065484600201541461234657600754600385015463ffffffff16106122b957600384015461228c9063ffffffff1642612785565b84546006546000908152600560205260409020549192506122b291839061ffff1661088e565b9150612386565b6000600754426122c99190612785565b60038601546007549192506122e69163ffffffff90911690612785565b855460065460009081526005602052604090205491935061230c91839061ffff1661088e565b8554600287015460009081526005602052604090205491945061233491849061ffff1661088e565b61233e90846126d2565b925050612386565b600384015461235b9063ffffffff1642612785565b8454600286015460009081526005602052604090205491925061238391839061ffff1661088e565b91505b600184015461190090836126d2565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff1681525090565b803561ffff8116811461241957600080fd5b919050565b60006020828403121561243057600080fd5b6107a082612407565b6000806040838503121561244c57600080fd5b8235915061245c60208401612407565b90509250929050565b6001600160a01b038116811461080157600080fd5b60006020828403121561248c57600080fd5b81356108f281612465565b6000806000606084860312156124ac57600080fd5b83359250602084013591506124c360408501612407565b90509250925092565b801515811461080157600080fd5b6000602082840312156124ec57600080fd5b81356108f2816124cc565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015161255760e084018263ffffffff169052565b506101008381015163ffffffff90811691840191909152610120808501518216908401526101409384015116929091019190915290565b6000602082840312156125a057600080fd5b5035919050565b63ffffffff8116811461080157600080fd5b6000602082840312156125cb57600080fd5b81356108f2816125a7565b600080600080600060a086880312156125ee57600080fd5b6125f786612407565b945061260560208701612407565b93506040860135612615816125a7565b925061262360608701612407565b91506080860135612633816124cc565b809150509295509295909350565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff8084168061268257612682612641565b92169190910492915050565b80820281158282048414176107a3576107a3612657565b6000826126b4576126b4612641565b500490565b6000602082840312156126cb57600080fd5b5051919050565b808201808211156107a3576107a3612657565b6000602082840312156126f757600080fd5b81516108f2816124cc565b60006080828403121561271457600080fd5b6040516080810181811067ffffffffffffffff8211171561274557634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151612766816125a7565b60408201526060830151612779816125a7565b60608201529392505050565b818103818111156107a3576107a3612657565b6000600182016127aa576127aa612657565b5060010190565b63ffffffff818116838216019080821115610e9e57610e9e61265756fea2646970667358221220474b41417d129f87e7aea94aee5f5555f018e2b8dffc34333ca7aa72e3ab143c64736f6c6343000811003300000000000000000000000034aee49b506e43fdd4bea24f65e4e05ef5a07a0c0000000000000000000000001e2d230c7a7f4c679fb1378f1f51dedeae85cd72
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102b45760003560e01c806383ad068c11610171578063c66f38fe116100d3578063f0b37c0411610097578063f9ca633a11610071578063f9ca633a146105d4578063fb7ba582146105dc578063fe9fbb80146105e457600080fd5b8063f0b37c041461059b578063f2fde38b146105ae578063f40f0f52146105c157600080fd5b8063c66f38fe14610551578063cb62900914610559578063ddeae03314610562578063df1d17ab14610575578063f09849851461058857600080fd5b8063a80a788211610135578063b6a5d7de1161010f578063b6a5d7de14610523578063b8d4d63b14610536578063bbb5d9731461053e57600080fd5b8063a80a7882146104e9578063a9bf1917146104fd578063ad4bed701461051057600080fd5b806383ad068c1461049f57806392b30b95146104b257806396ce0795146104c55780639f94e272146104ce578063a694fc3a146104d657600080fd5b80634460d3cf1161021a5780635fda307a116101de57806372f702f3116101b857806372f702f3146104645780637589cf2f146104775780637a7664601461047f57600080fd5b80635fda307a1461043057806367a52793146104435780636d3a4ac81461045157600080fd5b80634460d3cf146103ce578063489450f9146103e157806348a0d754146103e95780634c24777e146103fd5780634e71d92d1461042857600080fd5b80632cbb26191161027c578063302207cf11610256578063302207cf146103a057806330432e46146103b35780633ae73259146103c657600080fd5b80632cbb2619146103535780632def6620146103665780632f54bf6e1461036e57600080fd5b806307168489146102b95780630fe21264146102d45780631b26df23146102e957806321ae05c8146102fc5780632628490f14610326575b600080fd5b6102c1610610565b6040519081526020015b60405180910390f35b6102e76102e236600461241e565b610620565b005b6102c16102f7366004612439565b610767565b60065460009081526005602052604090205461ffff165b60405161ffff90911681526020016102cb565b60045461033e90640100000000900463ffffffff1681565b60405163ffffffff90911681526020016102cb565b6102e761036136600461247a565b6107a9565b6102e7610804565b61039061037c36600461247a565b6000546001600160a01b0391821691161490565b60405190151581526020016102cb565b6102c16103ae366004612497565b61088e565b6102e76103c13660046124da565b6108f9565b6102c1610964565b6102e76103dc36600461247a565b610a29565b6007546102c1565b60045461039090600160401b900460ff1681565b600954610410906001600160a01b031681565b6040516001600160a01b0390911681526020016102cb565b6102e7610b8c565b61039061043e36600461247a565b610b95565b6004546103139061ffff1681565b6102e761045f36600461241e565b610bf4565b600254610410906001600160a01b031681565b6102e7610d39565b61049261048d36600461247a565b610d44565b6040516102cb91906124f7565b6102e76104ad36600461247a565b610ea5565b6102e76104c036600461241e565b610f7c565b61031361271081565b6102c16110ab565b6102e76104e436600461258e565b6111ec565b6004546103139062010000900461ffff1681565b6102e761050b3660046124da565b6111f6565b6102e761051e3660046125b9565b6112e9565b6102e761053136600461247a565b611418565b6102c1611482565b6102e761054c36600461247a565b6114a3565b6102e76114fb565b6102c160035481565b6102e761057036600461247a565b611554565b6102e76105833660046125d6565b61155d565b6102c161059636600461258e565b6116fa565b6102e76105a936600461247a565b611731565b6102e76105bc36600461247a565b611795565b6102c16105cf36600461247a565b61184b565b6102e7611908565b6104926119e0565b6103906105f236600461247a565b6001600160a01b031660009081526001602052604090205460ff1690565b600061061b3361184b565b905090565b3360009081526001602052604090205460ff166106725760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064015b60405180910390fd5b806000610682600261271061266d565b90508061ffff168261ffff1611156106bb5760405163113e738160e11b815261ffff808416600483015282166024820152604401610669565b6004805461ffff851661ffff199091161790557f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c061070b60065460009081526005602052604090205461ffff1690565b6004546040805161ffff93841681528388166020820152640100000000830463ffffffff16918101919091526201000082049092166060830152600160401b900460ff161515608082015260a0015b60405180910390a1505050565b6000821580610778575061ffff8216155b15610785575060006107a3565b61271061079661ffff84168561268e565b6107a091906126a5565b90505b92915050565b3360009081526001602052604090205460ff166107f65760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b6108018160006119f1565b50565b600954600160a01b900460ff16801561082757506009546001600160a01b031615155b15610884576009546040516343ec644160e11b81523360048201526001600160a01b03909116906387d8c88290602401600060405180830381600087803b15801561087157600080fd5b505af1925050508015610882575060015b505b61088c611c21565b565b600083158061089b575082155b806108a8575061ffff8216155b156108b5575060006108f2565b60006108c18584610767565b9050806000036108d55760009150506108f2565b6301e133806108e4828661268e565b6108ee91906126a5565b9150505b9392505050565b3360009081526001602052604090205460ff166109465760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b60098054911515600160a01b0260ff60a01b19909216919091179055565b6009546000908190600160a01b900460ff16801561098c57506009546001600160a01b031615155b15610a0b57600960009054906101000a90046001600160a01b03166001600160a01b0316633ae732596040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0891906126b9565b90505b6000610a1660035490565b9050610a2281836126d2565b9250505090565b3360009081526001602052604090205460ff16610a765760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b6002546001600160a01b0390811690821603610aa5576040516335411d8b60e01b815260040160405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1291906126b9565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8691906126e5565b50505050565b61088c33611c2c565b6001600160a01b03811660009081526008602052604081206003015463ffffffff168103610bc557506000919050565b506001600160a01b0316600090815260086020526040902060030154640100000000900463ffffffff16421190565b3360009081526001602052604090205460ff16610c415760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b8061ffff808216600003610c7c5760405163b81ebab960e01b8152600060048201526001602482015261ffff82166044820152606401610669565b8061ffff168261ffff161115610cba5760405163b81ebab960e01b815261ffff80841660048301526001602483015282166044820152606401610669565b610cc383611d47565b6004546040805161ffff80871682528084166020830152640100000000840463ffffffff16928201929092526201000083049091166060820152600160401b90910460ff16151560808201527f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09060a00161075a565b61088c3360016119f1565b610d4c612395565b610d54612395565b6000610d5f84611d85565b80518352805160808085019190915260208083018051918601919091525160a0850152604082015160c0850152606082015163ffffffff90811660e08601529082015116610100840152600954909150600160a01b900460ff168015610dcf57506009546001600160a01b031615155b15610e9e5760095460405163a0ac265560e01b81526001600160a01b0386811660048301529091169063a0ac265590602401608060405180830381865afa925050508015610e3a575060408051601f3d908101601f19168201909252610e3791810190612702565b60015b15610e9e578051604084015260208101516060840152805183518490610e619083906126d2565b9052506020808201519084018051610e7a9083906126d2565b905250604081015163ffffffff908116610120850152606090910151166101408301525b5092915050565b3360009081526001602052604090205460ff16610ef25760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b60035415610f1357604051630d26615360e41b815260040160405180910390fd5b6002546040516001600160a01b038084169216907fe9009ef01442bf4abfee682ac3f0470c1bde8d70770cdd78c69d7fa67996b45e90600090a36002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3360009081526001602052604090205460ff16610fc95760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b8061271061ffff82161115610fff57604051630c1e501760e41b815261ffff821660048201526127106024820152604401610669565b6004805461ffff8416620100000263ffff0000199091161790557f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c061105660065460009081526005602052604090205461ffff1690565b6004546040805161ffff93841681528383166020820152640100000000830463ffffffff16918101919091529185166060830152600160401b900460ff161515608082015260a0015b60405180910390a15050565b6009546000908190600160a01b900460ff1680156110d357506009546001600160a01b031615155b156111e2576002546009546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906126b9565b90506000600960009054906101000a90046001600160a01b03166001600160a01b0316633ae732596040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c891906126b9565b9050808211156111df576111dc8183612785565b92505b50505b6000610a16611e28565b6108013382611ebf565b3360009081526001602052604090205460ff166112435760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b6004805468ff00000000000000001916600160401b831515021790556006546000908152600560205260409020547f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09061ffff166004546040805161ffff93841681528383166020820152640100000000830463ffffffff1691810191909152620100009091049091166060820152821515608082015260a0015b60405180910390a150565b3360009081526001602052604090205460ff166113365760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b806301e133808163ffffffff16111561137457604051632b44144b60e11b815263ffffffff821660048201526301e133806024820152604401610669565b6004805467ffffffff00000000191664010000000063ffffffff8516021790556006546000908152600560205260409020547f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09061ffff166004546040805161ffff9384168152838316602082015263ffffffff8716918101919091526201000082049092166060830152600160401b900460ff161515608082015260a00161109f565b6000546001600160a01b0316331461145b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610669565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60006006546000036114945750600090565b600160065461061b9190612785565b3360009081526001602052604090205460ff166114f05760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b6108018160016119f1565b6009546040516343ec644160e11b81523360048201526001600160a01b03909116906387d8c88290602401600060405180830381600087803b15801561154057600080fd5b505af1158015610b86573d6000803e3d6000fd5b61080181611c2c565b3360009081526001602052604090205460ff166115aa5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b8461ffff8082166000036115e55760405163b81ebab960e01b8152600060048201526001602482015261ffff82166044820152606401610669565b8061ffff168261ffff1611156116235760405163b81ebab960e01b815261ffff80841660048301526001602483015282166044820152606401610669565b856000611633600261271061266d565b90508061ffff168261ffff16111561166c5760405163113e738160e11b815261ffff808416600483015282166024820152604401610669565b8561271061ffff821611156116a257604051630c1e501760e41b815261ffff821660048201526127106024820152604401610669565b876301e133808163ffffffff1611156116e057604051632b44144b60e11b815263ffffffff821660048201526301e133806024820152604401610669565b6116ed8b8b8b8b8b6120c7565b5050505050505050505050565b60045460009061ffff16810361171257506000919050565b600454612710906117279061ffff168461268e565b6107a391906126a5565b6000546001600160a01b031633146117745760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610669565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146117d85760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610669565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616391016112de565b6009546000908190600160a01b900460ff16801561187357506009546001600160a01b031615155b156118e957600954604051637a0787a960e11b81526001600160a01b0385811660048301529091169063f40f0f5290602401602060405180830381865afa1580156118c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e691906126b9565b90505b60006118f48461218e565b905061190081836126d2565b949350505050565b3360009081526001602052604090205460ff166119555760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610669565b600061195f6110ab565b905080156108015760025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc91906126e5565b5050565b6119e8612395565b61061b33610d44565b6001600160a01b038216600090815260086020526040812080549091819003611a2d5760405163150a67e960e01b815260040160405180910390fd5b6004546000908290829062010000900461ffff1615801590611a6057506003850154640100000000900463ffffffff1642105b90508515611a8b5760038501805463ffffffff19164263ffffffff1617905560006001860155611a97565b611a94856121af565b92505b600085558015611b145760045461270f196201000090910461ffff1601611ae657600385015460405163bb80e83960e01b815264010000000090910463ffffffff166004820152602401610669565b60045460009061271090611b049062010000900461ffff168761268e565b611b0e91906126a5565b90920391505b60038501805467ffffffff00000000191690556002546001600160a01b031663a9059cbb88611b4386866126d2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bca91906126e5565b5060038054859003905560408051838152602081018590526001600160a01b038916917f563fc70fca9d440d883299c76a721644d5aca7c45df98aeb5292c4cb823579bf910160405180910390a250505050505050565b61088c3360006119f1565b6001600160a01b038116600090815260086020526040812090611c4e826121af565b905080600003611c715760405163fa92394f60e01b815260040160405180910390fd5b600654826002015414611c875760065460028301555b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfe91906126e5565b50826001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051611d3a91815260200190565b60405180910390a2505050565b600660008154611d5690612798565b909155506006546000908152600560205260409020805461ffff191661ffff9290921691909117905542600755565b611dc36040518060a00160405280600081526020016000815260200160008152602001600063ffffffff168152602001600063ffffffff1681525090565b506001600160a01b0316600090815260086020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260039091015463ffffffff808216606084015264010000000090910416608082015290565b6002546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9991906126b9565b90508060035410611eac57600091505090565b600354611eb99082612785565b91505090565b80600003611ee05760405163150a67e960e01b815260040160405180910390fd5b600454600160401b900460ff16611f0a5760405163ac9108a560e01b815260040160405180910390fd5b6001600160a01b0382166000908152600860205260409020600381015463ffffffff1615801590611f3b5750805415155b15611f4f57611f498161221f565b60018201555b600454829061ffff1615611f6e576000611f68846116fa565b90910390505b815481018255600654600283015414611f8a5760065460028301555b60038201805463ffffffff19164263ffffffff818116929092179283905591640100000000900416600003611ff757600454611fd490640100000000900463ffffffff16826127b1565b8360030160046101000a81548163ffffffff021916908363ffffffff1602179055505b60038054830190556002546040516323b872dd60e01b81526001600160a01b03878116600483015230602483015260448201879052909116906323b872dd906064016020604051808303816000875af1158015612058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207c91906126e5565b50846001600160a01b03167f1fdab8a8457aaf782e4b6217d6ffa6f5006eda7e50922dd092b2e1524275d774836040516120b891815260200190565b60405180910390a25050505050565b6120d085611d47565b6004805461ffff86811667ffffffff0000ffff19909216821764010000000063ffffffff88169081029190911768ff00000000ffff000019166201000087841690810268ff0000000000000000191691909117600160401b8715159081029190911790955560408051938b168452602084019490945292820152606081019190915260808101919091527f1c2c1dbad894bdeb579ce75c5d3f6f81ea37eb4a82ce5f5e4b4822944ea788c09060a00160405180910390a15050505050565b6001600160a01b03811660009081526008602052604081206108f28161221f565b6000806121bb8361221f565b905080156107a35760006121cd6110ab565b9050818110156121fa57604051634cbad4bb60e11b81526004810183905260248101829052604401610669565b506000600184015560038301805463ffffffff19164263ffffffff1617905592915050565b600381015460009063ffffffff16810361223b57506000919050565b600382015463ffffffff16421161225457506000919050565b60008060065484600201541461234657600754600385015463ffffffff16106122b957600384015461228c9063ffffffff1642612785565b84546006546000908152600560205260409020549192506122b291839061ffff1661088e565b9150612386565b6000600754426122c99190612785565b60038601546007549192506122e69163ffffffff90911690612785565b855460065460009081526005602052604090205491935061230c91839061ffff1661088e565b8554600287015460009081526005602052604090205491945061233491849061ffff1661088e565b61233e90846126d2565b925050612386565b600384015461235b9063ffffffff1642612785565b8454600286015460009081526005602052604090205491925061238391839061ffff1661088e565b91505b600184015461190090836126d2565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff1681525090565b803561ffff8116811461241957600080fd5b919050565b60006020828403121561243057600080fd5b6107a082612407565b6000806040838503121561244c57600080fd5b8235915061245c60208401612407565b90509250929050565b6001600160a01b038116811461080157600080fd5b60006020828403121561248c57600080fd5b81356108f281612465565b6000806000606084860312156124ac57600080fd5b83359250602084013591506124c360408501612407565b90509250925092565b801515811461080157600080fd5b6000602082840312156124ec57600080fd5b81356108f2816124cc565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015161255760e084018263ffffffff169052565b506101008381015163ffffffff90811691840191909152610120808501518216908401526101409384015116929091019190915290565b6000602082840312156125a057600080fd5b5035919050565b63ffffffff8116811461080157600080fd5b6000602082840312156125cb57600080fd5b81356108f2816125a7565b600080600080600060a086880312156125ee57600080fd5b6125f786612407565b945061260560208701612407565b93506040860135612615816125a7565b925061262360608701612407565b91506080860135612633816124cc565b809150509295509295909350565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff8084168061268257612682612641565b92169190910492915050565b80820281158282048414176107a3576107a3612657565b6000826126b4576126b4612641565b500490565b6000602082840312156126cb57600080fd5b5051919050565b808201808211156107a3576107a3612657565b6000602082840312156126f757600080fd5b81516108f2816124cc565b60006080828403121561271457600080fd5b6040516080810181811067ffffffffffffffff8211171561274557634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151612766816125a7565b60408201526060830151612779816125a7565b60608201529392505050565b818103818111156107a3576107a3612657565b6000600182016127aa576127aa612657565b5060010190565b63ffffffff818116838216019080821115610e9e57610e9e61265756fea2646970667358221220474b41417d129f87e7aea94aee5f5555f018e2b8dffc34333ca7aa72e3ab143c64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000034aee49b506e43fdd4bea24f65e4e05ef5a07a0c0000000000000000000000001e2d230c7a7f4c679fb1378f1f51dedeae85cd72
-----Decoded View---------------
Arg [0] : prevStaking (address): 0x34aeE49b506E43FDD4bEa24f65e4E05EF5a07a0c
Arg [1] : token (address): 0x1e2D230C7A7F4C679Fb1378F1f51dEDeAe85Cd72
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000034aee49b506e43fdd4bea24f65e4e05ef5a07a0c
Arg [1] : 0000000000000000000000001e2d230c7a7f4c679fb1378f1f51dedeae85cd72
Deployed Bytecode Sourcemap
17381:3569:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20369:123;;;:::i;:::-;;;160:25:1;;;148:2;133:18;20369:123:0;;;;;;;;5654:206;;;;;;:::i;:::-;;:::i;:::-;;8907:198;;;;;;:::i;:::-;;:::i;15328:106::-;15411:14;;15374:6;15400:26;;;:10;:26;;;;;;;;15328:106;;;980:6:1;968:19;;;950:38;;938:2;923:18;15328:106:0;806:188:1;2186:32:0;;;;;;;;;;;;;;;1272:10:1;1260:23;;;1242:42;;1230:2;1215:18;2186:32:0;1098:192:1;11170:98:0;;;;;;:::i;:::-;;:::i;18068:233::-;;;:::i;1353:103::-;;;;;;:::i;:::-;1408:4;1443:5;-1:-1:-1;;;;;1432:16:0;;;1443:5;;1432:16;;1353:103;;;;1871:14:1;;1864:22;1846:41;;1834:2;1819:18;1353:103:0;1706:187:1;8398:504:0;;;;;;:::i;:::-;;:::i;20850:97::-;;;;;;:::i;:::-;;:::i;20500:342::-;;;:::i;14538:275::-;;;;;;:::i;:::-;;:::i;15717:99::-;15795:13;;15717:99;;2225:21;;;;;-1:-1:-1;;;2225:21:0;;;;;;17434:30;;;;;-1:-1:-1;;;;;17434:30:0;;;;;;-1:-1:-1;;;;;2756:55:1;;;2738:74;;2726:2;2711:18;17434:30:0;2592:226:1;12835:60:0;;;:::i;14317:216::-;;;;;;:::i;:::-;;:::i;2118:24::-;;;;;;;;;5282:192;;;;;;:::i;:::-;;:::i;2001:27::-;;;;;-1:-1:-1;;;;;2001:27:0;;;11080:82;;;:::i;19012:1225::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6496:169::-;;;;;;:::i;:::-;;:::i;5865:213::-;;;;;;:::i;:::-;;:::i;2069:42::-;;2106:5;2069:42;;18429:575;;;:::i;9110:82::-;;;;;;:::i;:::-;;:::i;2149:30::-;;;;;;;;;;;;6083:189;;;;;;:::i;:::-;;:::i;6277:211::-;;;;;;:::i;:::-;;:::i;1146:94::-;;;;;;:::i;:::-;;:::i;15824:173::-;;;:::i;11276:106::-;;;;;;:::i;:::-;;:::i;18309:112::-;;;:::i;2035:27::-;;;;;;12903:77;;;;;;:::i;:::-;;:::i;4463:379::-;;;;;;:::i;:::-;;:::i;10825:171::-;;;;;;:::i;:::-;;:::i;1248:97::-;;;;;;:::i;:::-;;:::i;1579:173::-;;;;;;:::i;:::-;;:::i;17671:389::-;;;;;;:::i;:::-;;:::i;14821:204::-;;;:::i;20245:119::-;;;:::i;1464:107::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1544:19:0;1520:4;1544:19;;;:14;:19;;;;;;;;;1464:107;20369:123;20432:7;20459:25;20473:10;20459:13;:25::i;:::-;20452:32;;20369:123;:::o;5654:206::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;;;;;;;;;5725:3;3589:10:::1;3602:15;3616:1;2106:5;3602:15;:::i;:::-;3589:28;;3638:3;3632:9;;:3;:9;;;3628:76;;;3665:27;::::0;-1:-1:-1;;;3665:27:0;;6398:6:1;6431:15;;;3665:27:0::1;::::0;::::1;6413:34:1::0;6483:15;;6463:18;;;6456:43;6361:18;;3665:27:0::1;6218:287:1::0;3628:76:0::1;5735:10:::2;:16:::0;;::::2;::::0;::::2;-1:-1:-1::0;;5735:16:0;;::::2;;::::0;;5767:88:::2;5785:15;15411:14:::0;;15374:6;15400:26;;;:10;:26;;;;;;;;;15328:106;5785:15:::2;5807:18;::::0;5767:88:::2;::::0;;5827:16:::2;6798:15:1::0;;;6780:34;;6850:15;;;6845:2;6830:18;;6823:43;5807:18:0;;::::2;;;6882::1::0;;;6875:51;;;;5827:16:0;;::::2;::::0;;::::2;6957:2:1::0;6942:18;;6935:43;-1:-1:-1;;;5845:9:0;::::2;;;7022:14:1::0;7015:22;7009:3;6994:19;;6987:51;6742:3;6727:19;5767:88:0::2;;;;;;;;3578:136:::1;1129:1;5654:206:::0;:::o;8907:198::-;8984:7;9002:11;;;:30;;-1:-1:-1;9017:15:0;;;;9002:30;8998:56;;;-1:-1:-1;9047:1:0;9040:8;;8998:56;2106:5;9067:19;:33;:19;;:6;:19;:::i;:::-;:33;;;;:::i;:::-;9060:40;;8907:198;;;;;:::o;11170:98::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;11237:23:::1;11246:6;11254:5;11237:8;:23::i;:::-;11170:98:::0;:::o;18068:233::-;18118:14;;-1:-1:-1;;;18118:14:0;;;;:47;;;;-1:-1:-1;18136:15:0;;-1:-1:-1;;;;;18136:15:0;:29;;18118:47;18114:154;;;18199:15;;18186:59;;-1:-1:-1;;;18186:59:0;;18234:10;18186:59;;;2738:74:1;-1:-1:-1;;;;;18199:15:0;;;;18186:47;;2711:18:1;;18186:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18182:75;;18278:15;:13;:15::i;:::-;18068:233::o;8398:504::-;8503:7;8596:11;;;:29;;-1:-1:-1;8611:14:0;;8596:29;:48;;;-1:-1:-1;8629:15:0;;;;8596:48;8592:74;;;-1:-1:-1;8659:1:0;8652:8;;8592:74;8754:17;8774:31;8786:6;8794:10;8774:11;:31::i;:::-;8754:51;;8814:9;8827:1;8814:14;8810:40;;8843:1;8836:8;;;;;8810:40;8889:8;8864:21;8876:9;8864;:21;:::i;:::-;8863:34;;;;:::i;:::-;8856:41;;;8398:504;;;;;;:::o;20850:97::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;20915:14:::1;:24:::0;;;::::1;;-1:-1:-1::0;;;20915:24:0::1;-1:-1:-1::0;;;;20915:24:0;;::::1;::::0;;;::::1;::::0;;20850:97::o;20500:342::-;20604:14;;20552:7;;;;-1:-1:-1;;;20604:14:0;;;;:47;;;;-1:-1:-1;20622:15:0;;-1:-1:-1;;;;;20622:15:0;:29;;20604:47;20600:141;;;20693:15;;;;;;;;;-1:-1:-1;;;;;20693:15:0;-1:-1:-1;;;;;20680:47:0;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20668:61;;20600:141;20751:15;20769:26;16085:12;;;16005:100;20769:26;20751:44;-1:-1:-1;20815:19:0;20751:44;20815:9;:19;:::i;:::-;20808:26;;;;20500:342;:::o;14538:275::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;14610:12:::1;::::0;-1:-1:-1;;;;;14610:12:0;;::::1;14605:17:::0;;::::1;::::0;14601:74:::1;;14646:17;;-1:-1:-1::0;;;14646:17:0::1;;;;;;;;;;;14601:74;14734:32;::::0;-1:-1:-1;;;14734:32:0;;14760:4:::1;14734:32;::::0;::::1;2738:74:1::0;14709:1:0;;14685:14:::1;::::0;-1:-1:-1;;;;;14734:17:0;::::1;::::0;::::1;::::0;2711:18:1;;14734:32:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14771:37;::::0;-1:-1:-1;;;14771:37:0;;14788:10:::1;14771:37;::::0;::::1;7840:74:1::0;7930:18;;;7923:34;;;14716:50:0;;-1:-1:-1;;;;;;14771:16:0;::::1;::::0;::::1;::::0;7813:18:1;;14771:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14590:223;;14538:275:::0;:::o;12835:60::-;12872:18;12879:10;12872:6;:18::i;14317:216::-;-1:-1:-1;;;;;14401:19:0;;14386:4;14401:19;;;:13;:19;;;;;:34;;;;;:39;;14397:69;;-1:-1:-1;14455:5:0;;14317:216;-1:-1:-1;14317:216:0:o;14397:69::-;-1:-1:-1;;;;;;14497:19:0;;;;;:13;:19;;;;;:31;;;;;;;;14479:15;:49;;14317:216::o;5282:192::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;5342:6;4090:16:::1;4121::::0;;::::1;4077:10;4121:16:::0;4117:77:::1;;4161:21;::::0;-1:-1:-1;;;4161:21:0;;4172:1:::1;4161:21;::::0;::::1;8457:34:1::0;4175:1:0::1;8507:18:1::0;;;8500:43;8442:6;8579:15;;8559:18;;;8552:43;8405:18;;4161:21:0::1;8218:383:1::0;4117:77:0::1;4222:3;4208:17;;:11;:17;;;4204:88;;;4249:31;::::0;-1:-1:-1;;;4249:31:0;;8442:6:1;8475:15;;;4249:31:0::1;::::0;::::1;8457:34:1::0;4273:1:0::1;8507:18:1::0;;;8500:43;8579:15;;8559:18;;;8552:43;8405:18;;4249:31:0::1;8218:383:1::0;4204:88:0::1;5355:18:::2;5366:6;5355:10;:18::i;:::-;5409:10;::::0;5383:86:::2;::::0;;5409:10:::2;6798:15:1::0;;;6780:34;;5409:10:0;;::::2;6845:2:1::0;6830:18;;6823:43;5421:18:0;;::::2;;;6882::1::0;;;6875:51;;;;5441:16:0;;::::2;::::0;;::::2;6957:2:1::0;6942:18;;6935:43;-1:-1:-1;;;5459:9:0;;::::2;;;7022:14:1::0;7015:22;7009:3;6994:19;;6987:51;5383:86:0::2;::::0;6742:3:1;6727:19;5383:86:0::2;6510:534:1::0;11080:82:0;11128:26;11137:10;11149:4;11128:8;:26::i;19012:1225::-;19067:25;;:::i;:::-;19105:34;;:::i;:::-;19153:40;19196:23;19212:6;19196:15;:23::i;:::-;19254:21;;19230:45;;19307:21;;19286:18;;;;:42;;;;19361:19;;;;;;19339;;;:41;;;;19416:19;19391:22;;;:44;19466:17;;;;19446;;;:37;-1:-1:-1;19520:23:0;;;19494:49;;;;:23;;;:49;19577:20;;;;19554:43;:20;;;:43;19614:14;;19254:21;;-1:-1:-1;;;;19614:14:0;;;;:47;;;;-1:-1:-1;19632:15:0;;-1:-1:-1;;;;;19632:15:0;:29;;19614:47;19610:592;;;19695:15;;19682:47;;-1:-1:-1;;;19682:47:0;;-1:-1:-1;;;;;2756:55:1;;;19682:47:0;;;2738:74:1;19695:15:0;;;;19682:39;;2711:18:1;;19682:47:0;;;;;;;;;;;;;;;;;;-1:-1:-1;19682:47:0;;;;;;;;-1:-1:-1;;19682:47:0;;;;;;;;;;;;:::i;:::-;;;19678:513;;;19820:21;;19799:18;;;:42;19885:19;;;;19860:22;;;:44;19948:21;;19923:46;;19799:8;;19923:46;;19948:21;;19923:46;:::i;:::-;;;-1:-1:-1;20011:19:0;;;;;19988;;;:42;;;;20011:19;;19988:42;:::i;:::-;;;-1:-1:-1;20078:23:0;;;;20049:52;;;;:26;;;:52;20146:20;;;;;20120:46;:23;;;:46;19678:513;-1:-1:-1;20221:8:0;19012:1225;-1:-1:-1;;19012:1225:0:o;6496:169::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;3456:12:::1;::::0;:16;3452:74:::1;;3496:18;;-1:-1:-1::0;;;3496:18:0::1;;;;;;;;;;;3452:74;6600:12:::2;::::0;6581:42:::2;::::0;-1:-1:-1;;;;;6581:42:0;;::::2;::::0;6600:12:::2;::::0;6581:42:::2;::::0;6600:12:::2;::::0;6581:42:::2;6634:12;:23:::0;;-1:-1:-1;;6634:23:0::2;-1:-1:-1::0;;;;;6634:23:0;;;::::2;::::0;;;::::2;::::0;;6496:169::o;5865:213::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;5943:3;2106:5:::1;3775:17;::::0;::::1;;3771:93;;;3816:36;::::0;-1:-1:-1;;;3816:36:0;;6398:6:1;6431:15;;3816:36:0::1;::::0;::::1;6413:34:1::0;2106:5:0::1;6463:18:1::0;;;6456:43;6361:18;;3816:36:0::1;6218:287:1::0;3771:93:0::1;5953:16:::2;:22:::0;;::::2;::::0;::::2;::::0;::::2;-1:-1:-1::0;;5953:22:0;;::::2;;::::0;;5991:82:::2;6009:15;15411:14:::0;;15374:6;15400:26;;;:10;:26;;;;;;;;;15328:106;6009:15:::2;6026:10;::::0;5991:82:::2;::::0;;6026:10:::2;6798:15:1::0;;;6780:34;;6026:10:0;;::::2;6845:2:1::0;6830:18;;6823:43;6038:18:0;;::::2;;;6882::1::0;;;6875:51;;;;6962:15;;;6957:2;6942:18;;6935:43;-1:-1:-1;;;6063:9:0;::::2;;;7022:14:1::0;7015:22;7009:3;6994:19;;6987:51;6742:3;6727:19;5991:82:0::2;;;;;;;;1129:1:::1;5865:213:::0;:::o;18429:575::-;18547:14;;18492:7;;;;-1:-1:-1;;;18547:14:0;;;;:47;;;;-1:-1:-1;18565:15:0;;-1:-1:-1;;;;;18565:15:0;:29;;18547:47;18543:346;;;18639:12;;18663:15;;18632:47;;-1:-1:-1;;;18632:47:0;;-1:-1:-1;;;;;18663:15:0;;;18632:47;;;2738:74:1;18611:18:0;;18639:12;;;;;18632:30;;2711:18:1;;18632:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18611:68;;18694:17;18727:15;;;;;;;;;-1:-1:-1;;;;;18727:15:0;-1:-1:-1;;;;;18714:47:0;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18694:69;;18795:9;18782:10;:22;18778:100;;;18840:22;18853:9;18840:10;:22;:::i;:::-;18825:37;;18778:100;18596:293;;18543:346;18899:19;18921:29;:27;:29::i;9110:82::-;9161:26;9168:10;9180:6;9161;:26::i;6083:189::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;6147:9:::1;:18:::0;;-1:-1:-1;;6147:18:0::1;-1:-1:-1::0;;;6147:18:0;::::1;;;;::::0;;15411:14;;-1:-1:-1;15400:26:0;;;:10;:26;;;;;;6175:92:::1;::::0;15400:26;;6210:10:::1;::::0;6175:92:::1;::::0;;6210:10:::1;6798:15:1::0;;;6780:34;;6210:10:0;;::::1;6845:2:1::0;6830:18;;6823:43;6222:18:0;;::::1;;;6882::1::0;;;6875:51;;;;6242:16:0;;;::::1;::::0;;::::1;6957:2:1::0;6942:18;;6935:43;7022:14;;7015:22;7009:3;6994:19;;6987:51;6742:3;6727:19;6175:92:0::1;;;;;;;;6083:189:::0;:::o;6277:211::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;6356:4:::1;3939:8;3932:4;:15;;;3928:82;;;3971:27;::::0;-1:-1:-1;;;3971:27:0;;10178:10:1;10215:15;;3971:27:0::1;::::0;::::1;10197:34:1::0;3989:8:0::1;10247:18:1::0;;;10240:43;10141:18;;3971:27:0::1;9982:307:1::0;3928:82:0::1;6367:18:::2;:25:::0;;-1:-1:-1;;6367:25:0::2;::::0;::::2;::::0;::::2;;;::::0;;15411:14;;-1:-1:-1;15400:26:0;;;:10;:26;;;;;;6402:81:::2;::::0;15400:26;;6437:10:::2;::::0;6402:81:::2;::::0;;6437:10:::2;6798:15:1::0;;;6780:34;;6437:10:0;;::::2;6845:2:1::0;6830:18;;6823:43;6914:10;6902:23;;6882:18;;;6875:51;;;;6455:16:0;;::::2;::::0;;::::2;6957:2:1::0;6942:18;;6935:43;-1:-1:-1;;;6473:9:0;::::2;;;7022:14:1::0;7015:22;7009:3;6994:19;;6987:51;6742:3;6727:19;6402:81:0::2;6510:534:1::0;1146:94:0;1408:4;1443:5;-1:-1:-1;;;;;1443:5:0;1005:10;1432:16;989:38;;;;-1:-1:-1;;;989:38:0;;10496:2:1;989:38:0;;;10478:21:1;10535:1;10515:18;;;10508:29;-1:-1:-1;;;10553:18:1;;;10546:36;10599:18;;989:38:0;10294:329:1;989:38:0;-1:-1:-1;;;;;1206:19:0::1;;::::0;;;1228:4:::1;1206:19;::::0;;;;;;;:26;;-1:-1:-1;;1206:26:0::1;::::0;;::::1;::::0;;1146:94::o;15824:173::-;15874:7;15898:14;;15916:1;15898:19;15894:60;;-1:-1:-1;15941:1:0;;15824:173::o;15894:60::-;15988:1;15971:14;;:18;;;;:::i;11276:106::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;11352:22:::1;11361:6;11369:4;11352:8;:22::i;18309:112::-:0;18367:15;;18354:59;;-1:-1:-1;;;18354:59:0;;18402:10;18354:59;;;2738:74:1;-1:-1:-1;;;;;18367:15:0;;;;18354:47;;2711:18:1;;18354:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12903:77;12958:14;12965:6;12958;:14::i;4463:379::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;4639:6;4090:16:::1;4121::::0;;::::1;4077:10;4121:16:::0;4117:77:::1;;4161:21;::::0;-1:-1:-1;;;4161:21:0;;4172:1:::1;4161:21;::::0;::::1;8457:34:1::0;4175:1:0::1;8507:18:1::0;;;8500:43;8442:6;8579:15;;8559:18;;;8552:43;8405:18;;4161:21:0::1;8218:383:1::0;4117:77:0::1;4222:3;4208:17;;:11;:17;;;4204:88;;;4249:31;::::0;-1:-1:-1;;;4249:31:0;;8442:6:1;8475:15;;;4249:31:0::1;::::0;::::1;8457:34:1::0;4273:1:0::1;8507:18:1::0;;;8500:43;8579:15;;8559:18;;;8552:43;8405:18;;4249:31:0::1;8218:383:1::0;4204:88:0::1;4663:13:::0;3589:10:::2;3602:15;3616:1;2106:5;3602:15;:::i;:::-;3589:28;;3638:3;3632:9;;:3;:9;;;3628:76;;;3665:27;::::0;-1:-1:-1;;;3665:27:0;;6398:6:1;6431:15;;;3665:27:0::2;::::0;::::2;6413:34:1::0;6483:15;;6463:18;;;6456:43;6361:18;;3665:27:0::2;6218:287:1::0;3628:76:0::2;4704:14:::0;2106:5:::3;3775:17;::::0;::::3;;3771:93;;;3816:36;::::0;-1:-1:-1;;;3816:36:0;;6398:6:1;6431:15;;3816:36:0::3;::::0;::::3;6413:34:1::0;2106:5:0::3;6463:18:1::0;;;6456:43;6361:18;;3816:36:0::3;6218:287:1::0;3771:93:0::3;4736:13:::4;3939:8;3932:4;:15;;;3928:82;;;3971:27;::::0;-1:-1:-1;;;3971:27:0;;10178:10:1;10215:15;;3971:27:0::4;::::0;::::4;10197:34:1::0;3989:8:0::4;10247:18:1::0;;;10240:43;10141:18;;3971:27:0::4;9982:307:1::0;3928:82:0::4;4758:79:::5;4776:6;4784:13;4799;4814:14;4830:6;4758:17;:79::i;:::-;3868:1:::4;3708::::3;3578:136:::2;4302:1;4066:245:::1;1129:1;4463:379:::0;;;;;:::o;10825:171::-;10910:10;;10892:7;;10910:10;;:15;;10906:41;;-1:-1:-1;10940:1:0;;10825:171;-1:-1:-1;10825:171:0:o;10906:41::-;10967:10;;2106:5;;10958:19;;:33;10967:10;10958:6;:19;:::i;:::-;:33;;;;:::i;1248:97::-;1408:4;1443:5;-1:-1:-1;;;;;1443:5:0;1005:10;1432:16;989:38;;;;-1:-1:-1;;;989:38:0;;10496:2:1;989:38:0;;;10478:21:1;10535:1;10515:18;;;10508:29;-1:-1:-1;;;10553:18:1;;;10546:36;10599:18;;989:38:0;10294:329:1;989:38:0;-1:-1:-1;;;;;1310:19:0::1;1332:5;1310:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;1310:27:0::1;::::0;;1248:97::o;1579:173::-;1408:4;1443:5;-1:-1:-1;;;;;1443:5:0;1005:10;1432:16;989:38;;;;-1:-1:-1;;;989:38:0;;10496:2:1;989:38:0;;;10478:21:1;10535:1;10515:18;;;10508:29;-1:-1:-1;;;10553:18:1;;;10546:36;10599:18;;989:38:0;10294:329:1;989:38:0;1655:5:::1;:11:::0;;-1:-1:-1;;1655:11:0::1;-1:-1:-1::0;;;;;1655:11:0;::::1;::::0;;::::1;::::0;;1677:19;;;-1:-1:-1;1677:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;1677:26:0::1;::::0;;::::1;::::0;;;1719:25;;2738:74:1;;;1719:25:0::1;::::0;2711:18:1;1719:25:0::1;2592:226:1::0;17671:389:0;17799:14;;17741:7;;;;-1:-1:-1;;;17799:14:0;;;;:47;;;;-1:-1:-1;17817:15:0;;-1:-1:-1;;;;;17817:15:0;:29;;17799:47;17795:150;;;17894:15;;17881:52;;-1:-1:-1;;;17881:52:0;;-1:-1:-1;;;;;2756:55:1;;;17881:52:0;;;2738:74:1;17894:15:0;;;;17881:43;;2711:18:1;;17881:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17863:70;;17795:150;17955:19;17977:28;17997:7;17977:19;:28::i;:::-;17955:50;-1:-1:-1;18023:29:0;17955:50;18023:15;:29;:::i;:::-;18016:36;17671:389;-1:-1:-1;;;;17671:389:0:o;14821:204::-;1100:10;1520:4;1544:19;;;:14;:19;;;;;;;;1079:48;;;;-1:-1:-1;;;1079:48:0;;5624:2:1;1079:48:0;;;5606:21:1;5663:2;5643:18;;;5636:30;-1:-1:-1;;;5682:18:1;;;5675:41;5733:18;;1079:48:0;5422:335:1;1079:48:0;14881:13:::1;14897:23;:21;:23::i;:::-;14881:39:::0;-1:-1:-1;14935:9:0;;14931:90:::1;;14968:12;::::0;14961:48:::1;::::0;-1:-1:-1;;;14961:48:0;;14991:10:::1;14961:48;::::0;::::1;7840:74:1::0;7930:18;;;7923:34;;;-1:-1:-1;;;;;14968:12:0;;::::1;::::0;14961:29:::1;::::0;7813:18:1;;14961:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14870:155;14821:204::o:0;20245:119::-;20291:25;;:::i;:::-;20336:20;20345:10;20336:8;:20::i;11387:1443::-;-1:-1:-1;;;;;11475:21:0;;11449:23;11475:21;;;:13;:21;;;;;11528:17;;11475:21;;11560;;;11556:72;;11605:11;;-1:-1:-1;;;11605:11:0;;;;;;;;;;;11556:72;11736:16;;11638:13;;11686:16;;11638:13;;11736:16;;;;;:20;;;;:58;;-1:-1:-1;11778:16:0;;;;;;;;;11760:15;:34;11736:58;11713:81;;11904:7;11900:172;;;11928:19;;;:45;;-1:-1:-1;;11928:45:0;11957:15;11928:45;;;;;-1:-1:-1;;11988:15:0;;:19;11900:172;;;12048:12;12055:4;12048:6;:12::i;:::-;12040:20;;11900:172;12096:1;12076:21;;12142:396;;;;12266:16;;-1:-1:-1;;12266:16:0;;;;:31;:16;:31;12262:108;;12337:16;;;;12325:29;;-1:-1:-1;;;12325:29:0;;12337:16;;;;;;;12325:29;;1242:42:1;1215:18;;12325:29:0;1098:192:1;12262:108:0;12417:16;;12384:11;;2106:5;;12398:35;;12417:16;;;12398:49;12417:16;12398;:35;:::i;:::-;:49;;;;:::i;:::-;12491:20;;;;-1:-1:-1;12142:396:0;12548:16;;;:20;;-1:-1:-1;;12548:20:0;;;12644:12;;-1:-1:-1;;;;;12644:12:0;12637:29;12667:6;12675:21;12691:5;12675:13;:21;:::i;:::-;12637:60;;;;;;;;;;-1:-1:-1;;;;;7858:55:1;;;12637:60:0;;;7840:74:1;7930:18;;;7923:34;7813:18;;12637:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12727:12:0;:32;;;;;;;12782:43;;;11041:25:1;;;11097:2;11082:18;;11075:34;;;-1:-1:-1;;;;;12782:43:0;;;;;11014:18:1;12782:43:0;;;;;;;11444:1386;;;;;11387:1443;;:::o;11001:71::-;11040:27;11049:10;11061:5;11040:8;:27::i;12988:434::-;-1:-1:-1;;;;;13066:21:0;;13040:23;13066:21;;;:13;:21;;;;;;13112:12;13066:21;13112:6;:12::i;:::-;13092:32;;13139:9;13152:1;13139:14;13135:72;;13177:18;;-1:-1:-1;;;13177:18:0;;;;;;;;;;;13135:72;13238:14;;13221:4;:13;;;:31;13217:94;;13285:14;;13269:13;;;:30;13217:94;13328:12;;13321:48;;-1:-1:-1;;;13321:48:0;;-1:-1:-1;;;;;7858:55:1;;;13321:48:0;;;7840:74:1;7930:18;;;7923:34;;;13328:12:0;;;;13321:29;;7813:18:1;;13321:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13399:6;-1:-1:-1;;;;;13385:32:0;;13407:9;13385:32;;;;160:25:1;;148:2;133:18;;14:177;13385:32:0;;;;;;;;13029:393;;12988:434;:::o;5482:167::-;5539:14;;5537:16;;;;;:::i;:::-;;;;-1:-1:-1;5575:14:0;;5564:26;;;;:10;:26;;;;;:35;;-1:-1:-1;;5564:35:0;;;;;;;;;;;;5626:15;5610:13;:31;5482:167::o;15030:115::-;15088:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15088:17:0;-1:-1:-1;;;;;;15119:21:0;;;;;:13;:21;;;;;;;;;15112:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15030:115::o;15442:267::-;15549:12;;15542:45;;-1:-1:-1;;;15542:45:0;;15581:4;15542:45;;;2738:74:1;15504:7:0;;;;-1:-1:-1;;;;;15549:12:0;;;;15542:30;;2711:18:1;;15542:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15524:63;;15618:7;15602:12;;:23;15598:64;;15649:1;15642:8;;;15442:267;:::o;15598:64::-;15689:12;;15679:22;;:7;:22;:::i;:::-;15672:29;;;15442:267;:::o;9200:1620::-;9272:6;9282:1;9272:11;9268:62;;9307:11;;-1:-1:-1;;;9307:11:0;;;;;;;;;;;9268:62;9345:9;;-1:-1:-1;;;9345:9:0;;;;9340:70;;9378:20;;-1:-1:-1;;;9378:20:0;;;;;;;;;;;9340:70;-1:-1:-1;;;;;9442:21:0;;9416:23;9442:21;;;:13;:21;;;;;9616:19;;;;;;:24;;;;:49;;-1:-1:-1;9644:17:0;;:21;;9616:49;9612:105;;;9691:20;9706:4;9691:14;:20::i;:::-;9673:15;;;:38;9612:105;9808:10;;9749:6;;9808:10;;:14;9804:168;;9839:12;9854:28;9875:6;9854:20;:28::i;:::-;9926:19;;;;-1:-1:-1;9804:168:0;10001:32;;;;;;10170:14;;10153:13;;;;:31;10149:94;;10217:14;;10201:13;;;:30;10149:94;10372:19;;;:26;;-1:-1:-1;;10372:26:0;10351:15;10372:26;;;;;;;;;;;;10351:15;10413:16;;;;-1:-1:-1;10413:21:0;10409:98;;10477:18;;10470:25;;10477:18;;;;;10470:4;:25;:::i;:::-;10451:4;:16;;;:44;;;;;;;;;;;;;;;;;;10409:98;10596:12;:27;;;;;;10711:12;;10704:64;;-1:-1:-1;;;10704:64:0;;-1:-1:-1;;;;;11718:15:1;;;10704:64:0;;;11700:34:1;10754:4:0;11750:18:1;;;11743:43;11802:18;;;11795:34;;;10711:12:0;;;;10704:33;;11612:18:1;;10704:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10792:6;-1:-1:-1;;;;;10780:32:0;;10800:11;10780:32;;;;160:25:1;;148:2;133:18;;14:177;10780:32:0;;;;;;;;9257:1563;;;9200:1620;;:::o;4847:430::-;5008:18;5019:6;5008:10;:18::i;:::-;5031:10;:26;;;;;;-1:-1:-1;;5062:34:0;;;;;;;;;;;;;;;;-1:-1:-1;;5145:27:0;5107:33;;;;;;;-1:-1:-1;;5145:27:0;;;;;-1:-1:-1;;;5145:27:0;;;;;;;;;;;;;5184:88;;;6798:15:1;;;6780:34;;6845:2;6830:18;;6823:43;;;;6882:18;;;6875:51;6957:2;6942:18;;6935:43;;;;7009:3;6994:19;;6987:51;;;;5184:88:0;;6742:3:1;6727:19;5184:88:0;;;;;;;4847:430;;;;;:::o;6670:174::-;-1:-1:-1;;;;;6779:22:0;;6739:7;6779:22;;;:13;:22;;;;;6819:20;6779:22;6819:14;:20::i;13530:782::-;13589:7;13603:17;13623:20;13638:4;13623:14;:20::i;:::-;13603:40;-1:-1:-1;13652:13:0;;13648:631;;14017:23;14043;:21;:23::i;:::-;14017:49;;14103:9;14085:15;:27;14081:117;;;14140:42;;-1:-1:-1;;;14140:42:0;;;;;11041:25:1;;;11082:18;;;11075:34;;;11014:18;;14140:42:0;10867:248:1;14081:117:0;-1:-1:-1;14221:1:0;14203:15;;;:19;14228;;;:45;;-1:-1:-1;;14228:45:0;14257:15;14228:45;;;;;14298:9;13530:782;-1:-1:-1;;13530:782:0:o;6852:1541::-;7024:19;;;;6924:7;;7024:19;;:24;;7020:50;;-1:-1:-1;7063:1:0;;6852:1541;-1:-1:-1;6852:1541:0:o;7020:50::-;7143:19;;;;;;7124:15;:38;7120:64;;-1:-1:-1;7177:1:0;;6852:1541;-1:-1:-1;6852:1541:0:o;7120:64::-;7326:15;7352:17;7403:14;;7386:4;:13;;;:31;7382:856;;7461:13;;7438:19;;;;;;:36;7434:609;;7525:19;;;;7507:37;;7525:19;;7507:15;:37;:::i;:::-;7594:17;;7635:14;;7594:17;7624:26;;;:10;:26;;;;;;7495:49;;-1:-1:-1;7573:78:0;;7495:49;;7624:26;;7573:20;:78::i;:::-;7563:88;;7382:856;;7434:609;7692:19;7732:13;;7714:15;:31;;;;:::i;:::-;7792:19;;;;7776:13;;7692:53;;-1:-1:-1;7776:35:0;;7792:19;;;;;7776:35;:::i;:::-;7861:17;;7904:14;;7861:17;7893:26;;;:10;:26;;;;;;7764:47;;-1:-1:-1;7840:80:0;;7880:11;;7893:26;;7840:20;:80::i;:::-;7971:17;;8012:13;;;;7971:17;8001:25;;;:10;:25;;;;;;7830:90;;-1:-1:-1;7950:77:0;;7990:9;;8001:25;;7950:20;:77::i;:::-;7939:88;;;;:::i;:::-;;;7673:370;7382:856;;;8105:19;;;;8087:37;;8105:19;;8087:15;:37;:::i;:::-;8170:17;;8211:13;;;;8170:17;8200:25;;;:10;:25;;;;;;8075:49;;-1:-1:-1;8149:77:0;;8075:49;;8200:25;;8149:20;:77::i;:::-;8139:87;;7382:856;8370:15;;;;8360:25;;:7;:25;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:159:1:-;263:20;;323:6;312:18;;302:29;;292:57;;345:1;342;335:12;292:57;196:159;;;:::o;360:184::-;418:6;471:2;459:9;450:7;446:23;442:32;439:52;;;487:1;484;477:12;439:52;510:28;528:9;510:28;:::i;549:252::-;616:6;624;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;729:9;716:23;706:33;;758:37;791:2;780:9;776:18;758:37;:::i;:::-;748:47;;549:252;;;;;:::o;1295:154::-;-1:-1:-1;;;;;1374:5:1;1370:54;1363:5;1360:65;1350:93;;1439:1;1436;1429:12;1454:247;1513:6;1566:2;1554:9;1545:7;1541:23;1537:32;1534:52;;;1582:1;1579;1572:12;1534:52;1621:9;1608:23;1640:31;1665:5;1640:31;:::i;1898:320::-;1974:6;1982;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2095:9;2082:23;2072:33;;2152:2;2141:9;2137:18;2124:32;2114:42;;2175:37;2208:2;2197:9;2193:18;2175:37;:::i;:::-;2165:47;;1898:320;;;;;:::o;2223:118::-;2309:5;2302:13;2295:21;2288:5;2285:32;2275:60;;2331:1;2328;2321:12;2346:241;2402:6;2455:2;2443:9;2434:7;2430:23;2426:32;2423:52;;;2471:1;2468;2461:12;2423:52;2510:9;2497:23;2529:28;2551:5;2529:28;:::i;2823:1170::-;2987:4;3029:3;3018:9;3014:19;3006:27;;3066:6;3060:13;3049:9;3042:32;3130:4;3122:6;3118:17;3112:24;3105:4;3094:9;3090:20;3083:54;3193:4;3185:6;3181:17;3175:24;3168:4;3157:9;3153:20;3146:54;3256:4;3248:6;3244:17;3238:24;3231:4;3220:9;3216:20;3209:54;3319:4;3311:6;3307:17;3301:24;3294:4;3283:9;3279:20;3272:54;3382:4;3374:6;3370:17;3364:24;3357:4;3346:9;3342:20;3335:54;3445:4;3437:6;3433:17;3427:24;3420:4;3409:9;3405:20;3398:54;3499:4;3491:6;3487:17;3481:24;3514:53;3561:4;3550:9;3546:20;3532:12;1075:10;1064:22;1052:35;;999:94;3514:53;-1:-1:-1;3586:6:1;3629:15;;;3623:22;1075:10;1064:22;;;3688:18;;;1052:35;;;;3726:6;3769:15;;;3763:22;1064;;3828:18;;;1052:35;3866:6;3909:15;;;3903:22;1064;3968:18;;;;1052:35;;;;2823:1170;:::o;3998:180::-;4057:6;4110:2;4098:9;4089:7;4085:23;4081:32;4078:52;;;4126:1;4123;4116:12;4078:52;-1:-1:-1;4149:23:1;;3998:180;-1:-1:-1;3998:180:1:o;4183:121::-;4268:10;4261:5;4257:22;4250:5;4247:33;4237:61;;4294:1;4291;4284:12;4309:245;4367:6;4420:2;4408:9;4399:7;4395:23;4391:32;4388:52;;;4436:1;4433;4426:12;4388:52;4475:9;4462:23;4494:30;4518:5;4494:30;:::i;4559:598::-;4647:6;4655;4663;4671;4679;4732:3;4720:9;4711:7;4707:23;4703:33;4700:53;;;4749:1;4746;4739:12;4700:53;4772:28;4790:9;4772:28;:::i;:::-;4762:38;;4819:37;4852:2;4841:9;4837:18;4819:37;:::i;:::-;4809:47;;4906:2;4895:9;4891:18;4878:32;4919:30;4943:5;4919:30;:::i;:::-;4968:5;-1:-1:-1;4992:37:1;5025:2;5010:18;;4992:37;:::i;:::-;4982:47;;5081:3;5070:9;5066:19;5053:33;5095:30;5117:7;5095:30;:::i;:::-;5144:7;5134:17;;;4559:598;;;;;;;;:::o;5762:127::-;5823:10;5818:3;5814:20;5811:1;5804:31;5854:4;5851:1;5844:15;5878:4;5875:1;5868:15;5894:127;5955:10;5950:3;5946:20;5943:1;5936:31;5986:4;5983:1;5976:15;6010:4;6007:1;6000:15;6026:187;6065:1;6091:6;6124:2;6121:1;6117:10;6146:3;6136:37;;6153:18;;:::i;:::-;6191:10;;6187:20;;;;;6026:187;-1:-1:-1;;6026:187:1:o;7049:168::-;7122:9;;;7153;;7170:15;;;7164:22;;7150:37;7140:71;;7191:18;;:::i;7222:120::-;7262:1;7288;7278:35;;7293:18;;:::i;:::-;-1:-1:-1;7327:9:1;;7222:120::o;7347:184::-;7417:6;7470:2;7458:9;7449:7;7445:23;7441:32;7438:52;;;7486:1;7483;7476:12;7438:52;-1:-1:-1;7509:16:1;;7347:184;-1:-1:-1;7347:184:1:o;7536:125::-;7601:9;;;7622:10;;;7619:36;;;7635:18;;:::i;7968:245::-;8035:6;8088:2;8076:9;8067:7;8063:23;8059:32;8056:52;;;8104:1;8101;8094:12;8056:52;8136:9;8130:16;8155:28;8177:5;8155:28;:::i;8985:859::-;9083:6;9136:3;9124:9;9115:7;9111:23;9107:33;9104:53;;;9153:1;9150;9143:12;9104:53;9186:2;9180:9;9228:3;9220:6;9216:16;9298:6;9286:10;9283:22;9262:18;9250:10;9247:34;9244:62;9241:185;;;9348:10;9343:3;9339:20;9336:1;9329:31;9383:4;9380:1;9373:15;9411:4;9408:1;9401:15;9241:185;9446:10;9442:2;9435:22;;9487:9;9481:16;9473:6;9466:32;9552:2;9541:9;9537:18;9531:25;9526:2;9518:6;9514:15;9507:50;9600:2;9589:9;9585:18;9579:25;9613:30;9637:5;9613:30;:::i;:::-;9671:2;9659:15;;9652:30;9727:2;9712:18;;9706:25;9740:32;9706:25;9740:32;:::i;:::-;9800:2;9788:15;;9781:32;9792:6;8985:859;-1:-1:-1;;;8985:859:1:o;9849:128::-;9916:9;;;9937:11;;;9934:37;;;9951:18;;:::i;11120:135::-;11159:3;11180:17;;;11177:43;;11200:18;;:::i;:::-;-1:-1:-1;11247:1:1;11236:13;;11120:135::o;11260:172::-;11327:10;11357;;;11369;;;11353:27;;11392:11;;;11389:37;;;11406:18;;:::i
Swarm Source
ipfs://474b41417d129f87e7aea94aee5f5555f018e2b8dffc34333ca7aa72e3ab143c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.