![ads](/images/gen/moonpay_20.png)
20M+ users trust MoonPay worldwide. Checkout with your preferred payment method.
![ads](/images/gen/cons_20.png)
Ready to onboard to Ethereum? With MetaMask Portfolio, you're in control.
![ads](/images/gen/nexo.png)
Get up to 0.5% cashback per purchase and receive daily interest.
![ads](/images/gen/cons_20.png)
Ready to simplify your web3 experience? Try the all-in-one web3 app trusted by millions worldwide.
Purchase 100+ cryptocurrencies instantly, with Visa/Mastercard, Google/Apple Pay, and a variety of other funding methods.
![ads](/images/gen/coinsgame_20a.png)
Everyday giveaways up to 100 ETH, Lucky Spins. Deposit BONUS 300% and Cashbacks!
![ads](/images/gen/celsiuscasino_20.png)
9 years old Licensed Crypto Casino, Instant Withdraw 24/7, 6000+ Slots available, Paypal Deposit, Instant Live Support 24/7, 30% Rakeback.
![ads](/images/gen/bcgames_20.png)
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
![ads](/images/gen/bcgames_20.png)
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
![ads](/images/gen/cw_20.png)
Play 100s of games anonymously with all major cryptos. Join CryptoWins & start winning!
![ads](/images/gen/cryptoslots.png)
Anonymous play on awesome games - sign up now for 25 free jackpot spins - worth $100s!
Overview
ETH Balance
Eth Value
$0.00Token Holdings
Could not find any matches!
- ERC-20 Tokens (21)188,788.3170433 AKROAkropolis (AKRO)$802.48@0.004316.6 BITTOBITTO (BITTO)1,252.05218159 LINKChainLink To... (LINK)$12,821.01@10.245,663.94404379 DMGDMM: Governa... (DMG)$6.30@0.00111,342.43580775 UNIUniswap (UNI)$8,390.22@6.250.04701642 YFIyearn.financ... (YFI)$229.76@4,886.860.039 COMPCompound (COMP)$1.76@45.004.39955696 MKRMaker (MKR)$7,299.52@1,659.15750 $stLink rewards on stlink.fi! stlink.fi ($stLin...)315,316.78272384 BREECBDAO125 JNTR/eJNTR/e4 LOONLoon Network$0.00@0.000148.805 MOON-V1-ETH-BREEMooniswap V1... (MOON-V...)29.48984429 UNI-V2Uniswap V2 (UNI-V2)675.6525495 UNI-V2Uniswap V2 (UNI-V2)1.5 TokenERC-20 TOKEN*[Suspicious]245.44 TokenERC-20 TOKEN*[Suspicious]28.901 TokenERC-20 TOKEN*[Unsafe]132.84 TokenERC-20 TOKEN*[Spam]856,420,144,564 TokenERC-20 TOKEN*[Spam]856,420,144,564 TokenERC-20 TOKEN*[Spam]NFT Tokens (11)claim rewards on apylink.comapylink.comERC-1155Moonbirdpunk OriginalMoonbirdpunk OriginalERC-1155
ERC-1155 TOKEN*
[Suspicious]More Info
Private Name Tags
ContractCreator
- Transactions
- Internal Transactions
- Token Transfers (ERC-20)
- NFT Transfers
- Contract
- Events
- Analytics
- Multichain Portfolio
Advanced Filter- Filter by Tx Type:
- Tx
- Internal Tx
- ERC-20
- NFTs
Latest 25 from a total of 4,601 transactions
Transaction Hash MethodBlockFromToClaim Staked Tok... 20549415 2024-08-17 16:03:47 17 days ago 1723910627 IN 0 ETH$0.00 0.00016754 2.19745629 Withdraw Farmed ... 14554666 2022-04-10 0:11:54 878 days ago 1649549514 IN 0 ETH$0.00 0.0039709 44.8543364 Claim Staked Tok... 12547914 2021-06-01 10:06:10 1190 days ago 1622541970 IN 0 ETH$0.00 0.00105672 16 Claim Staked Tok... 12326412 2021-04-28 3:12:32 1225 days ago 1619579552 IN 0 ETH$0.00 0.0043252 52.02 Claim Staked Tok... 12248184 2021-04-16 1:24:36 1237 days ago 1618536276 IN 0 ETH$0.00 0.00823135 99 Withdraw Farmed ... 12085209 2021-03-21 23:50:55 1262 days ago 1616370655 IN 0 ETH$0.00 0.01535103 177 Claim Staked Tok... 12050783 2021-03-16 16:43:07 1267 days ago 1615912987 IN 0 ETH$0.00 0.00491522 212 Claim Staked Tok... 12050779 2021-03-16 16:42:23 1267 days ago 1615912943 IN 0 ETH$0.00 0.02321431 267 Claim Staked Tok... 11799034 2021-02-05 22:46:10 1306 days ago 1612565170 IN 0 ETH$0.00 0.0139112 160 Stake 11780007 2021-02-03 0:22:59 1309 days ago 1612311779 IN 0 ETH$0.00 0.00672764 277.2000016 Stake 11780007 2021-02-03 0:22:59 1309 days ago 1612311779 IN 0 ETH$0.00 0.00672764 277.2000016 Stake 11780007 2021-02-03 0:22:59 1309 days ago 1612311779 IN 0 ETH$0.00 0.0063102 260.00000145 Withdraw Farmed ... 11671723 2021-01-17 8:45:13 1326 days ago 1610873113 IN 0 ETH$0.00 0.00510942 61 Claim Staked Tok... 11567122 2021-01-01 7:39:30 1342 days ago 1609486770 IN 0 ETH$0.00 0.0034167 60 Claim Staked Tok... 11566534 2021-01-01 5:24:39 1342 days ago 1609478679 IN 0 ETH$0.00 0.00222085 39 Claim Reward 11563539 2020-12-31 18:27:47 1342 days ago 1609439267 IN 0.011216 ETH$26.89 0.0087179 86 Claim Staked Tok... 11563254 2020-12-31 17:25:46 1342 days ago 1609435546 IN 0 ETH$0.00 0.00199391 86.00000145 Claim Staked Tok... 11563164 2020-12-31 17:02:51 1342 days ago 1609434171 IN 0 ETH$0.00 0.00618727 86.00000145 Claim Staked Tok... 11556240 2020-12-30 15:40:39 1343 days ago 1609342839 IN 0 ETH$0.00 0.01064786 148 Claim Reward 11555880 2020-12-30 14:22:46 1343 days ago 1609338166 IN 0.01 ETH$23.98 0.01183282 137 Claim Staked Tok... 11555875 2020-12-30 14:21:37 1343 days ago 1609338097 IN 0 ETH$0.00 0.00949674 132.00000145 Claim Staked Tok... 11552406 2020-12-30 1:38:28 1344 days ago 1609292308 IN 0 ETH$0.00 0.00474837 66 Claim Staked Tok... 11551451 2020-12-29 21:59:02 1344 days ago 1609279142 IN 0 ETH$0.00 0.00296114 52 Withdraw Farmed ... 11500419 2020-12-22 2:01:21 1352 days ago 1608602481 IN 0 ETH$0.00 0.00241488 27.5 Withdraw Farmed ... 11500411 2020-12-22 1:59:18 1352 days ago 1608602358 IN 0 ETH$0.00 0.00238017 27.1046942 Latest 25 internal transactions (View All)
Advanced mode:Parent Transaction Hash Block From To 11563539 2020-12-31 18:27:47 1342 days ago 1609439267 0.011216 ETH$26.89 11555880 2020-12-30 14:22:46 1343 days ago 1609338166 0.01 ETH$23.98 11421536 2020-12-09 22:58:14 1364 days ago 1607554694 0.01 ETH$23.98 11262509 2020-11-15 12:48:57 1388 days ago 1605444537 0.01 ETH$23.98 11223110 2020-11-09 11:48:29 1394 days ago 1604922509 0.1 ETH$239.77 11219176 2020-11-08 21:18:52 1395 days ago 1604870332 0.01 ETH$23.98 11196880 2020-11-05 11:15:03 1398 days ago 1604574903 0.01 ETH$23.98 11192601 2020-11-04 19:34:19 1399 days ago 1604518459 0.001 ETH$2.40 11173188 2020-11-01 19:52:30 1402 days ago 1604260350 0.01 ETH$23.98 11172557 2020-11-01 17:32:21 1402 days ago 1604251941 0.01 ETH$23.98 11172202 2020-11-01 16:14:26 1402 days ago 1604247266 0.01 ETH$23.98 11170892 2020-11-01 11:23:22 1402 days ago 1604229802 0.003 ETH$7.19 11162467 2020-10-31 4:22:46 1404 days ago 1604118166 0.01 ETH$23.98 11161927 2020-10-31 2:27:26 1404 days ago 1604111246 0.01 ETH$23.98 11155647 2020-10-30 3:10:16 1405 days ago 1604027416 0.01 ETH$23.98 11155344 2020-10-30 2:03:34 1405 days ago 1604023414 0.01 ETH$23.98 11154915 2020-10-30 0:25:19 1405 days ago 1604017519 0.01 ETH$23.98 11153482 2020-10-29 19:07:28 1405 days ago 1603998448 0.01 ETH$23.98 11105680 2020-10-22 11:23:27 1412 days ago 1603365807 0.001 ETH$2.40 11081461 2020-10-18 18:09:51 1416 days ago 1603044591 0.01 ETH$23.98 11073553 2020-10-17 12:47:54 1417 days ago 1602938874 0.001 ETH$2.40 11068113 2020-10-16 16:48:33 1418 days ago 1602866913 0.001 ETH$2.40 11068102 2020-10-16 16:46:34 1418 days ago 1602866794 0.001 ETH$2.40 11035245 2020-10-11 16:17:53 1423 days ago 1602433073 0.001 ETH$2.40 11026878 2020-10-10 9:14:13 1425 days ago 1602321253 0.001 ETH$2.40 Loading...LoadingContract Name:BREE_STAKE_FARM
Compiler Versionv0.6.12+commit.27d51765
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.0; import "./Owned.sol"; import "./BREE.sol"; import "./ERC20contract.sol"; import "./SafeMath.sol"; contract BREE_STAKE_FARM is Owned{ using SafeMath for uint256; uint256 public yieldCollectionFee = 0.01 ether; uint256 public stakingPeriod = 30 days; uint256 public stakeClaimFee = 0.001 ether; uint256 public minStakeLimit = 500 * 10 **(18); //500 BREE uint256 public totalYield; uint256 public totalRewards; Token public bree; struct Tokens{ bool exists; uint256 rate; } mapping(address => Tokens) public tokens; address[] TokensAddresses; address governance; struct DepositedToken{ bool whitelisted; uint256 activeDeposit; uint256 totalDeposits; uint256 startTime; uint256 pendingGains; uint256 lastClaimedDate; uint256 totalGained; uint rate; uint period; } mapping(address => mapping(address => DepositedToken)) users; event TokenAdded(address indexed tokenAddress, uint256 indexed APY); event TokenRemoved(address indexed tokenAddress, uint256 indexed APY); event FarmingRateChanged(address indexed tokenAddress, uint256 indexed newAPY); event YieldCollectionFeeChanged(uint256 indexed yieldCollectionFee); event FarmingStarted(address indexed _tokenAddress, uint256 indexed _amount); event YieldCollected(address indexed _tokenAddress, uint256 indexed _yield); event AddedToExistingFarm(address indexed _tokenAddress, uint256 indexed tokens); event Staked(address indexed staker, uint256 indexed tokens); event AddedToExistingStake(address indexed staker, uint256 indexed tokens); event StakingRateChanged(uint256 indexed newAPY); event TokensClaimed(address indexed claimer, uint256 indexed stakedTokens); event RewardClaimed(address indexed claimer, uint256 indexed reward); event GovernanceSet(address indexed governanceAddress); modifier validStake(uint256 stakeAmount){ require(stakeAmount >= minStakeLimit, "stake amount should be equal/greater than min stake limit"); _; } modifier OwnerOrGovernance(address _caller){ require(_caller == owner || _caller == governance); _; } constructor(address _tokenAddress) public { bree = Token(_tokenAddress); // add bree token to ecosystem _addToken(_tokenAddress, 40); // 40 apy initially } //#########################################################################################################################################################// //####################################################FARMING EXTERNAL FUNCTIONS###########################################################################// //#########################################################################################################################################################// // ------------------------------------------------------------------------ // Add assets to farm // @param _tokenAddress address of the token asset // @param _amount amount of tokens to deposit // ------------------------------------------------------------------------ function Farm(address _tokenAddress, uint256 _amount) external{ require(_tokenAddress != address(bree), "Use staking instead"); // add to farm _newDeposit(_tokenAddress, _amount); // transfer tokens from user to the contract balance require(ERC20Interface(_tokenAddress).transferFrom(msg.sender, address(this), _amount)); emit FarmingStarted(_tokenAddress, _amount); } // ------------------------------------------------------------------------ // Add more deposits to already running farm // @param _tokenAddress address of the token asset // @param _amount amount of tokens to deposit // ------------------------------------------------------------------------ function AddToFarm(address _tokenAddress, uint256 _amount) external{ require(_tokenAddress != address(bree), "use staking instead"); _addToExisting(_tokenAddress, _amount); // move the tokens from the caller to the contract address require(ERC20Interface(_tokenAddress).transferFrom(msg.sender,address(this), _amount)); emit AddedToExistingFarm(_tokenAddress, _amount); } // ------------------------------------------------------------------------ // Withdraw accumulated yield // @param _tokenAddress address of the token asset // @required must pay yield claim fee // ------------------------------------------------------------------------ function Yield(address _tokenAddress) external payable { require(msg.value >= yieldCollectionFee, "should pay exact claim fee"); require(PendingYield(_tokenAddress, msg.sender) > 0, "No pending yield"); require(tokens[_tokenAddress].exists, "Token doesn't exist"); require(_tokenAddress != address(bree), "use staking instead"); uint256 _pendingYield = PendingYield(_tokenAddress, msg.sender); // Global stats update totalYield = totalYield.add(_pendingYield); // update the record users[msg.sender][_tokenAddress].totalGained = users[msg.sender][_tokenAddress].totalGained.add(_pendingYield); users[msg.sender][_tokenAddress].lastClaimedDate = now; users[msg.sender][_tokenAddress].pendingGains = 0; // transfer fee to the owner owner.transfer(msg.value); // mint more tokens inside token contract equivalent to _pendingYield require(bree.MintTokens(_pendingYield, msg.sender)); emit YieldCollected(_tokenAddress, _pendingYield); } // ------------------------------------------------------------------------ // Withdraw any amount of tokens, the contract will update the farming // @param _tokenAddress address of the token asset // @param _amount amount of tokens to deposit // ------------------------------------------------------------------------ function WithdrawFarmedTokens(address _tokenAddress, uint256 _amount) external { require(users[msg.sender][_tokenAddress].activeDeposit >= _amount, "insufficient amount in farming"); require(_tokenAddress != address(bree), "use withdraw of staking instead"); // update farming stats // check if we have any pending yield, add it to previousYield var users[msg.sender][_tokenAddress].pendingGains = PendingYield(_tokenAddress, msg.sender); // update amount users[msg.sender][_tokenAddress].activeDeposit = users[msg.sender][_tokenAddress].activeDeposit.sub(_amount); // update farming start time -- new farming will begin from this time onwards users[msg.sender][_tokenAddress].startTime = now; // reset last claimed figure as well -- new farming will begin from this time onwards users[msg.sender][_tokenAddress].lastClaimedDate = now; // withdraw the tokens and move from contract to the caller require(ERC20Interface(_tokenAddress).transfer(msg.sender, _amount)); emit TokensClaimed(msg.sender, _amount); } //#########################################################################################################################################################// //####################################################STAKING EXTERNAL FUNCTIONS###########################################################################// //#########################################################################################################################################################// // ------------------------------------------------------------------------ // Start staking // @param _tokenAddress address of the token asset // @param _amount amount of tokens to deposit // ------------------------------------------------------------------------ function Stake(uint256 _amount) external validStake(_amount) { // add new stake _newDeposit(address(bree), _amount); // transfer tokens from user to the contract balance require(bree.transferFrom(msg.sender, address(this), _amount)); emit Staked(msg.sender, _amount); } // ------------------------------------------------------------------------ // Add more deposits to already running farm // @param _tokenAddress address of the token asset // @param _amount amount of tokens to deposit // ------------------------------------------------------------------------ function AddToStake(uint256 _amount) external { require(now - users[msg.sender][address(bree)].startTime < users[msg.sender][address(bree)].period, "current staking expired"); _addToExisting(address(bree), _amount); // move the tokens from the caller to the contract address require(bree.transferFrom(msg.sender,address(this), _amount)); emit AddedToExistingStake(msg.sender, _amount); } // ------------------------------------------------------------------------ // Claim reward and staked tokens // @required user must be a staker // @required must be claimable // ------------------------------------------------------------------------ function ClaimStakedTokens() external { //require(users[msg.sender][address(bree)].running, "no running stake"); require(users[msg.sender][address(bree)].activeDeposit > 0, "no running stake"); require(users[msg.sender][address(bree)].startTime.add(users[msg.sender][address(bree)].period) < now, "not claimable before staking period"); uint256 _currentDeposit = users[msg.sender][address(bree)].activeDeposit; // check if we have any pending reward, add it to pendingGains var users[msg.sender][address(bree)].pendingGains = PendingReward(msg.sender); // update amount users[msg.sender][address(bree)].activeDeposit = 0; // transfer staked tokens require(bree.transfer(msg.sender, _currentDeposit)); emit TokensClaimed(msg.sender, _currentDeposit); } // ------------------------------------------------------------------------ // Claim reward and staked tokens // @required user must be a staker // @required must be claimable // ------------------------------------------------------------------------ function ClaimReward() external payable { require(msg.value >= stakeClaimFee, "should pay exact claim fee"); require(PendingReward(msg.sender) > 0, "nothing pending to claim"); uint256 _pendingReward = PendingReward(msg.sender); // add claimed reward to global stats totalRewards = totalRewards.add(_pendingReward); // add the reward to total claimed rewards users[msg.sender][address(bree)].totalGained = users[msg.sender][address(bree)].totalGained.add(_pendingReward); // update lastClaim amount users[msg.sender][address(bree)].lastClaimedDate = now; // reset previous rewards users[msg.sender][address(bree)].pendingGains = 0; // transfer the claim fee to the owner owner.transfer(msg.value); // mint more tokens inside token contract require(bree.MintTokens(_pendingReward, msg.sender)); emit RewardClaimed(msg.sender, _pendingReward); } //#########################################################################################################################################################// //##########################################################FARMING QUERIES################################################################################// //#########################################################################################################################################################// // ------------------------------------------------------------------------ // Query to get the pending yield // @param _tokenAddress address of the token asset // ------------------------------------------------------------------------ function PendingYield(address _tokenAddress, address _caller) public view returns(uint256 _pendingRewardWeis){ uint256 _totalFarmingTime = now.sub(users[_caller][_tokenAddress].lastClaimedDate); uint256 _reward_token_second = ((tokens[_tokenAddress].rate).mul(10 ** 21)).div(365 days); // added extra 10^21 uint256 yield = ((users[_caller][_tokenAddress].activeDeposit).mul(_totalFarmingTime.mul(_reward_token_second))).div(10 ** 27); // remove extra 10^21 // 10^2 are for 100 (%) return yield.add(users[_caller][_tokenAddress].pendingGains); } // ------------------------------------------------------------------------ // Query to get the active farm of the user // @param farming asset/ token address // ------------------------------------------------------------------------ function ActiveFarmDeposit(address _tokenAddress, address _user) external view returns(uint256 _activeDeposit){ return users[_user][_tokenAddress].activeDeposit; } // ------------------------------------------------------------------------ // Query to get the total farming of the user // @param farming asset/ token address // ------------------------------------------------------------------------ function YourTotalFarmingTillToday(address _tokenAddress, address _user) external view returns(uint256 _totalFarming){ return users[_user][_tokenAddress].totalDeposits; } // ------------------------------------------------------------------------ // Query to get the time of last farming of user // ------------------------------------------------------------------------ function LastFarmedOn(address _tokenAddress, address _user) external view returns(uint256 _unixLastFarmedTime){ return users[_user][_tokenAddress].startTime; } // ------------------------------------------------------------------------ // Query to get total earned rewards from particular farming // @param farming asset/ token address // ------------------------------------------------------------------------ function TotalFarmingRewards(address _tokenAddress, address _user) external view returns(uint256 _totalEarned){ return users[_user][_tokenAddress].totalGained; } //#########################################################################################################################################################// //####################################################FARMING ONLY OWNER FUNCTIONS#########################################################################// //#########################################################################################################################################################// // ------------------------------------------------------------------------ // Links governance contract to this contract // @param _govAddress address of the governance contract // @required only owner // ------------------------------------------------------------------------ function setGovernanceContract(address _govAddress) external onlyOwner { governance = _govAddress; emit GovernanceSet(_govAddress); } // ------------------------------------------------------------------------ // Add supported tokens // @param _tokenAddress address of the token asset // @param _farmingRate rate applied for farming yield to produce // @required only owner or governance contract // ------------------------------------------------------------------------ function AddToken(address _tokenAddress, uint256 _rate) public OwnerOrGovernance(msg.sender) { _addToken(_tokenAddress, _rate); } // ------------------------------------------------------------------------ // Remove tokens if no longer supported // @param _tokenAddress address of the token asset // @required only owner or governance contract // ------------------------------------------------------------------------ function RemoveToken(address _tokenAddress) public OwnerOrGovernance(msg.sender) { require(tokens[_tokenAddress].exists, "token doesn't exist"); tokens[_tokenAddress].exists = false; emit TokenRemoved(_tokenAddress, tokens[_tokenAddress].rate); } // ------------------------------------------------------------------------ // Change farming rate of the supported token // @param _tokenAddress address of the token asset // @param _newFarmingRate new rate applied for farming yield to produce // @required only owner or governance contract // ------------------------------------------------------------------------ function ChangeFarmingRate(address _tokenAddress, uint256 _newFarmingRate) public OwnerOrGovernance(msg.sender) { require(tokens[_tokenAddress].exists, "token doesn't exist"); tokens[_tokenAddress].rate = _newFarmingRate; emit FarmingRateChanged(_tokenAddress, _newFarmingRate); } // ------------------------------------------------------------------------ // Change Yield collection fee // @param _fee fee to claim the yield // @required only owner or governance contract // ------------------------------------------------------------------------ function SetYieldCollectionFee(uint256 _fee) public OwnerOrGovernance(msg.sender){ yieldCollectionFee = _fee; emit YieldCollectionFeeChanged(_fee); } //#########################################################################################################################################################// //####################################################STAKING QUERIES######################################################################################// //#########################################################################################################################################################// // ------------------------------------------------------------------------ // Query to get the pending reward // ------------------------------------------------------------------------ function PendingReward(address _caller) public view returns(uint256 _pendingReward){ uint256 _totalStakedTime = 0; uint256 expiryDate = (users[_caller][address(bree)].period).add(users[_caller][address(bree)].startTime); if(now < expiryDate) _totalStakedTime = now.sub(users[_caller][address(bree)].lastClaimedDate); else{ if(users[_caller][address(bree)].lastClaimedDate >= expiryDate) // if claimed after expirydate already _totalStakedTime = 0; else _totalStakedTime = expiryDate.sub(users[_caller][address(bree)].lastClaimedDate); } uint256 _reward_token_second = ((users[_caller][address(bree)].rate).mul(10 ** 21)); // added extra 10^21 uint256 reward = ((users[_caller][address(bree)].activeDeposit).mul(_totalStakedTime.mul(_reward_token_second))).div(10 ** 27); // remove extra 10^21 // the two extra 10^2 is for 100 (%) // another two extra 10^4 is for decimals to be allowed reward = reward.div(365 days); return (reward.add(users[_caller][address(bree)].pendingGains)); } // ------------------------------------------------------------------------ // Query to get the active stake of the user // ------------------------------------------------------------------------ function YourActiveStake(address _user) external view returns(uint256 _activeStake){ return users[_user][address(bree)].activeDeposit; } // ------------------------------------------------------------------------ // Query to get the total stakes of the user // ------------------------------------------------------------------------ function YourTotalStakesTillToday(address _user) external view returns(uint256 _totalStakes){ return users[_user][address(bree)].totalDeposits; } // ------------------------------------------------------------------------ // Query to get the time of last stake of user // ------------------------------------------------------------------------ function LastStakedOn(address _user) public view returns(uint256 _unixLastStakedTime){ return users[_user][address(bree)].startTime; } // ------------------------------------------------------------------------ // Query to get total earned rewards from stake // ------------------------------------------------------------------------ function TotalStakeRewardsClaimedTillToday(address _user) external view returns(uint256 _totalEarned){ return users[_user][address(bree)].totalGained; } // ------------------------------------------------------------------------ // Query to get the staking rate // ------------------------------------------------------------------------ function LatestStakingRate() external view returns(uint256 APY){ return tokens[address(bree)].rate; } // ------------------------------------------------------------------------ // Query to get the staking rate you staked at // ------------------------------------------------------------------------ function YourStakingRate(address _user) external view returns(uint256 _stakingRate){ return users[_user][address(bree)].rate; } // ------------------------------------------------------------------------ // Query to get the staking period you staked at // ------------------------------------------------------------------------ function YourStakingPeriod(address _user) external view returns(uint256 _stakingPeriod){ return users[_user][address(bree)].period; } // ------------------------------------------------------------------------ // Query to get the staking time left // ------------------------------------------------------------------------ function StakingTimeLeft(address _user) external view returns(uint256 _secsLeft){ uint256 left = 0; uint256 expiryDate = (users[_user][address(bree)].period).add(LastStakedOn(_user)); if(now < expiryDate) left = expiryDate.sub(now); return left; } //#########################################################################################################################################################// //####################################################STAKING ONLY OWNER FUNCTION##########################################################################// //#########################################################################################################################################################// // ------------------------------------------------------------------------ // Change staking rate // @param _newStakingRate new rate applied for staking // @required only owner or governance contract // ------------------------------------------------------------------------ function ChangeStakingRate(uint256 _newStakingRate) public OwnerOrGovernance(msg.sender){ tokens[address(bree)].rate = _newStakingRate; emit StakingRateChanged(_newStakingRate); } // ------------------------------------------------------------------------ // Change the min stake limit // @param _minStakeLimit minimum stake limit value // @required only callable by owner or governance contract // ------------------------------------------------------------------------ function SetMinStakeLimit(uint256 _minStakeLimit) public OwnerOrGovernance(msg.sender){ minStakeLimit = _minStakeLimit; } // ------------------------------------------------------------------------ // Change the staking period // @param _seconds number of seconds to stake (n days = n*24*60*60) // @required only callable by owner or governance contract // ------------------------------------------------------------------------ function SetStakingPeriod(uint256 _seconds) public OwnerOrGovernance(msg.sender){ stakingPeriod = _seconds; } // ------------------------------------------------------------------------ // Change the staking claim fee // @param _fee claim fee in weis // @required only callable by owner or governance contract // ------------------------------------------------------------------------ function SetClaimFee(uint256 _fee) public OwnerOrGovernance(msg.sender){ stakeClaimFee = _fee; } //#########################################################################################################################################################// //################################################################COMMON UTILITIES#########################################################################// //#########################################################################################################################################################// // ------------------------------------------------------------------------ // Internal function to add new deposit // ------------------------------------------------------------------------ function _newDeposit(address _tokenAddress, uint256 _amount) internal{ require(users[msg.sender][_tokenAddress].activeDeposit == 0, "Already running"); require(tokens[_tokenAddress].exists, "Token doesn't exist"); // add that token into the contract balance // check if we have any pending reward/yield, add it to pendingGains variable if(_tokenAddress == address(bree)){ users[msg.sender][_tokenAddress].pendingGains = PendingReward(msg.sender); users[msg.sender][_tokenAddress].period = stakingPeriod; users[msg.sender][_tokenAddress].rate = tokens[_tokenAddress].rate; // rate for stakers will be fixed at time of staking } else users[msg.sender][_tokenAddress].pendingGains = PendingYield(_tokenAddress, msg.sender); users[msg.sender][_tokenAddress].activeDeposit = _amount; users[msg.sender][_tokenAddress].totalDeposits = users[msg.sender][_tokenAddress].totalDeposits.add(_amount); users[msg.sender][_tokenAddress].startTime = now; users[msg.sender][_tokenAddress].lastClaimedDate = now; } // ------------------------------------------------------------------------ // Internal function to add to existing deposit // ------------------------------------------------------------------------ function _addToExisting(address _tokenAddress, uint256 _amount) internal{ require(tokens[_tokenAddress].exists, "Token doesn't exist"); // require(users[msg.sender][_tokenAddress].running, "no running farming/stake"); require(users[msg.sender][_tokenAddress].activeDeposit > 0, "no running farming/stake"); // update farming stats // check if we have any pending reward/yield, add it to pendingGains variable if(_tokenAddress == address(bree)){ users[msg.sender][_tokenAddress].pendingGains = PendingReward(msg.sender); users[msg.sender][_tokenAddress].period = stakingPeriod; users[msg.sender][_tokenAddress].rate = tokens[_tokenAddress].rate; // rate of only staking will be updated when more is added to stake } else users[msg.sender][_tokenAddress].pendingGains = PendingYield(_tokenAddress, msg.sender); // update current deposited amount users[msg.sender][_tokenAddress].activeDeposit = users[msg.sender][_tokenAddress].activeDeposit.add(_amount); // update total deposits till today users[msg.sender][_tokenAddress].totalDeposits = users[msg.sender][_tokenAddress].totalDeposits.add(_amount); // update new deposit start time -- new stake/farming will begin from this time onwards users[msg.sender][_tokenAddress].startTime = now; // reset last claimed figure as well -- new stake/farming will begin from this time onwards users[msg.sender][_tokenAddress].lastClaimedDate = now; } // ------------------------------------------------------------------------ // Internal function to add token // ------------------------------------------------------------------------ function _addToken(address _tokenAddress, uint256 _rate) internal{ require(!tokens[_tokenAddress].exists, "token already exists"); tokens[_tokenAddress] = Tokens({ exists: true, rate: _rate }); TokensAddresses.push(_tokenAddress); emit TokenAdded(_tokenAddress, _rate); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.0; // ---------------------------------------------------------------------------- // 'BREE' token contract // Symbol : BREE // Name : CBDAO // Total supply: 10 million // Decimals : 18 // ---------------------------------------------------------------------------- import './SafeMath.sol'; import './ERC20contract.sol'; import './Owned.sol'; // ---------------------------------------------------------------------------- // ERC20 Token, with the addition of symbol, name and decimals and assisted // token transfers // ---------------------------------------------------------------------------- contract Token is ERC20Interface, Owned { using SafeMath for uint256; string public symbol = "BREE"; string public name = "CBDAO"; uint256 public decimals = 18; uint256 private maxCapSupply = 1e7 * 10**(decimals); // 10 million uint256 _totalSupply = 1530409 * 10 ** (decimals); // 1,530,409 address stakeFarmingContract; mapping(address => uint256) balances; mapping(address => mapping(address => uint256)) allowed; // ------------------------------------------------------------------------ // Constructor // ------------------------------------------------------------------------ constructor() public { // mint _totalSupply amount of tokens and send to owner balances[owner] = balances[owner].add(_totalSupply); emit Transfer(address(0),owner, _totalSupply); } // ------------------------------------------------------------------------ // Set the STAKE_FARMING_CONTRACT // @required only owner // ------------------------------------------------------------------------ function SetStakeFarmingContract(address _address) external onlyOwner{ require(_address != address(0), "Invalid address"); stakeFarmingContract = _address; } // ------------------------------------------------------------------------ // Token Minting function // @params _amount expects the amount of tokens to be minted excluding the // required decimals // @params _beneficiary tokens will be sent to _beneficiary // @required only owner OR stakeFarmingContract // ------------------------------------------------------------------------ function MintTokens(uint256 _amount, address _beneficiary) public returns(bool){ require(msg.sender == stakeFarmingContract); require(_beneficiary != address(0), "Invalid address"); require(_totalSupply.add(_amount) <= maxCapSupply, "exceeds max cap supply 10 million"); _totalSupply = _totalSupply.add(_amount); // mint _amount tokens and keep inside contract balances[_beneficiary] = balances[_beneficiary].add(_amount); emit Transfer(address(0),_beneficiary, _amount); return true; } // ------------------------------------------------------------------------ // Burn the `_amount` amount of tokens from the calling `account` // @params _amount the amount of tokens to burn // ------------------------------------------------------------------------ function BurnTokens(uint256 _amount) external { _burn(_amount, msg.sender); } // ------------------------------------------------------------------------ // @dev Internal function that burns an amount of the token from a given account // @param _amount The amount that will be burnt // @param _account The tokens to burn from // ------------------------------------------------------------------------ function _burn(uint256 _amount, address _account) internal { require(balances[_account] >= _amount, "insufficient account balance"); _totalSupply = _totalSupply.sub(_amount); balances[_account] = balances[_account].sub(_amount); emit Transfer(_account, address(0), _amount); } /** ERC20Interface function's implementation **/ // ------------------------------------------------------------------------ // Get the total supply of the `token` // ------------------------------------------------------------------------ function totalSupply() public override view returns (uint256){ return _totalSupply; } // ------------------------------------------------------------------------ // Get the token balance for account `tokenOwner` // ------------------------------------------------------------------------ function balanceOf(address tokenOwner) public override view returns (uint256 balance) { return balances[tokenOwner]; } // ------------------------------------------------------------------------ // Transfer the balance from token owner's account to `to` account // - Owner's account must have sufficient balance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transfer(address to, uint256 tokens) public override returns (bool success) { // prevent transfer to 0x0, use burn instead require(address(to) != address(0)); require(balances[msg.sender] >= tokens ); require(balances[to].add(tokens) >= balances[to]); balances[msg.sender] = balances[msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(msg.sender,to,tokens); return true; } /** * @dev See `IERC20.approve`. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public override returns (bool) { _approve(msg.sender, spender, value); return true; } // ------------------------------------------------------------------------ // Transfer `tokens` from the `from` account to the `to` account // // The calling account must already have sufficient tokens approve(...)-d // for spending from the `from` account and // - From account must have sufficient balance to transfer // - Spender must have sufficient allowance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transferFrom(address from, address to, uint256 tokens) public override returns (bool success){ require(tokens <= allowed[from][msg.sender]); //check allowance require(balances[from] >= tokens); require(from != address(0), "Invalid address"); require(to != address(0), "Invalid address"); balances[from] = balances[from].sub(tokens); balances[to] = balances[to].add(tokens); allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens); emit Transfer(from,to,tokens); return true; } // ------------------------------------------------------------------------ // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance(address tokenOwner, address spender) public override view returns (uint256 remaining) { return allowed[tokenOwner][spender]; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, allowed[msg.sender][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, allowed[msg.sender][spender].sub(subtractedValue)); return true; } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an `Approval` event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 value) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); allowed[owner][spender] = value; emit Approval(owner, spender, value); } }
// "SPDX-License-Identifier: UNLICENSED " pragma solidity ^0.6.0; // ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // ---------------------------------------------------------------------------- abstract contract ERC20Interface { function totalSupply() public virtual view returns (uint); function balanceOf(address tokenOwner) public virtual view returns (uint256 balance); function allowance(address tokenOwner, address spender) public virtual view returns (uint256 remaining); function transfer(address to, uint256 tokens) public virtual returns (bool success); function approve(address spender, uint256 tokens) public virtual returns (bool success); function transferFrom(address from, address to, uint256 tokens) public virtual returns (bool success); event Transfer(address indexed from, address indexed to, uint256 tokens); event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens); }
// "SPDX-License-Identifier: UNLICENSED " pragma solidity ^0.6.0; // ---------------------------------------------------------------------------- // Owned contract // ---------------------------------------------------------------------------- contract Owned { address payable public owner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address payable _newOwner) public onlyOwner { owner = _newOwner; emit OwnershipTransferred(msg.sender, _newOwner); } }
// "SPDX-License-Identifier: UNLICENSED " pragma solidity ^0.6.0; /** * @title SafeMath * @dev Math operations with safety checks that throw on error * */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } function ceil(uint a, uint m) internal pure returns (uint r) { return (a + m - 1) / m * m; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_tokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"AddedToExistingFarm","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"AddedToExistingStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"newAPY","type":"uint256"}],"name":"FarmingRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_tokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"FarmingStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"governanceAddress","type":"address"}],"name":"GovernanceSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":true,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newAPY","type":"uint256"}],"name":"StakingRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"APY","type":"uint256"}],"name":"TokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"APY","type":"uint256"}],"name":"TokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":true,"internalType":"uint256","name":"stakedTokens","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_tokenAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_yield","type":"uint256"}],"name":"YieldCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"yieldCollectionFee","type":"uint256"}],"name":"YieldCollectionFeeChanged","type":"event"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"ActiveFarmDeposit","outputs":[{"internalType":"uint256","name":"_activeDeposit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"AddToFarm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"AddToStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"AddToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_newFarmingRate","type":"uint256"}],"name":"ChangeFarmingRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newStakingRate","type":"uint256"}],"name":"ChangeStakingRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClaimReward","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"ClaimStakedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Farm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"LastFarmedOn","outputs":[{"internalType":"uint256","name":"_unixLastFarmedTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"LastStakedOn","outputs":[{"internalType":"uint256","name":"_unixLastStakedTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LatestStakingRate","outputs":[{"internalType":"uint256","name":"APY","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"name":"PendingReward","outputs":[{"internalType":"uint256","name":"_pendingReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_caller","type":"address"}],"name":"PendingYield","outputs":[{"internalType":"uint256","name":"_pendingRewardWeis","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"RemoveToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"SetClaimFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minStakeLimit","type":"uint256"}],"name":"SetMinStakeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"SetStakingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"SetYieldCollectionFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"StakingTimeLeft","outputs":[{"internalType":"uint256","name":"_secsLeft","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"TotalFarmingRewards","outputs":[{"internalType":"uint256","name":"_totalEarned","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"TotalStakeRewardsClaimedTillToday","outputs":[{"internalType":"uint256","name":"_totalEarned","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"WithdrawFarmedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"Yield","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"YourActiveStake","outputs":[{"internalType":"uint256","name":"_activeStake","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"YourStakingPeriod","outputs":[{"internalType":"uint256","name":"_stakingPeriod","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"YourStakingRate","outputs":[{"internalType":"uint256","name":"_stakingRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"YourTotalFarmingTillToday","outputs":[{"internalType":"uint256","name":"_totalFarming","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"YourTotalStakesTillToday","outputs":[{"internalType":"uint256","name":"_totalStakes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bree","outputs":[{"internalType":"contract Token","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakeLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_govAddress","type":"address"}],"name":"setGovernanceContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeClaimFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokens","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yieldCollectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052662386f26fc1000060015562278d0060025566038d7ea4c68000600355681b1ae4d6e2ef5000006004553480156200003b57600080fd5b50604051620028d3380380620028d3833981810160405260208110156200006157600080fd5b505160008054336001600160a01b031991821617909155600780549091166001600160a01b03831617905562000099816028620000a0565b50620001bd565b6001600160a01b03821660009081526008602052604090205460ff16156200010f576040805162461bcd60e51b815260206004820152601460248201527f746f6b656e20616c726561647920657869737473000000000000000000000000604482015290519081900360640190fd5b604080518082018252600180825260208083018581526001600160a01b038716600081815260089093528583209451855460ff191690151517855590519383019390935560098054928301815581527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af90910180546001600160a01b03191683179055915183927ff4c563a3ea86ff1f4275e8c207df0375a51963f2b831b7bf4da8be938d92876c91a35050565b61270680620001cd6000396000f3fe6080604052600436106102465760003560e01c80638da5cb5b11610139578063c1672177116100b6578063e1bea1af1161007a578063e1bea1af14610829578063e486033914610862578063f2fde38b146108b0578063faea0532146108e3578063fe995a4e14610916578063fea167e01461094f57610246565b8063c167217714610752578063c74e9f771461077c578063cd926e13146107a6578063cef3c156146107e1578063dd4d2dd5146107f657610246565b8063af16b538116100fd578063af16b538146106b2578063b3872dc7146106c7578063bd7b2194146106ed578063c03d5b4714610702578063c141a9511461071757610246565b80638da5cb5b146105eb5780638f670e541461061c5780639328ec3614610655578063a7bbd49814610688578063abff57471461069d57610246565b8063227a473b116101c757806356e6a5001161018b57806356e6a500146105295780635eb478d51461055c57806367e7ac801461058657806379372f9a146105b0578063896931b0146105b857610246565b8063227a473b1461041d5780633252a02e146104475780634453cb2f146104805780634eb129c8146104bb5780634ebf68cf146104ee57610246565b806319e158361161020e57806319e15836146103195780631b3593731461034c5780631b38b912146103855780631d662c06146103b85780631fade863146103f357610246565b8063014182051461024b57806305dc5a19146102725780630e15561a146102a55780631129753f146102ba57806313fa675f146102ef575b600080fd5b34801561025757600080fd5b50610260610964565b60408051918252519081900360200190f35b34801561027e57600080fd5b506102606004803603602081101561029557600080fd5b50356001600160a01b031661096a565b3480156102b157600080fd5b50610260610999565b3480156102c657600080fd5b506102ed600480360360208110156102dd57600080fd5b50356001600160a01b031661099f565b005b3480156102fb57600080fd5b506102ed6004803603602081101561031257600080fd5b5035610a00565b34801561032557600080fd5b506102606004803603602081101561033c57600080fd5b50356001600160a01b0316610a37565b34801561035857600080fd5b506102ed6004803603604081101561036f57600080fd5b506001600160a01b038135169060200135610a66565b34801561039157600080fd5b50610260600480360360208110156103a857600080fd5b50356001600160a01b0316610b8d565b3480156103c457600080fd5b50610260600480360360408110156103db57600080fd5b506001600160a01b0381358116916020013516610bbc565b3480156103ff57600080fd5b506102ed6004803603602081101561041657600080fd5b5035610bec565b34801561042957600080fd5b506102ed6004803603602081101561044057600080fd5b5035610c68565b34801561045357600080fd5b506102ed6004803603604081101561046a57600080fd5b506001600160a01b038135169060200135610d80565b34801561048c57600080fd5b50610260600480360360408110156104a357600080fd5b506001600160a01b0381358116916020013516610e5f565b3480156104c757600080fd5b506102ed600480360360208110156104de57600080fd5b50356001600160a01b0316610e8e565b3480156104fa57600080fd5b506102606004803603604081101561051157600080fd5b506001600160a01b0381358116916020013516610f73565b34801561053557600080fd5b506102606004803603602081101561054c57600080fd5b50356001600160a01b031661107f565b34801561056857600080fd5b506102ed6004803603602081101561057f57600080fd5b50356110df565b34801561059257600080fd5b506102ed600480360360208110156105a957600080fd5b5035611144565b6102ed61117b565b3480156105c457600080fd5b50610260600480360360208110156105db57600080fd5b50356001600160a01b03166113b9565b3480156105f757600080fd5b506106006113e8565b604080516001600160a01b039092168252519081900360200190f35b34801561062857600080fd5b506102ed6004803603604081101561063f57600080fd5b506001600160a01b0381351690602001356113f7565b34801561066157600080fd5b506102606004803603602081101561067857600080fd5b50356001600160a01b031661151e565b34801561069457600080fd5b506106006116fb565b3480156106a957600080fd5b5061026061170a565b3480156106be57600080fd5b5061026061172b565b6102ed600480360360208110156106dd57600080fd5b50356001600160a01b0316611731565b3480156106f957600080fd5b506102ed611a12565b34801561070e57600080fd5b50610260611c14565b34801561072357600080fd5b506102606004803603604081101561073a57600080fd5b506001600160a01b0381358116916020013516611c1a565b34801561075e57600080fd5b506102ed6004803603602081101561077557600080fd5b5035611c49565b34801561078857600080fd5b506102ed6004803603602081101561079f57600080fd5b5035611da2565b3480156107b257600080fd5b50610260600480360360408110156107c957600080fd5b506001600160a01b0381358116916020013516611dd9565b3480156107ed57600080fd5b50610260611e08565b34801561080257600080fd5b506102606004803603602081101561081957600080fd5b50356001600160a01b0316611e0e565b34801561083557600080fd5b506102ed6004803603604081101561084c57600080fd5b506001600160a01b038135169060200135611e3d565b34801561086e57600080fd5b506108956004803603602081101561088557600080fd5b50356001600160a01b0316611e7d565b60408051921515835260208301919091528051918290030190f35b3480156108bc57600080fd5b506102ed600480360360208110156108d357600080fd5b50356001600160a01b0316611e9c565b3480156108ef57600080fd5b506102606004803603602081101561090657600080fd5b50356001600160a01b0316611efe565b34801561092257600080fd5b506102ed6004803603604081101561093957600080fd5b506001600160a01b038135169060200135611f2d565b34801561095b57600080fd5b50610260612131565b60055481565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206001015490565b60065481565b6000546001600160a01b031633146109b657600080fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b690600090a250565b60005433906001600160a01b0316811480610a285750600a546001600160a01b038281169116145b610a3157600080fd5b50600355565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206003015490565b6007546001600160a01b0383811691161415610abf576040805162461bcd60e51b8152602060048201526013602482015272155cd9481cdd185ada5b99c81a5b9cdd195859606a1b604482015290519081900360640190fd5b610ac98282612137565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b505050506040513d6020811015610b4857600080fd5b5051610b5357600080fd5b60405181906001600160a01b038416907f7de25affb428d2916c612e371f3ece047da76e52c3b848bc8aa98f8f832d10fe90600090a35050565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206008015490565b6001600160a01b038082166000908152600b60209081526040808320938616835292905220600301545b92915050565b60005433906001600160a01b0316811480610c145750600a546001600160a01b038281169116145b610c1d57600080fd5b6007546001600160a01b03166000908152600860205260408082206001018490555183917fb0ee74db6dce7f227ef9bf096b4b0baaa897706d47aa9e753125ceac39751c3591a25050565b80600454811015610caa5760405162461bcd60e51b81526004018080602001828103825260398152602001806126986039913960400191505060405180910390fd5b600754610cc0906001600160a01b031683612137565b600754604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505050506040513d6020811015610d4457600080fd5b5051610d4f57600080fd5b604051829033907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90600090a35050565b60005433906001600160a01b0316811480610da85750600a546001600160a01b038281169116145b610db157600080fd5b6001600160a01b03831660009081526008602052604090205460ff16610e14576040805162461bcd60e51b81526020600482015260136024820152721d1bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220600101859055518492917f7f1955a793d9c38c520b2e8394264d17e1ebbcfbeefed578552fea2149bc7a2391a3505050565b6001600160a01b038082166000908152600b602090815260408083209386168352929052206006015492915050565b60005433906001600160a01b0316811480610eb65750600a546001600160a01b038281169116145b610ebf57600080fd5b6001600160a01b03821660009081526008602052604090205460ff16610f22576040805162461bcd60e51b81526020600482015260136024820152721d1bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b6001600160a01b038216600081815260086020526040808220805460ff191681556001015490519092917fbe9bb4bdca0a094babd75e3a98b1d2e2390633430d0a2f6e2b9970e2ee03fb2e91a35050565b6001600160a01b038082166000908152600b602090815260408083209386168352929052908120600501548190610fab90429061231c565b6001600160a01b03851660009081526008602052604081206001015491925090610fee906301e1338090610fe890683635c9adc5dea0000061232e565b90612359565b9050600061103e6b033b2e3c9fd0803ce8000000610fe861100f868661232e565b6001600160a01b03808a166000908152600b60209081526040808320938e16835292905220600101549061232e565b6001600160a01b038087166000908152600b60209081526040808320938b168352929052206004015490915061107590829061236e565b9695505050505050565b600080806110c161108f85610a37565b6001600160a01b038087166000908152600b60209081526040808320600754909416835292905220600801549061236e565b9050804210156110d8576110d5814261231c565b91505b5092915050565b60005433906001600160a01b03168114806111075750600a546001600160a01b038281169116145b61111057600080fd5b600182905560405182907f514c42e17f7b6a99f4565772ac1cb1283fb5538cc7c0a15937542d0ae004044f90600090a25050565b60005433906001600160a01b031681148061116c5750600a546001600160a01b038281169116145b61117557600080fd5b50600455565b6003543410156111d2576040805162461bcd60e51b815260206004820152601a60248201527f73686f756c642070617920657861637420636c61696d20666565000000000000604482015290519081900360640190fd5b60006111dd3361151e565b1161122f576040805162461bcd60e51b815260206004820152601860248201527f6e6f7468696e672070656e64696e6720746f20636c61696d0000000000000000604482015290519081900360640190fd5b600061123a3361151e565b60065490915061124a908261236e565b6006908155336000908152600b602090815260408083206007546001600160a01b0316845290915290200154611280908261236e565b336000908152600b60209081526040808320600780546001600160a01b039081168652919093528184206006019490945581548416835280832042600590910155905483168252808220600401829055815490519216913480156108fc0292909190818181858888f193505050501580156112ff573d6000803e3d6000fd5b5060075460408051636a9c5acd60e01b81526004810184905233602482015290516001600160a01b0390921691636a9c5acd916044808201926020929091908290030181600087803b15801561135457600080fd5b505af1158015611368573d6000803e3d6000fd5b505050506040513d602081101561137e57600080fd5b505161138957600080fd5b604051819033907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724190600090a350565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206006015490565b6000546001600160a01b031681565b6007546001600160a01b0383811691161415611450576040805162461bcd60e51b81526020600482015260136024820152721d5cd9481cdd185ada5b99c81a5b9cdd195859606a1b604482015290519081900360640190fd5b61145a828261237d565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b505050506040513d60208110156114d957600080fd5b50516114e457600080fd5b60405181906001600160a01b038416907f0f53de7833b10029a9cc77140305b2a85bce72a6064e4aa0d584412a0fe473d790600090a35050565b6001600160a01b038181166000908152600b6020908152604080832060075490941683529290529081206003810154600890910154829182916115609161236e565b9050804210156115a8576001600160a01b038085166000908152600b60209081526040808320600754909416835292905220600501546115a190429061231c565b915061161d565b6001600160a01b038085166000908152600b602090815260408083206007549094168352929052206005015481116115e3576000915061161d565b6001600160a01b038085166000908152600b602090815260408083206007549094168352929052206005015461161a90829061231c565b91505b6001600160a01b038085166000908152600b6020908152604080832060078054909516845290915281209091015461165e90683635c9adc5dea0000061232e565b905060006116b16b033b2e3c9fd0803ce8000000610fe861167f878661232e565b6001600160a01b03808b166000908152600b60209081526040808320600754909416835292905220600101549061232e565b90506116c1816301e13380612359565b6001600160a01b038088166000908152600b602090815260408083206007549094168352929052206004015490915061107590829061236e565b6007546001600160a01b031681565b6007546001600160a01b031660009081526008602052604090206001015490565b60015481565b600154341015611788576040805162461bcd60e51b815260206004820152601a60248201527f73686f756c642070617920657861637420636c61696d20666565000000000000604482015290519081900360640190fd5b60006117948233610f73565b116117d9576040805162461bcd60e51b815260206004820152601060248201526f139bc81c195b991a5b99c81e5a595b1960821b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1661183c576040805162461bcd60e51b8152602060048201526013602482015272151bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b6007546001600160a01b0382811691161415611895576040805162461bcd60e51b81526020600482015260136024820152721d5cd9481cdd185ada5b99c81a5b9cdd195859606a1b604482015290519081900360640190fd5b60006118a18233610f73565b6005549091506118b1908261236e565b600555336000908152600b602090815260408083206001600160a01b03861684529091529020600601546118e5908261236e565b336000908152600b602090815260408083206001600160a01b038781168552925280832060068101949094554260058501556004909301829055815492519216913480156108fc0292909190818181858888f1935050505015801561194e573d6000803e3d6000fd5b5060075460408051636a9c5acd60e01b81526004810184905233602482015290516001600160a01b0390921691636a9c5acd916044808201926020929091908290030181600087803b1580156119a357600080fd5b505af11580156119b7573d6000803e3d6000fd5b505050506040513d60208110156119cd57600080fd5b50516119d857600080fd5b60405181906001600160a01b038416907fe542fd70a6e48b1017b003a83582b8b431ba620b546e8febe1d6c063d04d0ad690600090a35050565b336000908152600b602090815260408083206007546001600160a01b03168452909152902060010154611a7f576040805162461bcd60e51b815260206004820152601060248201526f6e6f2072756e6e696e67207374616b6560801b604482015290519081900360640190fd5b336000908152600b602090815260408083206007546001600160a01b03168452909152902060088101546003909101544291611abb919061236e565b10611af75760405162461bcd60e51b81526004018080602001828103825260238152602001806126756023913960400191505060405180910390fd5b336000818152600b602090815260408083206007546001600160a01b0316845290915290206001015490611b2a9061151e565b336000818152600b60209081526040808320600780546001600160a01b03908116865291845282852060049081019790975580548216855282852060010185905554825163a9059cbb60e01b81529687019590955260248601879052905193169363a9059cbb9360448083019491928390030190829087803b158015611baf57600080fd5b505af1158015611bc3573d6000803e3d6000fd5b505050506040513d6020811015611bd957600080fd5b5051611be457600080fd5b604051819033907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e43090600090a350565b60025481565b6001600160a01b038082166000908152600b602090815260408083209386168352929052206001015492915050565b336000908152600b602090815260408083206007546001600160a01b0316845290915290206008810154600390910154420310611ccd576040805162461bcd60e51b815260206004820152601760248201527f63757272656e74207374616b696e672065787069726564000000000000000000604482015290519081900360640190fd5b600754611ce3906001600160a01b03168261237d565b600754604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b505050506040513d6020811015611d6757600080fd5b5051611d7257600080fd5b604051819033907f87cc10241523077a91c98e7f42c67bc94408b811dcfb4202150e2935e471b08690600090a350565b60005433906001600160a01b0316811480611dca5750600a546001600160a01b038281169116145b611dd357600080fd5b50600255565b6001600160a01b038082166000908152600b602090815260408083209386168352929052206002015492915050565b60045481565b6001600160a01b039081166000908152600b602090815260408083206007805490951684529091529020015490565b60005433906001600160a01b0316811480611e655750600a546001600160a01b038281169116145b611e6e57600080fd5b611e788383612561565b505050565b6008602052600090815260409020805460019091015460ff9091169082565b6000546001600160a01b03163314611eb357600080fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206002015490565b336000908152600b602090815260408083206001600160a01b0386168452909152902060010154811115611fa8576040805162461bcd60e51b815260206004820152601e60248201527f696e73756666696369656e7420616d6f756e7420696e206661726d696e670000604482015290519081900360640190fd5b6007546001600160a01b038381169116141561200b576040805162461bcd60e51b815260206004820152601f60248201527f757365207769746864726177206f66207374616b696e6720696e737465616400604482015290519081900360640190fd5b6120158233610f73565b336000908152600b602090815260408083206001600160a01b0387168452909152902060048101919091556001015461204e908261231c565b336000818152600b602090815260408083206001600160a01b03881680855290835281842060018101969096554260038701819055600590960195909555805163a9059cbb60e01b81526004810194909452602484018690525163a9059cbb93604480820194918390030190829087803b1580156120cb57600080fd5b505af11580156120df573d6000803e3d6000fd5b505050506040513d60208110156120f557600080fd5b505161210057600080fd5b604051819033907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e43090600090a35050565b60035481565b336000908152600b602090815260408083206001600160a01b0386168452909152902060010154156121a2576040805162461bcd60e51b815260206004820152600f60248201526e416c72656164792072756e6e696e6760881b604482015290519081900360640190fd5b6001600160a01b03821660009081526008602052604090205460ff16612205576040805162461bcd60e51b8152602060048201526013602482015272151bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b6007546001600160a01b0383811691161415612272576122243361151e565b336000908152600b602090815260408083206001600160a01b0387168452808352818420600481019590955560025460088087019190915583529220600101549190526007909101556122a4565b61227c8233610f73565b336000908152600b602090815260408083206001600160a01b03871684529091529020600401555b336000908152600b602090815260408083206001600160a01b0386168452909152902060018101829055600201546122dc908261236e565b336000908152600b602090815260408083206001600160a01b03969096168352949052929092206002810192909255504260038201819055600590910155565b60008282111561232857fe5b50900390565b60008261233d57506000610be6565b8282028284828161234a57fe5b041461235257fe5b9392505050565b60008082848161236557fe5b04949350505050565b60008282018381101561235257fe5b6001600160a01b03821660009081526008602052604090205460ff166123e0576040805162461bcd60e51b8152602060048201526013602482015272151bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b336000908152600b602090815260408083206001600160a01b0386168452909152902060010154612458576040805162461bcd60e51b815260206004820152601860248201527f6e6f2072756e6e696e67206661726d696e672f7374616b650000000000000000604482015290519081900360640190fd5b6007546001600160a01b03838116911614156124c5576124773361151e565b336000908152600b602090815260408083206001600160a01b0387168452808352818420600481019590955560025460088087019190915583529220600101549190526007909101556124f7565b6124cf8233610f73565b336000908152600b602090815260408083206001600160a01b03871684529091529020600401555b336000908152600b602090815260408083206001600160a01b0386168452909152902060010154612528908261236e565b336000908152600b602090815260408083206001600160a01b038716845290915290206001810191909155600201546122dc908261236e565b6001600160a01b03821660009081526008602052604090205460ff16156125c6576040805162461bcd60e51b8152602060048201526014602482015273746f6b656e20616c72656164792065786973747360601b604482015290519081900360640190fd5b604080518082018252600180825260208083018581526001600160a01b038716600081815260089093528583209451855460ff191690151517855590519383019390935560098054928301815581527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af90910180546001600160a01b03191683179055915183927ff4c563a3ea86ff1f4275e8c207df0375a51963f2b831b7bf4da8be938d92876c91a3505056fe6e6f7420636c61696d61626c65206265666f7265207374616b696e6720706572696f647374616b6520616d6f756e742073686f756c6420626520657175616c2f67726561746572207468616e206d696e207374616b65206c696d6974a2646970667358221220c62aa9149fd1956f5ef202ef02a5309464903bbe2fb58782d0fbc4ada3970dac64736f6c634300060c00330000000000000000000000004639cd8cd52ec1cf2e496a606ce28d8afb1c792fDeployed Bytecode
0x6080604052600436106102465760003560e01c80638da5cb5b11610139578063c1672177116100b6578063e1bea1af1161007a578063e1bea1af14610829578063e486033914610862578063f2fde38b146108b0578063faea0532146108e3578063fe995a4e14610916578063fea167e01461094f57610246565b8063c167217714610752578063c74e9f771461077c578063cd926e13146107a6578063cef3c156146107e1578063dd4d2dd5146107f657610246565b8063af16b538116100fd578063af16b538146106b2578063b3872dc7146106c7578063bd7b2194146106ed578063c03d5b4714610702578063c141a9511461071757610246565b80638da5cb5b146105eb5780638f670e541461061c5780639328ec3614610655578063a7bbd49814610688578063abff57471461069d57610246565b8063227a473b116101c757806356e6a5001161018b57806356e6a500146105295780635eb478d51461055c57806367e7ac801461058657806379372f9a146105b0578063896931b0146105b857610246565b8063227a473b1461041d5780633252a02e146104475780634453cb2f146104805780634eb129c8146104bb5780634ebf68cf146104ee57610246565b806319e158361161020e57806319e15836146103195780631b3593731461034c5780631b38b912146103855780631d662c06146103b85780631fade863146103f357610246565b8063014182051461024b57806305dc5a19146102725780630e15561a146102a55780631129753f146102ba57806313fa675f146102ef575b600080fd5b34801561025757600080fd5b50610260610964565b60408051918252519081900360200190f35b34801561027e57600080fd5b506102606004803603602081101561029557600080fd5b50356001600160a01b031661096a565b3480156102b157600080fd5b50610260610999565b3480156102c657600080fd5b506102ed600480360360208110156102dd57600080fd5b50356001600160a01b031661099f565b005b3480156102fb57600080fd5b506102ed6004803603602081101561031257600080fd5b5035610a00565b34801561032557600080fd5b506102606004803603602081101561033c57600080fd5b50356001600160a01b0316610a37565b34801561035857600080fd5b506102ed6004803603604081101561036f57600080fd5b506001600160a01b038135169060200135610a66565b34801561039157600080fd5b50610260600480360360208110156103a857600080fd5b50356001600160a01b0316610b8d565b3480156103c457600080fd5b50610260600480360360408110156103db57600080fd5b506001600160a01b0381358116916020013516610bbc565b3480156103ff57600080fd5b506102ed6004803603602081101561041657600080fd5b5035610bec565b34801561042957600080fd5b506102ed6004803603602081101561044057600080fd5b5035610c68565b34801561045357600080fd5b506102ed6004803603604081101561046a57600080fd5b506001600160a01b038135169060200135610d80565b34801561048c57600080fd5b50610260600480360360408110156104a357600080fd5b506001600160a01b0381358116916020013516610e5f565b3480156104c757600080fd5b506102ed600480360360208110156104de57600080fd5b50356001600160a01b0316610e8e565b3480156104fa57600080fd5b506102606004803603604081101561051157600080fd5b506001600160a01b0381358116916020013516610f73565b34801561053557600080fd5b506102606004803603602081101561054c57600080fd5b50356001600160a01b031661107f565b34801561056857600080fd5b506102ed6004803603602081101561057f57600080fd5b50356110df565b34801561059257600080fd5b506102ed600480360360208110156105a957600080fd5b5035611144565b6102ed61117b565b3480156105c457600080fd5b50610260600480360360208110156105db57600080fd5b50356001600160a01b03166113b9565b3480156105f757600080fd5b506106006113e8565b604080516001600160a01b039092168252519081900360200190f35b34801561062857600080fd5b506102ed6004803603604081101561063f57600080fd5b506001600160a01b0381351690602001356113f7565b34801561066157600080fd5b506102606004803603602081101561067857600080fd5b50356001600160a01b031661151e565b34801561069457600080fd5b506106006116fb565b3480156106a957600080fd5b5061026061170a565b3480156106be57600080fd5b5061026061172b565b6102ed600480360360208110156106dd57600080fd5b50356001600160a01b0316611731565b3480156106f957600080fd5b506102ed611a12565b34801561070e57600080fd5b50610260611c14565b34801561072357600080fd5b506102606004803603604081101561073a57600080fd5b506001600160a01b0381358116916020013516611c1a565b34801561075e57600080fd5b506102ed6004803603602081101561077557600080fd5b5035611c49565b34801561078857600080fd5b506102ed6004803603602081101561079f57600080fd5b5035611da2565b3480156107b257600080fd5b50610260600480360360408110156107c957600080fd5b506001600160a01b0381358116916020013516611dd9565b3480156107ed57600080fd5b50610260611e08565b34801561080257600080fd5b506102606004803603602081101561081957600080fd5b50356001600160a01b0316611e0e565b34801561083557600080fd5b506102ed6004803603604081101561084c57600080fd5b506001600160a01b038135169060200135611e3d565b34801561086e57600080fd5b506108956004803603602081101561088557600080fd5b50356001600160a01b0316611e7d565b60408051921515835260208301919091528051918290030190f35b3480156108bc57600080fd5b506102ed600480360360208110156108d357600080fd5b50356001600160a01b0316611e9c565b3480156108ef57600080fd5b506102606004803603602081101561090657600080fd5b50356001600160a01b0316611efe565b34801561092257600080fd5b506102ed6004803603604081101561093957600080fd5b506001600160a01b038135169060200135611f2d565b34801561095b57600080fd5b50610260612131565b60055481565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206001015490565b60065481565b6000546001600160a01b031633146109b657600080fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b690600090a250565b60005433906001600160a01b0316811480610a285750600a546001600160a01b038281169116145b610a3157600080fd5b50600355565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206003015490565b6007546001600160a01b0383811691161415610abf576040805162461bcd60e51b8152602060048201526013602482015272155cd9481cdd185ada5b99c81a5b9cdd195859606a1b604482015290519081900360640190fd5b610ac98282612137565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b505050506040513d6020811015610b4857600080fd5b5051610b5357600080fd5b60405181906001600160a01b038416907f7de25affb428d2916c612e371f3ece047da76e52c3b848bc8aa98f8f832d10fe90600090a35050565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206008015490565b6001600160a01b038082166000908152600b60209081526040808320938616835292905220600301545b92915050565b60005433906001600160a01b0316811480610c145750600a546001600160a01b038281169116145b610c1d57600080fd5b6007546001600160a01b03166000908152600860205260408082206001018490555183917fb0ee74db6dce7f227ef9bf096b4b0baaa897706d47aa9e753125ceac39751c3591a25050565b80600454811015610caa5760405162461bcd60e51b81526004018080602001828103825260398152602001806126986039913960400191505060405180910390fd5b600754610cc0906001600160a01b031683612137565b600754604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505050506040513d6020811015610d4457600080fd5b5051610d4f57600080fd5b604051829033907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90600090a35050565b60005433906001600160a01b0316811480610da85750600a546001600160a01b038281169116145b610db157600080fd5b6001600160a01b03831660009081526008602052604090205460ff16610e14576040805162461bcd60e51b81526020600482015260136024820152721d1bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220600101859055518492917f7f1955a793d9c38c520b2e8394264d17e1ebbcfbeefed578552fea2149bc7a2391a3505050565b6001600160a01b038082166000908152600b602090815260408083209386168352929052206006015492915050565b60005433906001600160a01b0316811480610eb65750600a546001600160a01b038281169116145b610ebf57600080fd5b6001600160a01b03821660009081526008602052604090205460ff16610f22576040805162461bcd60e51b81526020600482015260136024820152721d1bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b6001600160a01b038216600081815260086020526040808220805460ff191681556001015490519092917fbe9bb4bdca0a094babd75e3a98b1d2e2390633430d0a2f6e2b9970e2ee03fb2e91a35050565b6001600160a01b038082166000908152600b602090815260408083209386168352929052908120600501548190610fab90429061231c565b6001600160a01b03851660009081526008602052604081206001015491925090610fee906301e1338090610fe890683635c9adc5dea0000061232e565b90612359565b9050600061103e6b033b2e3c9fd0803ce8000000610fe861100f868661232e565b6001600160a01b03808a166000908152600b60209081526040808320938e16835292905220600101549061232e565b6001600160a01b038087166000908152600b60209081526040808320938b168352929052206004015490915061107590829061236e565b9695505050505050565b600080806110c161108f85610a37565b6001600160a01b038087166000908152600b60209081526040808320600754909416835292905220600801549061236e565b9050804210156110d8576110d5814261231c565b91505b5092915050565b60005433906001600160a01b03168114806111075750600a546001600160a01b038281169116145b61111057600080fd5b600182905560405182907f514c42e17f7b6a99f4565772ac1cb1283fb5538cc7c0a15937542d0ae004044f90600090a25050565b60005433906001600160a01b031681148061116c5750600a546001600160a01b038281169116145b61117557600080fd5b50600455565b6003543410156111d2576040805162461bcd60e51b815260206004820152601a60248201527f73686f756c642070617920657861637420636c61696d20666565000000000000604482015290519081900360640190fd5b60006111dd3361151e565b1161122f576040805162461bcd60e51b815260206004820152601860248201527f6e6f7468696e672070656e64696e6720746f20636c61696d0000000000000000604482015290519081900360640190fd5b600061123a3361151e565b60065490915061124a908261236e565b6006908155336000908152600b602090815260408083206007546001600160a01b0316845290915290200154611280908261236e565b336000908152600b60209081526040808320600780546001600160a01b039081168652919093528184206006019490945581548416835280832042600590910155905483168252808220600401829055815490519216913480156108fc0292909190818181858888f193505050501580156112ff573d6000803e3d6000fd5b5060075460408051636a9c5acd60e01b81526004810184905233602482015290516001600160a01b0390921691636a9c5acd916044808201926020929091908290030181600087803b15801561135457600080fd5b505af1158015611368573d6000803e3d6000fd5b505050506040513d602081101561137e57600080fd5b505161138957600080fd5b604051819033907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724190600090a350565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206006015490565b6000546001600160a01b031681565b6007546001600160a01b0383811691161415611450576040805162461bcd60e51b81526020600482015260136024820152721d5cd9481cdd185ada5b99c81a5b9cdd195859606a1b604482015290519081900360640190fd5b61145a828261237d565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b505050506040513d60208110156114d957600080fd5b50516114e457600080fd5b60405181906001600160a01b038416907f0f53de7833b10029a9cc77140305b2a85bce72a6064e4aa0d584412a0fe473d790600090a35050565b6001600160a01b038181166000908152600b6020908152604080832060075490941683529290529081206003810154600890910154829182916115609161236e565b9050804210156115a8576001600160a01b038085166000908152600b60209081526040808320600754909416835292905220600501546115a190429061231c565b915061161d565b6001600160a01b038085166000908152600b602090815260408083206007549094168352929052206005015481116115e3576000915061161d565b6001600160a01b038085166000908152600b602090815260408083206007549094168352929052206005015461161a90829061231c565b91505b6001600160a01b038085166000908152600b6020908152604080832060078054909516845290915281209091015461165e90683635c9adc5dea0000061232e565b905060006116b16b033b2e3c9fd0803ce8000000610fe861167f878661232e565b6001600160a01b03808b166000908152600b60209081526040808320600754909416835292905220600101549061232e565b90506116c1816301e13380612359565b6001600160a01b038088166000908152600b602090815260408083206007549094168352929052206004015490915061107590829061236e565b6007546001600160a01b031681565b6007546001600160a01b031660009081526008602052604090206001015490565b60015481565b600154341015611788576040805162461bcd60e51b815260206004820152601a60248201527f73686f756c642070617920657861637420636c61696d20666565000000000000604482015290519081900360640190fd5b60006117948233610f73565b116117d9576040805162461bcd60e51b815260206004820152601060248201526f139bc81c195b991a5b99c81e5a595b1960821b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1661183c576040805162461bcd60e51b8152602060048201526013602482015272151bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b6007546001600160a01b0382811691161415611895576040805162461bcd60e51b81526020600482015260136024820152721d5cd9481cdd185ada5b99c81a5b9cdd195859606a1b604482015290519081900360640190fd5b60006118a18233610f73565b6005549091506118b1908261236e565b600555336000908152600b602090815260408083206001600160a01b03861684529091529020600601546118e5908261236e565b336000908152600b602090815260408083206001600160a01b038781168552925280832060068101949094554260058501556004909301829055815492519216913480156108fc0292909190818181858888f1935050505015801561194e573d6000803e3d6000fd5b5060075460408051636a9c5acd60e01b81526004810184905233602482015290516001600160a01b0390921691636a9c5acd916044808201926020929091908290030181600087803b1580156119a357600080fd5b505af11580156119b7573d6000803e3d6000fd5b505050506040513d60208110156119cd57600080fd5b50516119d857600080fd5b60405181906001600160a01b038416907fe542fd70a6e48b1017b003a83582b8b431ba620b546e8febe1d6c063d04d0ad690600090a35050565b336000908152600b602090815260408083206007546001600160a01b03168452909152902060010154611a7f576040805162461bcd60e51b815260206004820152601060248201526f6e6f2072756e6e696e67207374616b6560801b604482015290519081900360640190fd5b336000908152600b602090815260408083206007546001600160a01b03168452909152902060088101546003909101544291611abb919061236e565b10611af75760405162461bcd60e51b81526004018080602001828103825260238152602001806126756023913960400191505060405180910390fd5b336000818152600b602090815260408083206007546001600160a01b0316845290915290206001015490611b2a9061151e565b336000818152600b60209081526040808320600780546001600160a01b03908116865291845282852060049081019790975580548216855282852060010185905554825163a9059cbb60e01b81529687019590955260248601879052905193169363a9059cbb9360448083019491928390030190829087803b158015611baf57600080fd5b505af1158015611bc3573d6000803e3d6000fd5b505050506040513d6020811015611bd957600080fd5b5051611be457600080fd5b604051819033907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e43090600090a350565b60025481565b6001600160a01b038082166000908152600b602090815260408083209386168352929052206001015492915050565b336000908152600b602090815260408083206007546001600160a01b0316845290915290206008810154600390910154420310611ccd576040805162461bcd60e51b815260206004820152601760248201527f63757272656e74207374616b696e672065787069726564000000000000000000604482015290519081900360640190fd5b600754611ce3906001600160a01b03168261237d565b600754604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015611d3d57600080fd5b505af1158015611d51573d6000803e3d6000fd5b505050506040513d6020811015611d6757600080fd5b5051611d7257600080fd5b604051819033907f87cc10241523077a91c98e7f42c67bc94408b811dcfb4202150e2935e471b08690600090a350565b60005433906001600160a01b0316811480611dca5750600a546001600160a01b038281169116145b611dd357600080fd5b50600255565b6001600160a01b038082166000908152600b602090815260408083209386168352929052206002015492915050565b60045481565b6001600160a01b039081166000908152600b602090815260408083206007805490951684529091529020015490565b60005433906001600160a01b0316811480611e655750600a546001600160a01b038281169116145b611e6e57600080fd5b611e788383612561565b505050565b6008602052600090815260409020805460019091015460ff9091169082565b6000546001600160a01b03163314611eb357600080fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b039081166000908152600b602090815260408083206007549094168352929052206002015490565b336000908152600b602090815260408083206001600160a01b0386168452909152902060010154811115611fa8576040805162461bcd60e51b815260206004820152601e60248201527f696e73756666696369656e7420616d6f756e7420696e206661726d696e670000604482015290519081900360640190fd5b6007546001600160a01b038381169116141561200b576040805162461bcd60e51b815260206004820152601f60248201527f757365207769746864726177206f66207374616b696e6720696e737465616400604482015290519081900360640190fd5b6120158233610f73565b336000908152600b602090815260408083206001600160a01b0387168452909152902060048101919091556001015461204e908261231c565b336000818152600b602090815260408083206001600160a01b03881680855290835281842060018101969096554260038701819055600590960195909555805163a9059cbb60e01b81526004810194909452602484018690525163a9059cbb93604480820194918390030190829087803b1580156120cb57600080fd5b505af11580156120df573d6000803e3d6000fd5b505050506040513d60208110156120f557600080fd5b505161210057600080fd5b604051819033907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e43090600090a35050565b60035481565b336000908152600b602090815260408083206001600160a01b0386168452909152902060010154156121a2576040805162461bcd60e51b815260206004820152600f60248201526e416c72656164792072756e6e696e6760881b604482015290519081900360640190fd5b6001600160a01b03821660009081526008602052604090205460ff16612205576040805162461bcd60e51b8152602060048201526013602482015272151bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b6007546001600160a01b0383811691161415612272576122243361151e565b336000908152600b602090815260408083206001600160a01b0387168452808352818420600481019590955560025460088087019190915583529220600101549190526007909101556122a4565b61227c8233610f73565b336000908152600b602090815260408083206001600160a01b03871684529091529020600401555b336000908152600b602090815260408083206001600160a01b0386168452909152902060018101829055600201546122dc908261236e565b336000908152600b602090815260408083206001600160a01b03969096168352949052929092206002810192909255504260038201819055600590910155565b60008282111561232857fe5b50900390565b60008261233d57506000610be6565b8282028284828161234a57fe5b041461235257fe5b9392505050565b60008082848161236557fe5b04949350505050565b60008282018381101561235257fe5b6001600160a01b03821660009081526008602052604090205460ff166123e0576040805162461bcd60e51b8152602060048201526013602482015272151bdad95b88191bd95cdb89dd08195e1a5cdd606a1b604482015290519081900360640190fd5b336000908152600b602090815260408083206001600160a01b0386168452909152902060010154612458576040805162461bcd60e51b815260206004820152601860248201527f6e6f2072756e6e696e67206661726d696e672f7374616b650000000000000000604482015290519081900360640190fd5b6007546001600160a01b03838116911614156124c5576124773361151e565b336000908152600b602090815260408083206001600160a01b0387168452808352818420600481019590955560025460088087019190915583529220600101549190526007909101556124f7565b6124cf8233610f73565b336000908152600b602090815260408083206001600160a01b03871684529091529020600401555b336000908152600b602090815260408083206001600160a01b0386168452909152902060010154612528908261236e565b336000908152600b602090815260408083206001600160a01b038716845290915290206001810191909155600201546122dc908261236e565b6001600160a01b03821660009081526008602052604090205460ff16156125c6576040805162461bcd60e51b8152602060048201526014602482015273746f6b656e20616c72656164792065786973747360601b604482015290519081900360640190fd5b604080518082018252600180825260208083018581526001600160a01b038716600081815260089093528583209451855460ff191690151517855590519383019390935560098054928301815581527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af90910180546001600160a01b03191683179055915183927ff4c563a3ea86ff1f4275e8c207df0375a51963f2b831b7bf4da8be938d92876c91a3505056fe6e6f7420636c61696d61626c65206265666f7265207374616b696e6720706572696f647374616b6520616d6f756e742073686f756c6420626520657175616c2f67726561746572207468616e206d696e207374616b65206c696d6974a2646970667358221220c62aa9149fd1956f5ef202ef02a5309464903bbe2fb58782d0fbc4ada3970dac64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004639cd8cd52ec1cf2e496a606ce28d8afb1c792f
-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0x4639cd8cd52EC1CF2E496a606ce28D8AfB1C792F
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004639cd8cd52ec1cf2e496a606ce28d8afb1c792fDeployed Bytecode Sourcemap
171:30294:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;467:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20747:150;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20747:150:1;-1:-1:-1;;;;;20747:150:1;;:::i;499:27::-;;;;;;;;;;;;;:::i;16094:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16094:156:1;-1:-1:-1;;;;;16094:156:1;;:::i;:::-;;25935:109;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25935:109:1;;:::i;21506:148::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21506:148:1;-1:-1:-1;;;;;21506:148:1;;:::i;3453:458::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3453:458:1;;;;;;;;:::i;22969:147::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22969:147:1;-1:-1:-1;;;;;22969:147:1;;:::i;14646:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14646:173:1;;;;;;;;;;:::i;24470:222::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24470:222:1;;:::i;8490:349::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8490:349:1;;:::i;17827:342::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17827:342:1;;;;;;;;:::i;15103:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15103:175:1;;;;;;;;;;:::i;17107:308::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17107:308:1;-1:-1:-1;;;;;17107:308:1;;:::i;12906:615::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12906:615:1;;;;;;;;;;:::i;23333:326::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23333:326:1;-1:-1:-1;;;;;23333:326:1;;:::i;18475:172::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18475:172:1;;:::i;25021:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25021:134:1;;:::i;11103:1039::-;;;:::i;21881:166::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21881:166:1;-1:-1:-1;;;;;21881:166:1;;:::i;271:28:3:-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;271:28:3;;;;;;;;;;;;;;4242:441:1;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4242:441:1;;;;;;;;:::i;19356:1167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19356:1167:1;-1:-1:-1;;;;;19356:1167:1;;:::i;539:17::-;;;;;;;;;;;;;:::i;22259:115::-;;;;;;;;;;;;;:::i;256:46::-;;;;;;;;;;;;;:::i;4991:1137::-;;;;;;;;;;;;;;;;-1:-1:-1;4991:1137:1;-1:-1:-1;;;;;4991:1137:1;;:::i;9908:906::-;;;;;;;;;;;;;:::i;309:38::-;;;;;;;;;;;;;:::i;13788:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13788:177:1;;;;;;;;;;:::i;9170:449::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9170:449:1;;:::i;25500:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25500:122:1;;:::i;14234:184::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14234:184:1;;;;;;;;;;:::i;403:46::-;;;;;;;;;;;;;:::i;22600:141::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22600:141:1;-1:-1:-1;;;;;22600:141:1;;:::i;16635:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16635:143:1;;;;;;;;:::i;647:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;647:40:1;-1:-1:-1;;;;;647:40:1;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;539:166:3;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;539:166:3;-1:-1:-1;;;;;539:166:3;;:::i;21121:159:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21121:159:1;-1:-1:-1;;;;;21121:159:1;;:::i;6486:1202::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6486:1202:1;;;;;;;;:::i;354:42::-;;;;;;;;;;;;;:::i;467:25::-;;;;:::o;20747:150::-;-1:-1:-1;;;;;20848:12:1;;;20809:20;20848:12;;;:5;:12;;;;;;;;20869:4;;;;;20848:27;;;;;;20869:4;20848:41;;;20747:150::o;499:27::-;;;;:::o;16094:156::-;505:5:3;;-1:-1:-1;;;;;505:5:3;491:10;:19;483:28;;;;;;16176:10:1::1;:24:::0;;-1:-1:-1;;;;;;16176:24:1::1;-1:-1:-1::0;;;;;16176:24:1;::::1;::::0;;::::1;::::0;;;16216:26:::1;::::0;::::1;::::0;-1:-1:-1;;16216:26:1::1;16094:156:::0;:::o;25935:109::-;2389:5;;25995:10;;-1:-1:-1;;;;;2389:5:1;2378:16;;;:41;;-1:-1:-1;2409:10:1;;-1:-1:-1;;;;;2398:21:1;;;2409:10;;2398:21;2378:41;2370:50;;;;;;-1:-1:-1;26016:13:1::1;:20:::0;25935:109::o;21506:148::-;-1:-1:-1;;;;;21609:12:1;;;21563:27;21609:12;;;:5;:12;;;;;;;;21630:4;;;;;21609:27;;;;;;:37;;;;21506:148::o;3453:458::-;3559:4;;-1:-1:-1;;;;;3534:30:1;;;3559:4;;3534:30;;3526:62;;;;;-1:-1:-1;;;3526:62:1;;;;;;;;;;;;-1:-1:-1;;;3526:62:1;;;;;;;;;;;;;;;3634:35;3646:13;3661:7;3634:11;:35::i;:::-;3760:78;;;-1:-1:-1;;;3760:78:1;;3803:10;3760:78;;;;3823:4;3760:78;;;;;;;;;;;;-1:-1:-1;;;;;3760:42:1;;;;;:78;;;;;;;;;;;;;;-1:-1:-1;3760:42:1;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3760:78:1;3752:87;;;;;;3865:38;;3895:7;;-1:-1:-1;;;;;3865:38:1;;;;;;;;3453:458;;:::o;22969:147::-;-1:-1:-1;;;;;23074:12:1;;;23033:22;23074:12;;;:5;:12;;;;;;;;23095:4;;;;;23074:27;;;;;;:34;;;;22969:147::o;14646:173::-;-1:-1:-1;;;;;14774:12:1;;;14728:27;14774:12;;;:5;:12;;;;;;;;:27;;;;;;;;;:37;;;14646:173;;;;;:::o;24470:222::-;2389:5;;24547:10;;-1:-1:-1;;;;;2389:5:1;2378:16;;;:41;;-1:-1:-1;2409:10:1;;-1:-1:-1;;;;;2398:21:1;;;2409:10;;2398:21;2378:41;2370:50;;;;;;24594:4:::1;::::0;-1:-1:-1;;;;;24594:4:1::1;24579:21;::::0;;;:6:::1;:21;::::0;;;;;24594:4;24579:26:::1;:44:::0;;;24649:35;24608:15;;24649:35:::1;::::0;::::1;24470:222:::0;;:::o;8490:349::-;8542:7;2209:13;;2194:11;:28;;2186:98;;;;-1:-1:-1;;;2186:98:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8608:4:::1;::::0;8588:35:::1;::::0;-1:-1:-1;;;;;8608:4:1::1;8615:7:::0;8588:11:::1;:35::i;:::-;8714:4;::::0;:53:::1;::::0;;-1:-1:-1;;;8714:53:1;;8732:10:::1;8714:53;::::0;::::1;::::0;8752:4:::1;8714:53:::0;;;;;;;;;;;;-1:-1:-1;;;;;8714:4:1;;::::1;::::0;:17:::1;::::0;:53;;;;;::::1;::::0;;;;;;;;;:4:::1;::::0;:53;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8714:53:1;8706:62:::1;;;::::0;::::1;;8794:27;::::0;8813:7;;8801:10:::1;::::0;8794:27:::1;::::0;;;::::1;8490:349:::0;;:::o;17827:342::-;2389:5;;17927:10;;-1:-1:-1;;;;;2389:5:1;2378:16;;;:41;;-1:-1:-1;2409:10:1;;-1:-1:-1;;;;;2398:21:1;;;2409:10;;2398:21;2378:41;2370:50;;;;;;-1:-1:-1;;;;;17968:21:1;::::1;;::::0;;;:6:::1;:21;::::0;;;;:28;::::1;;17960:60;;;::::0;;-1:-1:-1;;;17960:60:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17960:60:1;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;18041:21:1;::::1;;::::0;;;:6:::1;:21;::::0;;;;;:26:::1;;:44:::0;;;18111:50;18070:15;;18041:21;18111:50:::1;::::0;::::1;17827:342:::0;;;:::o;15103:175::-;-1:-1:-1;;;;;15231:12:1;;;15192:20;15231:12;;;:5;:12;;;;;;;;:27;;;;;;;;;:39;;;15103:175;;;;:::o;17107:308::-;2389:5;;17176:10;;-1:-1:-1;;;;;2389:5:1;2378:16;;;:41;;-1:-1:-1;2409:10:1;;-1:-1:-1;;;;;2398:21:1;;;2409:10;;2398:21;2378:41;2370:50;;;;;;-1:-1:-1;;;;;17217:21:1;::::1;;::::0;;;:6:::1;:21;::::0;;;;:28;::::1;;17209:60;;;::::0;;-1:-1:-1;;;17209:60:1;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17209:60:1;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;17290:21:1;::::1;17321:5;17290:21:::0;;;:6:::1;:21;::::0;;;;;:36;;-1:-1:-1;;17290:36:1::1;::::0;;;17380:26:::1;::::0;17352:55;;17380:26;;17290:21;17352:55:::1;::::0;::::1;17107:308:::0;;:::o;12906:615::-;-1:-1:-1;;;;;13062:14:1;;;12988:26;13062:14;;;:5;:14;;;;;;;;:29;;;;;;;;;;;:45;;;12988:26;;13054:54;;:3;;:7;:54::i;:::-;-1:-1:-1;;;;;13162:21:1;;13129:28;13162:21;;;:6;:21;;;;;:26;;;13026:82;;-1:-1:-1;13129:28:1;13160:58;;13209:8;;13161:42;;13194:8;13161:32;:42::i;:::-;13160:48;;:58::i;:::-;13129:89;-1:-1:-1;13260:13:1;13276:110;13377:8;13277:94;13327:43;:17;13129:89;13327:21;:43::i;:::-;-1:-1:-1;;;;;13278:14:1;;;;;;;:5;:14;;;;;;;;:29;;;;;;;;;:43;;;;13277:49;:94::i;13276:110::-;-1:-1:-1;;;;;13470:14:1;;;;;;;:5;:14;;;;;;;;:29;;;;;;;;;:42;;;13260:126;;-1:-1:-1;13460:53:1;;13260:126;;13460:9;:53::i;:::-;13453:60;12906:615;-1:-1:-1;;;;;;12906:615:1:o;23333:326::-;23395:17;;;23473:61;23514:19;23527:5;23514:12;:19::i;:::-;-1:-1:-1;;;;;23474:12:1;;;;;;;:5;:12;;;;;;;;23495:4;;;;;23474:27;;;;;;:34;;;;23473:40;:61::i;:::-;23452:82;;23564:10;23558:3;:16;23555:60;;;23596:19;:10;23611:3;23596:14;:19::i;:::-;23589:26;;23555:60;-1:-1:-1;23647:4:1;23333:326;-1:-1:-1;;23333:326:1:o;18475:172::-;2389:5;;18545:10;;-1:-1:-1;;;;;2389:5:1;2378:16;;;:41;;-1:-1:-1;2409:10:1;;-1:-1:-1;;;;;2398:21:1;;;2409:10;;2398:21;2378:41;2370:50;;;;;;18567:18:::1;:25:::0;;;18608:31:::1;::::0;18588:4;;18608:31:::1;::::0;;;::::1;18475:172:::0;;:::o;25021:134::-;2389:5;;25096:10;;-1:-1:-1;;;;;2389:5:1;2378:16;;;:41;;-1:-1:-1;2409:10:1;;-1:-1:-1;;;;;2398:21:1;;;2409:10;;2398:21;2378:41;2370:50;;;;;;-1:-1:-1;25117:13:1::1;:30:::0;25021:134::o;11103:1039::-;11175:13;;11162:9;:26;;11154:65;;;;;-1:-1:-1;;;11154:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;11266:1;11238:25;11252:10;11238:13;:25::i;:::-;:29;11230:66;;;;;-1:-1:-1;;;11230:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;11313:22;11338:25;11352:10;11338:13;:25::i;:::-;11446:12;;11313:50;;-1:-1:-1;11446:32:1;;11313:50;11446:16;:32::i;:::-;11431:12;:47;;;11594:10;11588:17;;;;:5;:17;;;;;;;;11614:4;;-1:-1:-1;;;;;11614:4:1;11588:32;;;;;;;:44;;:64;;11637:14;11588:48;:64::i;:::-;11547:10;11541:17;;;;:5;:17;;;;;;;;11567:4;;;-1:-1:-1;;;;;11567:4:1;;;11541:32;;;;;;;;;:44;;:111;;;;11725:4;;;;11699:32;;;;;11750:3;11699:48;;;;:54;11825:4;;;;11799:32;;;;;:45;;:49;;;11917:5;;:25;;:5;;;11932:9;11917:25;;;;;11932:9;;11917:25;;11541:17;11917:25;11932:9;11917:5;:25;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12022:4:1;;:43;;;-1:-1:-1;;;12022:43:1;;;;;;;;12054:10;12022:43;;;;;;-1:-1:-1;;;;;12022:4:1;;;;:15;;:43;;;;;;;;;;;;;;;:4;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12022:43:1;12014:52;;;;;;12093:41;;12119:14;;12107:10;;12093:41;;;;;11103:1039;:::o;21881:166::-;-1:-1:-1;;;;;22000:12:1;;;21961:20;22000:12;;;:5;:12;;;;;;;;22021:4;;;;;22000:27;;;;;;:39;;;;21881:166::o;271:28:3:-;;;-1:-1:-1;;;;;271:28:3;;:::o;4242:441:1:-;4353:4;;-1:-1:-1;;;;;4328:30:1;;;4353:4;;4328:30;;4320:62;;;;;-1:-1:-1;;;4320:62:1;;;;;;;;;;;;-1:-1:-1;;;4320:62:1;;;;;;;;;;;;;;;4393:38;4408:13;4423:7;4393:14;:38::i;:::-;4528:77;;;-1:-1:-1;;;4528:77:1;;4571:10;4528:77;;;;4590:4;4528:77;;;;;;;;;;;;-1:-1:-1;;;;;4528:42:1;;;;;:77;;;;;;;;;;;;;;-1:-1:-1;4528:42:1;:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4528:77:1;4520:86;;;;;;4632:43;;4667:7;;-1:-1:-1;;;;;4632:43:1;;;;;;;;4242:441;;:::o;19356:1167::-;-1:-1:-1;;;;;19553:14:1;;;19416:22;19553:14;;;:5;:14;;;;;;;;19576:4;;;;;19553:29;;;;;;;;:39;;;;19511:36;;;;;19416:22;;;;19510:83;;:42;:83::i;:::-;19489:104;;19623:10;19617:3;:16;19614:406;;;-1:-1:-1;;;;;19675:14:1;;;;;;;:5;:14;;;;;;;;19698:4;;;;;19675:29;;;;;;:45;;;19667:54;;:3;;:7;:54::i;:::-;19648:73;;19614:406;;;-1:-1:-1;;;;;19754:14:1;;;;;;;:5;:14;;;;;;;;19777:4;;;;;19754:29;;;;;;:45;;;:59;-1:-1:-1;19751:257:1;;19890:1;19871:20;;19751:257;;;-1:-1:-1;;;;;19962:14:1;;;;;;;:5;:14;;;;;;;;19985:4;;;;;19962:29;;;;;;:45;;;19947:61;;:10;;:14;:61::i;:::-;19928:80;;19751:257;-1:-1:-1;;;;;20077:14:1;;;20044:28;20077:14;;;:5;:14;;;;;;;;20100:4;;;;;;20077:29;;;;;;;:34;;;;20076:50;;20117:8;20076:40;:50::i;:::-;20044:83;-1:-1:-1;20159:14:1;20177:109;20277:8;20178:93;20228:42;:16;20044:83;20228:20;:42::i;:::-;-1:-1:-1;;;;;20179:14:1;;;;;;;:5;:14;;;;;;;;20202:4;;;;;20179:29;;;;;;20202:4;20179:43;;;20178:49;:93::i;20177:109::-;20159:127;-1:-1:-1;20421:20:1;20159:127;20432:8;20421:10;:20::i;:::-;-1:-1:-1;;;;;20471:14:1;;;;;;;:5;:14;;;;;;;;20494:4;;;;;20471:29;;;;;;:42;;;20412:29;;-1:-1:-1;20460:54:1;;20412:29;;20460:10;:54::i;539:17::-;;;-1:-1:-1;;;;;539:17:1;;:::o;22259:115::-;22355:4;;-1:-1:-1;;;;;22355:4:1;22310:11;22340:21;;;:6;:21;;;;;22355:4;22340:26;;22259:115;:::o;256:46::-;;;;:::o;4991:1137::-;5078:18;;5065:9;:31;;5057:70;;;;;-1:-1:-1;;;5057:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;5188:1;5146:39;5159:13;5174:10;5146:12;:39::i;:::-;:43;5138:72;;;;;-1:-1:-1;;;5138:72:1;;;;;;;;;;;;-1:-1:-1;;;5138:72:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;5229:21:1;;;;;;:6;:21;;;;;:28;;;5221:60;;;;;-1:-1:-1;;;5221:60:1;;;;;;;;;;;;-1:-1:-1;;;5221:60:1;;;;;;;;;;;;;;;5325:4;;-1:-1:-1;;;;;5300:30:1;;;5325:4;;5300:30;;5292:62;;;;;-1:-1:-1;;;5292:62:1;;;;;;;;;;;;-1:-1:-1;;;5292:62:1;;;;;;;;;;;;;;;5371:21;5395:39;5408:13;5423:10;5395:12;:39::i;:::-;5500:10;;5371:63;;-1:-1:-1;5500:29:1;;5371:63;5500:14;:29::i;:::-;5487:10;:42;5633:10;5627:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;5627:32:1;;;;;;;;;:44;;;:63;;5676:13;5627:48;:63::i;:::-;5586:10;5580:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;5580:32:1;;;;;;;;;;:44;;;:110;;;;5752:3;5701:48;;;:54;5766:45;;;;:49;;;5874:5;;:25;;:5;;;5889:9;5874:25;;;;;5889:9;;5874:25;;5580:17;5874:25;5889:9;5874:5;:25;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6007:4:1;;:42;;;-1:-1:-1;;;6007:42:1;;;;;;;;6038:10;6007:42;;;;;;-1:-1:-1;;;;;6007:4:1;;;;:15;;:42;;;;;;;;;;;;;;;:4;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6007:42:1;5999:51;;;;;;6076:44;;6106:13;;-1:-1:-1;;;;;6076:44:1;;;;;;;;4991:1137;;:::o;9908:906::-;10053:10;10096:1;10047:17;;;:5;:17;;;;;;;;10073:4;;-1:-1:-1;;;;;10073:4:1;10047:32;;;;;;;10073:4;10047:46;;10039:79;;;;;-1:-1:-1;;;10039:79:1;;;;;;;;;;;;-1:-1:-1;;;10039:79:1;;;;;;;;;;;;;;;10190:10;10184:17;;;;:5;:17;;;;;;;;10210:4;;-1:-1:-1;;;;;10210:4:1;10184:32;;;;;;;:39;;;;10137:42;;;;;10227:3;;10137:87;;:42;:46;:87::i;:::-;:93;10129:141;;;;-1:-1:-1;;;10129:141:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10323:10;10291:23;10317:17;;;:5;:17;;;;;;;;10343:4;;-1:-1:-1;;;;;10343:4:1;10317:32;;;;;;;10343:4;10317:46;;;10508:25;;:13;:25::i;:::-;10466:10;10460:17;;;;:5;:17;;;;;;;;10486:4;;;-1:-1:-1;;;;;10486:4:1;;;10460:32;;;;;;;;:45;;;;:73;;;;10597:4;;;;10571:32;;;;;10486:4;10571:46;:50;;;10685:4;:42;;-1:-1:-1;;;10685:42:1;;;;;;;;;;;;;;;;;:4;;;:13;;:42;;;;;;;;;;;;;;:4;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10685:42:1;10677:51;;;;;;10754:42;;10780:15;;10768:10;;10754:42;;;;;9908:906;:::o;309:38::-;;;;:::o;13788:177::-;-1:-1:-1;;;;;13916:12:1;;;13875:22;13916:12;;;:5;:12;;;;;;;;:27;;;;;;;;;:41;;;13788:177;;;;:::o;9170:449::-;9292:10;9286:17;;;;:5;:17;;;;;;;;9312:4;;-1:-1:-1;;;;;9312:4:1;9286:32;;;;;;;:39;;;;9241:42;;;;;9235:3;:48;:90;9227:126;;;;;-1:-1:-1;;;9227:126:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;9387:4;;9364:38;;-1:-1:-1;;;;;9387:4:1;9394:7;9364:14;:38::i;:::-;9491:4;;:52;;;-1:-1:-1;;;9491:52:1;;9509:10;9491:52;;;;9528:4;9491:52;;;;;;;;;;;;-1:-1:-1;;;;;9491:4:1;;;;:17;;:52;;;;;;;;;;;;;;;:4;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9491:52:1;9483:61;;;;;;9570:41;;9603:7;;9591:10;;9570:41;;;;;9170:449;:::o;25500:122::-;2389:5;;25569:10;;-1:-1:-1;;;;;2389:5:1;2378:16;;;:41;;-1:-1:-1;2409:10:1;;-1:-1:-1;;;;;2398:21:1;;;2409:10;;2398:21;2378:41;2370:50;;;;;;-1:-1:-1;25590:13:1::1;:24:::0;25500:122::o;14234:184::-;-1:-1:-1;;;;;14369:12:1;;;14329:21;14369:12;;;:5;:12;;;;;;;;:27;;;;;;;;;:41;;;14234:184;;;;:::o;403:46::-;;;;:::o;22600:141::-;-1:-1:-1;;;;;22701:12:1;;;22662:20;22701:12;;;:5;:12;;;;;;;;22722:4;;;;;;22701:27;;;;;;;:32;;;22600:141::o;16635:143::-;2389:5;;16716:10;;-1:-1:-1;;;;;2389:5:1;2378:16;;;:41;;-1:-1:-1;2409:10:1;;-1:-1:-1;;;;;2398:21:1;;;2409:10;;2398:21;2378:41;2370:50;;;;;;16739:31:::1;16749:13;16764:5;16739:9;:31::i;:::-;16635:143:::0;;;:::o;647:40::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;539:166:3:-;505:5;;-1:-1:-1;;;;;505:5:3;491:10;:19;483:28;;;;;;621:5:::1;:17:::0;;-1:-1:-1;;;;;;621:17:3::1;-1:-1:-1::0;;;;;621:17:3;::::1;::::0;;::::1;::::0;;654:43:::1;::::0;621:17;;675:10:::1;::::0;654:43:::1;::::0;621:5;654:43:::1;539:166:::0;:::o;21121:159:1:-;-1:-1:-1;;;;;21231:12:1;;;21192:20;21231:12;;;:5;:12;;;;;;;;21252:4;;;;;21231:27;;;;;;:41;;;;21121:159::o;6486:1202::-;6590:10;6584:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;6584:32:1;;;;;;;;;:46;;;:57;-1:-1:-1;6584:57:1;6576:100;;;;;-1:-1:-1;;;6576:100:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;6720:4;;-1:-1:-1;;;;;6695:30:1;;;6720:4;;6695:30;;6687:74;;;;;-1:-1:-1;;;6687:74:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;6947:39;6960:13;6975:10;6947:12;:39::i;:::-;6905:10;6899:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;6899:32:1;;;;;;;;;:45;;;:87;;;;7081:46;;;:59;;7132:7;7081:50;:59::i;:::-;7038:10;7032:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;7032:32:1;;;;;;;;;;;:46;;;:108;;;;7291:3;7246:42;;;:48;;;7408;;;;:54;;;;7560:59;;-1:-1:-1;;;7560:59:1;;;;;;;;;;;;;;;;:38;;:59;;;;;;;;;;;;;7032:32;7560:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7560:59:1;7552:68;;;;;;7646:34;;7672:7;;7660:10;;7646:34;;;;;6486:1202;;:::o;354:42::-;;;;:::o;26770:1187::-;26864:10;26858:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;26858:32:1;;;;;;;;;:46;;;:52;26850:80;;;;;-1:-1:-1;;;26850:80:1;;;;;;;;;;;;-1:-1:-1;;;26850:80:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;26949:21:1;;;;;;:6;:21;;;;;:28;;;26941:60;;;;;-1:-1:-1;;;26941:60:1;;;;;;;;;;;;-1:-1:-1;;;26941:60:1;;;;;;;;;;;;;;;27190:4;;-1:-1:-1;;;;;27165:30:1;;;27190:4;;27165:30;27162:453;;;27259:25;27273:10;27259:13;:25::i;:::-;27217:10;27211:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;27211:32:1;;;;;;;;;;:45;;;:73;;;;27341:13;;27299:39;;;;:55;;;;27409:21;;;;:26;;;27369:32;;;:37;;;;:66;27162:453;;;27576:39;27589:13;27604:10;27576:12;:39::i;:::-;27534:10;27528:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;27528:32:1;;;;;;;;;:45;;:87;27162:453;27646:10;27640:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;27640:32:1;;;;;;;;;:46;;;:56;;;27756:46;;;:59;;27640:56;27756:50;:59::i;:::-;27713:10;27707:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;27707:32:1;;;;;;;;;;;;;:46;;;:108;;;;-1:-1:-1;27871:3:1;27826:42;;;:48;;;27885;;;;:54;26770:1187::o;652:113:4:-;710:7;738:1;733;:6;;726:14;;;;-1:-1:-1;754:5:4;;;652:113::o;190:180::-;248:7;268:6;264:37;;-1:-1:-1;292:1:4;285:8;;264:37;319:5;;;323:1;319;:5;:1;338:5;;;;;:10;331:18;;;;363:1;190:180;-1:-1:-1;;;190:180:4:o;376:270::-;434:7;525:9;541:1;537;:5;;;;;;;376:270;-1:-1:-1;;;;376:270:4:o;771:133::-;829:7;857:5;;;876:6;;;;869:14;;;28188:1681:1;-1:-1:-1;;;;;28279:21:1;;;;;;:6;:21;;;;;:28;;;28271:60;;;;;-1:-1:-1;;;28271:60:1;;;;;;;;;;;;-1:-1:-1;;;28271:60:1;;;;;;;;;;;;;;;28447:10;28490:1;28441:17;;;:5;:17;;;;;;;;-1:-1:-1;;;;;28441:32:1;;;;;;;;;:46;;;28433:87;;;;;-1:-1:-1;;;28433:87:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;28687:4;;-1:-1:-1;;;;;28662:30:1;;;28687:4;;28662:30;28659:492;;;28760:25;28774:10;28760:13;:25::i;:::-;28718:10;28712:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;28712:32:1;;;;;;;;;;:45;;;:73;;;;28846:13;;28804:39;;;;:55;;;;28918:21;;;;:26;;;28878:32;;;:37;;;;:66;28659:492;;;29112:39;29125:13;29140:10;29112:12;:39::i;:::-;29070:10;29064:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;29064:32:1;;;;;;;;;:45;;:87;28659:492;29270:10;29264:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;29264:32:1;;;;;;;;;:46;;;:59;;29315:7;29264:50;:59::i;:::-;29221:10;29215:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;29215:32:1;;;;;;;;;:46;;;:108;;;;29436:46;;;:59;;29487:7;29436:50;:59::i;30083:367::-;-1:-1:-1;;;;;30168:21:1;;;;;;:6;:21;;;;;:28;;;30167:29;30159:62;;;;;-1:-1:-1;;;30159:62:1;;;;;;;;;;;;-1:-1:-1;;;30159:62:1;;;;;;;;;;;;;;;30266:72;;;;;;;;30296:4;30266:72;;;;;;;;;;-1:-1:-1;;;;;30242:21:1;;-1:-1:-1;30242:21:1;;;:6;:21;;;;;;:96;;;;-1:-1:-1;;30242:96:1;;;;;;;;;;;;;;;;30359:15;:35;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30359:35:1;;;;;30410:32;;30266:72;;30410:32;;;30083:367;;:::o
Swarm Source
ipfs://c62aa9149fd1956f5ef202ef02a5309464903bbe2fb58782d0fbc4ada3970dac
Loading...LoadingLoading...Loading
Loading...Loading
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...Loading[ Download: CSV Export ][ 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.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Name Tags (up to 35 characters) can be used for easy identification of addressesPrivate Note:
A private note (up to 500 characters) can be attached to this address.
Please DO NOT store any passwords or private keys here.Compiler specific version warnings:
The compiled contract might be susceptible to FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity), MissingSideEffectsOnSelectorAccess (low-severity), AbiReencodingHeadOverflowWithStaticArrayCleanup (medium-severity), DirtyBytesArrayToStorage (low-severity), DataLocationChangeInInternalOverride (very low-severity), NestedCalldataArrayAbiReencodingSizeValidation (very low-severity), SignedImmutables (very low-severity), ABIDecodeTwoDimensionalArrayMemory (very low-severity), KeccakCaching (medium-severity), EmptyByteArrayCopy (medium-severity), DynamicArrayCleanup (medium-severity) Solidity Compiler Bugs.
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Address Cards
To use this feature, please login to your Etherscan account and return to this page.Before You Copy
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.