ETH Price: $2,049.91 (-16.23%)

Contract

0x005685a5a1889FC7BFc3e9c11657703A67fB663B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Staked ...211737532024-11-12 19:40:23111 days ago1731440423IN
0x005685a5...A67fB663B
0 ETH0.0045331939.38930672
Add Token Reward211718632024-11-12 13:20:47111 days ago1731417647IN
0x005685a5...A67fB663B
0 ETH0.0011685823.29853982
Withdraw Staked ...199409182024-05-24 16:25:23283 days ago1716567923IN
0x005685a5...A67fB663B
0 ETH0.0013113111.39412303
Add Token Reward199391162024-05-24 10:22:23283 days ago1716546143IN
0x005685a5...A67fB663B
0 ETH0.000406577.39811713
Withdraw Staked ...195297282024-03-28 2:45:59340 days ago1711593959IN
0x005685a5...A67fB663B
0 ETH0.002923425.40166315
Withdraw Staked ...195114522024-03-25 12:19:47343 days ago1711369187IN
0x005685a5...A67fB663B
0 ETH0.0023081120.15624038
Withdraw Staked ...195114502024-03-25 12:19:23343 days ago1711369163IN
0x005685a5...A67fB663B
0 ETH0.0027092320.58519562
Withdraw Staked ...194319112024-03-14 7:57:59354 days ago1710403079IN
0x005685a5...A67fB663B
0 ETH0.004930543.05706936
Withdraw Staked ...194319082024-03-14 7:57:23354 days ago1710403043IN
0x005685a5...A67fB663B
0 ETH0.0057532249.99024148
Withdraw Staked ...191796292024-02-07 23:36:23390 days ago1707348983IN
0x005685a5...A67fB663B
0 ETH0.0049433437.39662773
Add Token Reward191770542024-02-07 14:57:23390 days ago1707317843IN
0x005685a5...A67fB663B
0 ETH0.0023625247.10255383
Withdraw Staked ...190787232024-01-24 19:57:23404 days ago1706126243IN
0x005685a5...A67fB663B
0 ETH0.00119610.39220071
Withdraw Staked ...190064392024-01-14 16:52:47414 days ago1705251167IN
0x005685a5...A67fB663B
0 ETH0.0031752927.59039456
Withdraw Staked ...190064242024-01-14 16:49:47414 days ago1705250987IN
0x005685a5...A67fB663B
0 ETH0.0031077927.00384743
Withdraw Staked ...189678632024-01-09 7:16:23419 days ago1704784583IN
0x005685a5...A67fB663B
0 ETH0.0013491812.36255977
Withdraw Staked ...189504952024-01-06 20:26:11422 days ago1704572771IN
0x005685a5...A67fB663B
0 ETH0.0016112114
Withdraw Staked ...187715742023-12-12 17:24:35447 days ago1702401875IN
0x005685a5...A67fB663B
0 ETH0.0061224953.19880767
Add Token Reward187626182023-12-11 11:18:47448 days ago1702293527IN
0x005685a5...A67fB663B
0 ETH0.0014973629.86063461
Withdraw Staked ...187075442023-12-03 18:07:23456 days ago1701626843IN
0x005685a5...A67fB663B
0 ETH0.0040807635.45811809
Withdraw Staked ...185522682023-11-12 0:29:35478 days ago1699748975IN
0x005685a5...A67fB663B
0 ETH0.0031181727.23039184
Withdraw Staked ...185522452023-11-12 0:24:59478 days ago1699748699IN
0x005685a5...A67fB663B
0 ETH0.0032614328.33887469
Withdraw Staked ...185486402023-11-11 12:18:23478 days ago1699705103IN
0x005685a5...A67fB663B
0 ETH0.0026136622.8245974
Withdraw Staked ...184496492023-10-28 15:40:11492 days ago1698507611IN
0x005685a5...A67fB663B
0 ETH0.0019114316.60857333
Withdraw Staked ...184496432023-10-28 15:38:59492 days ago1698507539IN
0x005685a5...A67fB663B
0 ETH0.0019552616.98944713
Unpause Token St...182407762023-09-29 10:28:35521 days ago1695983315IN
0x005685a5...A67fB663B
0 ETH0.000166416.67911581
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CoretoStaking

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-07
*/

pragma solidity ^0.4.24;

/**
 * @title SafeMath
 * @dev   Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    
    /**
    * @dev Multiplies two unsigned integers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256){
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b,"Calculation error in multiplication");
        return c;
    }

    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256){
        // Solidity only automatically asserts when dividing by 0
        require(b > 0,"Calculation error in division");
        uint256 c = a / b;
        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256){
        require(b <= a,"Calculation error in subtraction");
        uint256 c = a - b;
        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256){
        uint256 c = a + b;
        require(c >= a,"Calculation error in addition");
        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256){
        require(b != 0,"Calculation error");
        return a % b;
    }
}

/**
 * @title IToken
 * @dev   Contract interface for token contract 
 */
contract IToken {
    function totalSupply() public pure returns (uint256);
    function balanceOf(address) public pure returns (uint256);
    function allowance(address, address) public pure returns (uint256);
    function transfer(address, uint256) public pure returns (bool);
    function transferFrom(address, address, uint256) public pure returns (bool);
    function approve(address, uint256) public pure returns (bool);
 }

 /**
 * @title CoretoStaking
 * @dev   Staking Contract for token staking
 */
contract CoretoStaking {
    
  using SafeMath for uint256;
  address private _owner;                                                      // variable for Owner of the Contract.
  uint256 private _withdrawTime;                                               // variable to manage withdraw time for token
  uint256 constant public PERIOD_SERENITY                     = 90;            // variable constant for time period management for serenity pool
  uint256 constant public PERIOD_EQUILIBRIUM                  = 180;           // variable constant for time period management for equilibrium pool
  uint256 constant public PERIOD_TRANQUILLITY                 = 270;           // variable constant for time period management for tranquillity pool
  uint256 constant public WITHDRAW_TIME_SERENITY              = 45 * 1 days;   // variable constant to manage withdraw time lock up for serenity
  uint256 constant public WITHDRAW_TIME_EQUILIBRIUM           = 90 * 1 days;   // variable constant to manage withdraw time lock up for equilibrium
  uint256 constant public WITHDRAW_TIME_TRANQUILLITY          = 135 * 1 days;  // variable constant to manage withdraw time lock up for tranquillity
  uint256 constant public TOKEN_REWARD_PERCENT_SERENITY       = 3555807;       // variable constant to manage token reward percentage for serenity
  uint256 constant public TOKEN_REWARD_PERCENT_EQUILIBRIUM    = 10905365;      // variable constant to manage token reward percentage for equilibrium
  uint256 constant public TOKEN_REWARD_PERCENT_TRANQUILLITY   = 26010053;      // variable constant to manage token reward percentage for tranquillity
  uint256 constant public TOKEN_PENALTY_PERCENT_SERENITY      = 2411368;       // variable constant to manage token penalty percentage for serenity
  uint256 constant public TOKEN_PENALTY_PERCENT_EQUILIBRIUM   = 7238052;       // variable constant to manage token penalty percentage for equilibrium
  uint256 constant public TOKEN_PENALTY_PERCENT_TRANQUILLITY  = 14692434;      // variable constant to manage token penalty percentage for tranquillity
  uint256 constant public TOKEN_POOL_CAP              = 25000000*(10**18);     // variable constant to store maximaum pool cap value
  
  // events to handle staking pause or unpause for token
  event Paused();
  event Unpaused();
  
  /*
  * ---------------------------------------------------------------------------------------------------------------------------
  * Functions for owner.
  * ---------------------------------------------------------------------------------------------------------------------------
  */

   /**
   * @dev get address of smart contract owner
   * @return address of owner
   */
   function getowner() public view returns (address) {
     return _owner;
   }

   /**
   * @dev modifier to check if the message sender is owner
   */
   modifier onlyOwner() {
     require(isOwner(),"You are not authenticate to make this transfer");
     _;
   }

   /**
   * @dev Internal function for modifier
   */
   function isOwner() internal view returns (bool) {
      return msg.sender == _owner;
   }

   /**
   * @dev Transfer ownership of the smart contract. For owner only
   * @return request status
   */
   function transferOwnership(address newOwner) public onlyOwner returns (bool){
      _owner = newOwner;
      return true;
   }
   
  /*
  * ---------------------------------------------------------------------------------------------------------------------------
  * Functionality of Constructor and Interface  
  * ---------------------------------------------------------------------------------------------------------------------------
  */
  
  // constructor to declare owner of the contract during time of deploy  
  constructor() public {
     _owner = msg.sender;
  }
  
  // Interface declaration for contract
  IToken itoken;
    
  // function to set Contract Address for Token Functions
  function setContractAddress(address tokenContractAddress) external onlyOwner returns(bool){
    itoken = IToken(tokenContractAddress);
    return true;
  }
  
   /*
  * ----------------------------------------------------------------------------------------------------------------------------
  * Owner functions of get value, set value and other Functionality
  * ----------------------------------------------------------------------------------------------------------------------------
  */
  
  // function to add token reward in contract
  function addTokenReward(uint256 token) external onlyOwner returns(bool){
    _ownerTokenAllowance = _ownerTokenAllowance.add(token);
    itoken.transferFrom(msg.sender, address(this), token);
    return true;
  }
  
  // function to withdraw added token reward in contract
  function withdrawAddedTokenReward(uint256 token) external onlyOwner returns(bool){
    require(token < _ownerTokenAllowance,"Value is not feasible, Please Try Again!!!");
    _ownerTokenAllowance = _ownerTokenAllowance.sub(token);
    itoken.transfer(msg.sender, token);
    return true;
  }
  
  // function to get token reward in contract
  function getTokenReward() public view returns(uint256){
    return _ownerTokenAllowance;
  }
  
  // function to pause Token Staking
  function pauseTokenStaking() public onlyOwner {
    tokenPaused = true;
    emit Paused();
  }

  // function to unpause Token Staking
  function unpauseTokenStaking() public onlyOwner {
    tokenPaused = false;
    emit Unpaused();
  }

  /*
  * ----------------------------------------------------------------------------------------------------------------------------
  * Variable, Mapping for Token Staking Functionality
  * ----------------------------------------------------------------------------------------------------------------------------
  */
  
  // mapping for users with id => address Staking Address
  mapping (uint256 => address) private _tokenStakingAddress;
  
  // mapping for users with address => id staking id
  mapping (address => uint256[]) private _tokenStakingId;

  // mapping for users with id => Staking Time
  mapping (uint256 => uint256) private _tokenStakingStartTime;
  
  // mapping for users with id => End Time
  mapping (uint256 => uint256) private _tokenStakingEndTime;

  // mapping for users with id => Tokens 
  mapping (uint256 => uint256) private _usersTokens;
  
  // mapping for users with id => Status
  mapping (uint256 => bool) private _TokenTransactionstatus;    
  
  // mapping to keep track of final withdraw value of staked token
  mapping(uint256=>uint256) private _finalTokenStakeWithdraw;
  
  // mapping to keep track total number of staking days
  mapping(uint256=>uint256) private _tokenTotalDays;
  
  // variable to keep count of Token Staking
  uint256 private _tokenStakingCount = 0;
  
  // variable to keep track on reward added by owner
  uint256 private _ownerTokenAllowance = 0;

  // variable for token time management
  uint256 private _tokentime;
  
  // variable for token staking pause and unpause mechanism
  bool public tokenPaused = false;
  
  // variable for total Token staked by user
  uint256 public totalStakedToken = 0;
  
  // variable for total stake token in contract
  uint256 public totalTokenStakesInContract = 0;
  
  // variable for total stake token in a pool
  uint256 public totalStakedTokenInSerenityPool = 0;
  
  // variable for total stake token in a pool
  uint256 public totalStakedTokenInEquilibriumPool = 0;
  
  // variable for total stake token in a pool
  uint256 public totalStakedTokenInTranquillityPool = 0;
  
  // modifier to check the user for staking || Re-enterance Guard
  modifier tokenStakeCheck(uint256 tokens, uint256 timePeriod){
    require(tokens > 0, "Invalid Token Amount, Please Try Again!!! ");
    require(timePeriod == PERIOD_SERENITY || timePeriod == PERIOD_EQUILIBRIUM || timePeriod == PERIOD_TRANQUILLITY, "Enter the Valid Time Period and Try Again !!!");
    _;
  }
  
  /*
  * ------------------------------------------------------------------------------------------------------------------------------
  * Functions for Token Staking Functionality
  * ------------------------------------------------------------------------------------------------------------------------------
  */

  // function to performs staking for user tokens for a specific period of time
  function stakeToken(uint256 tokens, uint256 time) public tokenStakeCheck(tokens, time) returns(bool){
    require(tokenPaused == false, "Staking is Paused, Please try after staking get unpaused!!!");
    if(time == PERIOD_SERENITY){
        require(totalStakedTokenInSerenityPool.add(tokens) <= TOKEN_POOL_CAP, "Serenity Pool Limit Reached");
        _tokentime = now + (time * 1 days);
        _tokenStakingCount = _tokenStakingCount +1;
        _tokenTotalDays[_tokenStakingCount] = time;
        _tokenStakingAddress[_tokenStakingCount] = msg.sender;
        _tokenStakingId[msg.sender].push(_tokenStakingCount);
        _tokenStakingEndTime[_tokenStakingCount] = _tokentime;
        _tokenStakingStartTime[_tokenStakingCount] = now;
        _usersTokens[_tokenStakingCount] = tokens;
        _TokenTransactionstatus[_tokenStakingCount] = false;
        totalStakedToken = totalStakedToken.add(tokens);
        totalTokenStakesInContract = totalTokenStakesInContract.add(tokens);
        totalStakedTokenInSerenityPool = totalStakedTokenInSerenityPool.add(tokens);
        itoken.transferFrom(msg.sender, address(this), tokens);
    } else if (time == PERIOD_EQUILIBRIUM) {
        require(totalStakedTokenInEquilibriumPool.add(tokens) <= TOKEN_POOL_CAP, "Equilibrium Pool Limit Reached");
        _tokentime = now + (time * 1 days);
        _tokenStakingCount = _tokenStakingCount +1;
        _tokenTotalDays[_tokenStakingCount] = time;
        _tokenStakingAddress[_tokenStakingCount] = msg.sender;
        _tokenStakingId[msg.sender].push(_tokenStakingCount);
        _tokenStakingEndTime[_tokenStakingCount] = _tokentime;
        _tokenStakingStartTime[_tokenStakingCount] = now;
        _usersTokens[_tokenStakingCount] = tokens;
        _TokenTransactionstatus[_tokenStakingCount] = false;
        totalStakedToken = totalStakedToken.add(tokens);
        totalTokenStakesInContract = totalTokenStakesInContract.add(tokens);
        totalStakedTokenInEquilibriumPool = totalStakedTokenInEquilibriumPool.add(tokens);
        itoken.transferFrom(msg.sender, address(this), tokens);
    } else if(time == PERIOD_TRANQUILLITY) {
        require(totalStakedTokenInTranquillityPool.add(tokens) <= TOKEN_POOL_CAP, "Tranquillity Pool Limit Reached");
        _tokentime = now + (time * 1 days);
        _tokenStakingCount = _tokenStakingCount +1;
        _tokenTotalDays[_tokenStakingCount] = time;
        _tokenStakingAddress[_tokenStakingCount] = msg.sender;
        _tokenStakingId[msg.sender].push(_tokenStakingCount);
        _tokenStakingEndTime[_tokenStakingCount] = _tokentime;
        _tokenStakingStartTime[_tokenStakingCount] = now;
        _usersTokens[_tokenStakingCount] = tokens;
        _TokenTransactionstatus[_tokenStakingCount] = false;
        totalStakedToken = totalStakedToken.add(tokens);
        totalTokenStakesInContract = totalTokenStakesInContract.add(tokens);
        totalStakedTokenInTranquillityPool = totalStakedTokenInTranquillityPool.add(tokens);
        itoken.transferFrom(msg.sender, address(this), tokens);
    } else {
        return false;
      }
    return true;
  }

  // function to get staking count for token
  function getTokenStakingCount() public view returns(uint256){
    return _tokenStakingCount;
  }
  
  // function to get total Staked tokens
  function getTotalStakedToken() public view returns(uint256){
    return totalStakedToken;
  }
  
  // function to calculate reward for the message sender for token
  function getTokenRewardDetailsByStakingId(uint256 id) public view returns(uint256){
    if(_tokenTotalDays[id] == PERIOD_SERENITY) {
        return (_usersTokens[id]*TOKEN_REWARD_PERCENT_SERENITY/100000000);
    } else if(_tokenTotalDays[id] == PERIOD_EQUILIBRIUM) {
               return (_usersTokens[id]*TOKEN_REWARD_PERCENT_EQUILIBRIUM/100000000);
      } else if(_tokenTotalDays[id] == PERIOD_TRANQUILLITY) { 
                 return (_usersTokens[id]*TOKEN_REWARD_PERCENT_TRANQUILLITY/100000000);
        } else{
              return 0;
          }
  }

  // function to calculate penalty for the message sender for token
  function getTokenPenaltyDetailByStakingId(uint256 id) public view returns(uint256){
    if(_tokenStakingEndTime[id] > now){
        if(_tokenTotalDays[id]==PERIOD_SERENITY){
            return (_usersTokens[id]*TOKEN_PENALTY_PERCENT_SERENITY/100000000);
        } else if(_tokenTotalDays[id] == PERIOD_EQUILIBRIUM) {
              return (_usersTokens[id]*TOKEN_PENALTY_PERCENT_EQUILIBRIUM/100000000);
          } else if(_tokenTotalDays[id] == PERIOD_TRANQUILLITY) { 
                return (_usersTokens[id]*TOKEN_PENALTY_PERCENT_TRANQUILLITY/100000000);
            } else {
                return 0;
              }
    } else{
       return 0;
     }
  }
 
  // function to withdraw staked tokens
  function withdrawStakedTokens(uint256 stakingId) public returns(bool) {
    require(_tokenStakingAddress[stakingId] == msg.sender,"No staked token found on this address and ID");
    require(_TokenTransactionstatus[stakingId] != true,"Either tokens are already withdrawn or blocked by admin");
    if(_tokenTotalDays[stakingId] == PERIOD_SERENITY){
          require(now >= _tokenStakingStartTime[stakingId] + WITHDRAW_TIME_SERENITY, "Unable to Withdraw Staked token before 45 days of staking start time, Please Try Again Later!!!");
          _TokenTransactionstatus[stakingId] = true;
          if(now >= _tokenStakingEndTime[stakingId]){
              _finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenRewardDetailsByStakingId(stakingId));
              itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
              totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
              totalStakedTokenInSerenityPool = totalStakedTokenInSerenityPool.sub(_usersTokens[stakingId]);
              _ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenRewardDetailsByStakingId(stakingId));
          } else {
              _finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenPenaltyDetailByStakingId(stakingId));
              itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
              totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
              totalStakedTokenInSerenityPool = totalStakedTokenInSerenityPool.sub(_usersTokens[stakingId]);
              _ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenPenaltyDetailByStakingId(stakingId));
            }
    } else if(_tokenTotalDays[stakingId] == PERIOD_EQUILIBRIUM){
          require(now >= _tokenStakingStartTime[stakingId] + WITHDRAW_TIME_EQUILIBRIUM, "Unable to Withdraw Staked token before 90 days of staking start time, Please Try Again Later!!!");
          _TokenTransactionstatus[stakingId] = true;
          if(now >= _tokenStakingEndTime[stakingId]){
              _finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenRewardDetailsByStakingId(stakingId));
              itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
              totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
              totalStakedTokenInEquilibriumPool = totalStakedTokenInEquilibriumPool.sub(_usersTokens[stakingId]);
              _ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenRewardDetailsByStakingId(stakingId));
          } else {
              _finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenPenaltyDetailByStakingId(stakingId));
              itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
              totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
              totalStakedTokenInEquilibriumPool = totalStakedTokenInEquilibriumPool.sub(_usersTokens[stakingId]);
              _ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenPenaltyDetailByStakingId(stakingId));
            }
    } else if(_tokenTotalDays[stakingId] == PERIOD_TRANQUILLITY){
          require(now >= _tokenStakingStartTime[stakingId] + WITHDRAW_TIME_TRANQUILLITY, "Unable to Withdraw Staked token before 135 days of staking start time, Please Try Again Later!!!");
          _TokenTransactionstatus[stakingId] = true;
          if(now >= _tokenStakingEndTime[stakingId]){
              _finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenRewardDetailsByStakingId(stakingId));
              itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
              totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
              totalStakedTokenInTranquillityPool = totalStakedTokenInTranquillityPool.sub(_usersTokens[stakingId]);
              _ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenRewardDetailsByStakingId(stakingId));
          } else {
              _finalTokenStakeWithdraw[stakingId] = _usersTokens[stakingId].add(getTokenPenaltyDetailByStakingId(stakingId));
              itoken.transfer(msg.sender,_finalTokenStakeWithdraw[stakingId]);
              totalTokenStakesInContract = totalTokenStakesInContract.sub(_usersTokens[stakingId]);
              totalStakedTokenInTranquillityPool = totalStakedTokenInTranquillityPool.sub(_usersTokens[stakingId]);
              _ownerTokenAllowance = _ownerTokenAllowance.sub(getTokenPenaltyDetailByStakingId(stakingId));
            }
    } else {
        return false;
      }
    return true;
  }
  
  // function to get Final Withdraw Staked value for token
  function getFinalTokenStakeWithdraw(uint256 id) public view returns(uint256){
    return _finalTokenStakeWithdraw[id];
  }
  
  // function to get total token stake in contract
  function getTotalTokenStakesInContract() public view returns(uint256){
      return totalTokenStakesInContract;
  }
  
  /*
  * -------------------------------------------------------------------------------------------------------------------------------
  * Get Functions for Stake Token Functionality
  * -------------------------------------------------------------------------------------------------------------------------------
  */

  // function to get Token Staking address by id
  function getTokenStakingAddressById(uint256 id) external view returns (address){
    require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
    return _tokenStakingAddress[id];
  }
  
  // function to get Token staking id by address
  function getTokenStakingIdByAddress(address add) external view returns(uint256[]){
    require(add != address(0),"Invalid Address, Pleae Try Again!!!");
    return _tokenStakingId[add];
  }
  
  // function to get Token Staking Starting time by id
  function getTokenStakingStartTimeById(uint256 id) external view returns(uint256){
    require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
    return _tokenStakingStartTime[id];
  }
  
  // function to get Token Staking Ending time by id
  function getTokenStakingEndTimeById(uint256 id) external view returns(uint256){
    require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
    return _tokenStakingEndTime[id];
  }
  
  // function to get Token Staking Total Days by Id
  function getTokenStakingTotalDaysById(uint256 id) external view returns(uint256){
    require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
    return _tokenTotalDays[id];
  }

  // function to get Staking tokens by id
  function getStakingTokenById(uint256 id) external view returns(uint256){
    require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
    return _usersTokens[id];
  }

  // function to get Token lockstatus by id
  function getTokenLockStatus(uint256 id) external view returns(bool){
    require(id <= _tokenStakingCount,"Unable to reterive data on specified id, Please try again!!");
    return _TokenTransactionstatus[id];
  }

}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getTokenStakingStartTimeById","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"stakingId","type":"uint256"}],"name":"withdrawStakedTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"WITHDRAW_TIME_SERENITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"uint256"}],"name":"addTokenReward","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_PENALTY_PERCENT_SERENITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getStakingTokenById","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenStakingCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_PENALTY_PERCENT_TRANQUILLITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalStakedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenContractAddress","type":"address"}],"name":"setContractAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalTokenStakesInContract","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getTokenStakingEndTimeById","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getTokenLockStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERIOD_SERENITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"WITHDRAW_TIME_EQUILIBRIUM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_PENALTY_PERCENT_EQUILIBRIUM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getFinalTokenStakeWithdraw","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStakedTokenInTranquillityPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStakedTokenInSerenityPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pauseTokenStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getTokenPenaltyDetailByStakingId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getTokenRewardDetailsByStakingId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpauseTokenStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalTokenStakesInContract","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERIOD_TRANQUILLITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getTokenStakingAddressById","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStakedTokenInEquilibriumPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getTokenStakingTotalDaysById","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERIOD_EQUILIBRIUM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_POOL_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"uint256"}],"name":"withdrawAddedTokenReward","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"add","type":"address"}],"name":"getTokenStakingIdByAddress","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"WITHDRAW_TIME_TRANQUILLITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStakedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_REWARD_PERCENT_TRANQUILLITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_REWARD_PERCENT_SERENITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_REWARD_PERCENT_EQUILIBRIUM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getowner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"}],"name":"stakeToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"}]

60806040526000600b819055600c819055600e805460ff19169055600f81905560108190556011819055601281905560135534801561003d57600080fd5b5060008054600160a060020a031916331790556123bc8061005f6000396000f3006080604052600436106102035763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663032f3b0981146102085780630a57336a146102325780630afd19211461025e5780632841a1431461027357806329bfd11f1461028b578063332a35d2146102a05780633e4ffb16146102b857806341521e33146102cd578063423eea07146102e2578063477bddaa146102f757806350ff92a91461031857806354439ad01461032d5780635673017a14610345578063572b42631461035d5780635d0d1f42146103725780635d5b8cab1461038757806360c2a3481461039c57806364d8c6c1146103b4578063731d2912146103c957806384698190146103de5780638586ca00146103f5578063863997b21461040d57806386c75e74146104255780638cc15d4f1461043a578063906459791461044f57806397e66ba2146104645780639d6c890d14610479578063a4cb6727146104ad578063b248c812146104c2578063b2a56b8f146104da578063b802e791146104ef578063b8c1fc3314610504578063b9f7549b1461051c578063c8a840af1461058d578063cb6d8ee6146105a2578063cc40c36d146105b7578063cf3e324c146105cc578063f2fde38b146105e1578063fa0bd08e14610602578063fa8eb78214610617578063fe0174bd1461062c578063ffab4bd914610641575b600080fd5b34801561021457600080fd5b5061022060043561065c565b60408051918252519081900360200190f35b34801561023e57600080fd5b5061024a6004356106d1565b604080519115158252519081900360200190f35b34801561026a57600080fd5b506102206110d7565b34801561027f57600080fd5b5061024a6004356110de565b34801561029757600080fd5b506102206111e7565b3480156102ac57600080fd5b506102206004356111ee565b3480156102c457600080fd5b50610220611260565b3480156102d957600080fd5b50610220611266565b3480156102ee57600080fd5b5061022061126d565b34801561030357600080fd5b5061024a600160a060020a0360043516611273565b34801561032457600080fd5b50610220611307565b34801561033957600080fd5b5061022060043561130d565b34801561035157600080fd5b5061024a60043561137f565b34801561036957600080fd5b506102206113f4565b34801561037e57600080fd5b506102206113f9565b34801561039357600080fd5b50610220611400565b3480156103a857600080fd5b50610220600435611407565b3480156103c057600080fd5b50610220611419565b3480156103d557600080fd5b5061022061141f565b3480156103ea57600080fd5b506103f3611425565b005b34801561040157600080fd5b506102206004356114bd565b34801561041957600080fd5b5061022060043561157a565b34801561043157600080fd5b5061024a61161e565b34801561044657600080fd5b506103f3611627565b34801561045b57600080fd5b506102206116bc565b34801561047057600080fd5b506102206116c2565b34801561048557600080fd5b506104916004356116c8565b60408051600160a060020a039092168252519081900360200190f35b3480156104b957600080fd5b50610220611743565b3480156104ce57600080fd5b50610220600435611749565b3480156104e657600080fd5b506102206117bb565b3480156104fb57600080fd5b506102206117c0565b34801561051057600080fd5b5061024a6004356117cf565b34801561052857600080fd5b5061053d600160a060020a036004351661191d565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610579578181015183820152602001610561565b505050509050019250505060405180910390f35b34801561059957600080fd5b50610220611a0f565b3480156105ae57600080fd5b50610220611a16565b3480156105c357600080fd5b50610220611a1c565b3480156105d857600080fd5b50610220611a24565b3480156105ed57600080fd5b5061024a600160a060020a0360043516611a2b565b34801561060e57600080fd5b50610220611abf565b34801561062357600080fd5b50610220611ac6565b34801561063857600080fd5b50610491611acc565b34801561064d57600080fd5b5061024a600435602435611adb565b600b546000908211156106bb576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b506000818152600560205260409020545b919050565b600081815260036020526040812054600160a060020a03163314610765576040805160e560020a62461bcd02815260206004820152602c60248201527f4e6f207374616b656420746f6b656e20666f756e64206f6e207468697320616460448201527f647265737320616e642049440000000000000000000000000000000000000000606482015290519081900360840190fd5b60008281526008602052604090205460ff161515600114156107f7576040805160e560020a62461bcd02815260206004820152603760248201527f45697468657220746f6b656e732061726520616c72656164792077697468647260448201527f61776e206f7220626c6f636b65642062792061646d696e000000000000000000606482015290519081900360840190fd5b6000828152600a6020526040902054605a1415610b0e57600082815260056020526040902054623b5380014210156108c5576040805160e560020a62461bcd02815260206004820152605f60248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f72652034352064617973206f66207374616b696e672073746172742060648201527f74696d652c20506c656173652054727920416761696e204c6174657221212100608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610a13576109166108fb8361157a565b6000848152600760205260409020549063ffffffff61223916565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b15801561097c57600080fd5b505af1158015610990573d6000803e3d6000fd5b505050506040513d60208110156109a657600080fd5b50506000828152600760205260409020546010546109c99163ffffffff61229d16565b6010556000828152600760205260409020546011546109ed9163ffffffff61229d16565b601155610a0b6109fc8361157a565b600c549063ffffffff61229d16565b600c55610b09565b610a1f6108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b505050506040513d6020811015610aaf57600080fd5b5050600082815260076020526040902054601054610ad29163ffffffff61229d16565b601055600082815260076020526040902054601154610af69163ffffffff61229d16565b601155610b056109fc836114bd565b600c555b6110cf565b6000828152600a602052604090205460b41415610dea576000828152600560205260409020546276a70001421015610bdc576040805160e560020a62461bcd02815260206004820152605f60248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f72652039302064617973206f66207374616b696e672073746172742060648201527f74696d652c20506c656173652054727920416761696e204c6174657221212100608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610cf857610c126108fb8361157a565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610c7857600080fd5b505af1158015610c8c573d6000803e3d6000fd5b505050506040513d6020811015610ca257600080fd5b5050600082815260076020526040902054601054610cc59163ffffffff61229d16565b601055600082815260076020526040902054601254610ce99163ffffffff61229d16565b601255610a0b6109fc8361157a565b610d046108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b505050506040513d6020811015610d9457600080fd5b5050600082815260076020526040902054601054610db79163ffffffff61229d16565b601055600082815260076020526040902054601254610ddb9163ffffffff61229d16565b601255610b056109fc836114bd565b6000828152600a602052604090205461010e14156110c75760008281526005602052604090205462b1fa8001421015610eb9576040805160e560020a62461bcd02815260206004820152606060248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f7265203133352064617973206f66207374616b696e6720737461727460648201527f2074696d652c20506c656173652054727920416761696e204c61746572212121608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610fd557610eef6108fb8361157a565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610f5557600080fd5b505af1158015610f69573d6000803e3d6000fd5b505050506040513d6020811015610f7f57600080fd5b5050600082815260076020526040902054601054610fa29163ffffffff61229d16565b601055600082815260076020526040902054601354610fc69163ffffffff61229d16565b601355610a0b6109fc8361157a565b610fe16108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b505050506040513d602081101561107157600080fd5b50506000828152600760205260409020546010546110949163ffffffff61229d16565b6010556000828152600760205260409020546013546110b89163ffffffff61229d16565b601355610b056109fc836114bd565b5060006106cc565b506001919050565b623b538081565b60006110e86122ff565b1515611140576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600c54611153908363ffffffff61223916565b600c556002546040805160e060020a6323b872dd028152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050506040513d60208110156111dd57600080fd5b5060019392505050565b6224cb6881565b600b5460009082111561124d576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526007602052604090205490565b600b5490565b62e0305281565b600f5490565b600061127d6122ff565b15156112d5576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b5060028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60105490565b600b5460009082111561136c576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526006602052604090205490565b600b546000908211156113de576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526008602052604090205460ff1690565b605a81565b6276a70081565b626e71a481565b60009081526009602052604090205490565b60135481565b60115481565b61142d6122ff565b1515611485576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600e805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000818152600660205260408120544210156110c7576000828152600a6020526040902054605a141561150d576000828152600760205260409020546305f5e100906224cb68025b0490506106cc565b6000828152600a602052604090205460b41415611543576000828152600760205260409020546305f5e10090626e71a402611505565b6000828152600a602052604090205461010e14156110c7576000828152600760205260409020546305f5e1009062e0305202611505565b6000818152600a6020526040812054605a14156115b0576000828152600760205260409020546305f5e10090623641df02611505565b6000828152600a602052604090205460b414156115e6576000828152600760205260409020546305f5e1009062a6671502611505565b6000828152600a602052604090205461010e14156110c7576000828152600760205260409020546305f5e1009063018ce1c502611505565b600e5460ff1681565b61162f6122ff565b1515611687576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600e805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b60105481565b61010e81565b600b54600090821115611727576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b50600090815260036020526040902054600160a060020a031690565b60125481565b600b546000908211156117a8576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b506000908152600a602052604090205490565b60b481565b6a14adf4b7320334b900000081565b60006117d96122ff565b1515611831576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600c5482106118b0576040805160e560020a62461bcd02815260206004820152602a60248201527f56616c7565206973206e6f74206665617369626c652c20506c6561736520547260448201527f7920416761696e21212100000000000000000000000000000000000000000000606482015290519081900360840190fd5b600c546118c3908363ffffffff61229d16565b600c556002546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156111b357600080fd5b6060600160a060020a03821615156119a5576040805160e560020a62461bcd02815260206004820152602360248201527f496e76616c696420416464726573732c20506c6561652054727920416761696e60448201527f2121210000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03821660009081526004602090815260409182902080548351818402810184019094528084529091830182828015611a0357602002820191906000526020600020905b8154815260200190600101908083116119ef575b50505050509050919050565b62b1fa8081565b600f5481565b63018ce1c581565b623641df81565b6000611a356122ff565b1515611a8d576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b62a6671581565b600c5490565b600054600160a060020a031690565b60008282828211611b5c576040805160e560020a62461bcd02815260206004820152602a60248201527f496e76616c696420546f6b656e20416d6f756e742c20506c656173652054727960448201527f20416761696e2121212000000000000000000000000000000000000000000000606482015290519081900360840190fd5b605a811480611b6b575060b481145b80611b77575061010e81145b1515611bf3576040805160e560020a62461bcd02815260206004820152602d60248201527f456e746572207468652056616c69642054696d6520506572696f6420616e642060448201527f54727920416761696e2021212100000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff1615611c74576040805160e560020a62461bcd02815260206004820152603b60248201527f5374616b696e67206973205061757365642c20506c656173652074727920616660448201527f746572207374616b696e672067657420756e7061757365642121210000000000606482015290519081900360840190fd5b605a841415611e7a576011546a14adf4b7320334b900000090611c9d908763ffffffff61223916565b1115611cf3576040805160e560020a62461bcd02815260206004820152601b60248201527f536572656e69747920506f6f6c204c696d697420526561636865640000000000604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54611dbc908663ffffffff61223916565b600f55601054611dd2908663ffffffff61223916565b601055601154611de8908663ffffffff61223916565b6011556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b505050506040513d6020811015611e7257600080fd5b5061222c9050565b60b484141561204e576012546a14adf4b7320334b900000090611ea3908763ffffffff61223916565b1115611ef9576040805160e560020a62461bcd02815260206004820152601e60248201527f457175696c69627269756d20506f6f6c204c696d697420526561636865640000604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54611fc2908663ffffffff61223916565b600f55601054611fd8908663ffffffff61223916565b601055601254611fee908663ffffffff61223916565b6012556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b61010e841415612223576013546a14adf4b7320334b900000090612078908763ffffffff61223916565b11156120ce576040805160e560020a62461bcd02815260206004820152601f60248201527f5472616e7175696c6c69747920506f6f6c204c696d6974205265616368656400604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54612197908663ffffffff61223916565b600f556010546121ad908663ffffffff61223916565b6010556013546121c3908663ffffffff61223916565b6013556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b60009250612231565b600192505b505092915050565b600082820183811015612296576040805160e560020a62461bcd02815260206004820152601d60248201527f43616c63756c6174696f6e206572726f7220696e206164646974696f6e000000604482015290519081900360640190fd5b9392505050565b600080838311156122f8576040805160e560020a62461bcd02815260206004820181905260248201527f43616c63756c6174696f6e206572726f7220696e207375627472616374696f6e604482015290519081900360640190fd5b5050900390565b600054600160a060020a03163314905600556e61626c6520746f2072657465726976652064617461206f6e207370656369666965642069642c20506c656173652074727920616761696e21210000000000596f7520617265206e6f742061757468656e74696361746520746f206d616b652074686973207472616e73666572000000000000000000000000000000000000a165627a7a72305820ac4fe51b8de9da5600f2a4c4deb4cd209f8a2fdcc0fa995a26fe626fb3ab0e5d0029

Deployed Bytecode

0x6080604052600436106102035763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663032f3b0981146102085780630a57336a146102325780630afd19211461025e5780632841a1431461027357806329bfd11f1461028b578063332a35d2146102a05780633e4ffb16146102b857806341521e33146102cd578063423eea07146102e2578063477bddaa146102f757806350ff92a91461031857806354439ad01461032d5780635673017a14610345578063572b42631461035d5780635d0d1f42146103725780635d5b8cab1461038757806360c2a3481461039c57806364d8c6c1146103b4578063731d2912146103c957806384698190146103de5780638586ca00146103f5578063863997b21461040d57806386c75e74146104255780638cc15d4f1461043a578063906459791461044f57806397e66ba2146104645780639d6c890d14610479578063a4cb6727146104ad578063b248c812146104c2578063b2a56b8f146104da578063b802e791146104ef578063b8c1fc3314610504578063b9f7549b1461051c578063c8a840af1461058d578063cb6d8ee6146105a2578063cc40c36d146105b7578063cf3e324c146105cc578063f2fde38b146105e1578063fa0bd08e14610602578063fa8eb78214610617578063fe0174bd1461062c578063ffab4bd914610641575b600080fd5b34801561021457600080fd5b5061022060043561065c565b60408051918252519081900360200190f35b34801561023e57600080fd5b5061024a6004356106d1565b604080519115158252519081900360200190f35b34801561026a57600080fd5b506102206110d7565b34801561027f57600080fd5b5061024a6004356110de565b34801561029757600080fd5b506102206111e7565b3480156102ac57600080fd5b506102206004356111ee565b3480156102c457600080fd5b50610220611260565b3480156102d957600080fd5b50610220611266565b3480156102ee57600080fd5b5061022061126d565b34801561030357600080fd5b5061024a600160a060020a0360043516611273565b34801561032457600080fd5b50610220611307565b34801561033957600080fd5b5061022060043561130d565b34801561035157600080fd5b5061024a60043561137f565b34801561036957600080fd5b506102206113f4565b34801561037e57600080fd5b506102206113f9565b34801561039357600080fd5b50610220611400565b3480156103a857600080fd5b50610220600435611407565b3480156103c057600080fd5b50610220611419565b3480156103d557600080fd5b5061022061141f565b3480156103ea57600080fd5b506103f3611425565b005b34801561040157600080fd5b506102206004356114bd565b34801561041957600080fd5b5061022060043561157a565b34801561043157600080fd5b5061024a61161e565b34801561044657600080fd5b506103f3611627565b34801561045b57600080fd5b506102206116bc565b34801561047057600080fd5b506102206116c2565b34801561048557600080fd5b506104916004356116c8565b60408051600160a060020a039092168252519081900360200190f35b3480156104b957600080fd5b50610220611743565b3480156104ce57600080fd5b50610220600435611749565b3480156104e657600080fd5b506102206117bb565b3480156104fb57600080fd5b506102206117c0565b34801561051057600080fd5b5061024a6004356117cf565b34801561052857600080fd5b5061053d600160a060020a036004351661191d565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610579578181015183820152602001610561565b505050509050019250505060405180910390f35b34801561059957600080fd5b50610220611a0f565b3480156105ae57600080fd5b50610220611a16565b3480156105c357600080fd5b50610220611a1c565b3480156105d857600080fd5b50610220611a24565b3480156105ed57600080fd5b5061024a600160a060020a0360043516611a2b565b34801561060e57600080fd5b50610220611abf565b34801561062357600080fd5b50610220611ac6565b34801561063857600080fd5b50610491611acc565b34801561064d57600080fd5b5061024a600435602435611adb565b600b546000908211156106bb576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b506000818152600560205260409020545b919050565b600081815260036020526040812054600160a060020a03163314610765576040805160e560020a62461bcd02815260206004820152602c60248201527f4e6f207374616b656420746f6b656e20666f756e64206f6e207468697320616460448201527f647265737320616e642049440000000000000000000000000000000000000000606482015290519081900360840190fd5b60008281526008602052604090205460ff161515600114156107f7576040805160e560020a62461bcd02815260206004820152603760248201527f45697468657220746f6b656e732061726520616c72656164792077697468647260448201527f61776e206f7220626c6f636b65642062792061646d696e000000000000000000606482015290519081900360840190fd5b6000828152600a6020526040902054605a1415610b0e57600082815260056020526040902054623b5380014210156108c5576040805160e560020a62461bcd02815260206004820152605f60248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f72652034352064617973206f66207374616b696e672073746172742060648201527f74696d652c20506c656173652054727920416761696e204c6174657221212100608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610a13576109166108fb8361157a565b6000848152600760205260409020549063ffffffff61223916565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b15801561097c57600080fd5b505af1158015610990573d6000803e3d6000fd5b505050506040513d60208110156109a657600080fd5b50506000828152600760205260409020546010546109c99163ffffffff61229d16565b6010556000828152600760205260409020546011546109ed9163ffffffff61229d16565b601155610a0b6109fc8361157a565b600c549063ffffffff61229d16565b600c55610b09565b610a1f6108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b505050506040513d6020811015610aaf57600080fd5b5050600082815260076020526040902054601054610ad29163ffffffff61229d16565b601055600082815260076020526040902054601154610af69163ffffffff61229d16565b601155610b056109fc836114bd565b600c555b6110cf565b6000828152600a602052604090205460b41415610dea576000828152600560205260409020546276a70001421015610bdc576040805160e560020a62461bcd02815260206004820152605f60248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f72652039302064617973206f66207374616b696e672073746172742060648201527f74696d652c20506c656173652054727920416761696e204c6174657221212100608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610cf857610c126108fb8361157a565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610c7857600080fd5b505af1158015610c8c573d6000803e3d6000fd5b505050506040513d6020811015610ca257600080fd5b5050600082815260076020526040902054601054610cc59163ffffffff61229d16565b601055600082815260076020526040902054601254610ce99163ffffffff61229d16565b601255610a0b6109fc8361157a565b610d046108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610d6a57600080fd5b505af1158015610d7e573d6000803e3d6000fd5b505050506040513d6020811015610d9457600080fd5b5050600082815260076020526040902054601054610db79163ffffffff61229d16565b601055600082815260076020526040902054601254610ddb9163ffffffff61229d16565b601255610b056109fc836114bd565b6000828152600a602052604090205461010e14156110c75760008281526005602052604090205462b1fa8001421015610eb9576040805160e560020a62461bcd02815260206004820152606060248201527f556e61626c6520746f205769746864726177205374616b656420746f6b656e2060448201527f6265666f7265203133352064617973206f66207374616b696e6720737461727460648201527f2074696d652c20506c656173652054727920416761696e204c61746572212121608482015290519081900360a40190fd5b6000828152600860209081526040808320805460ff1916600117905560069091529020544210610fd557610eef6108fb8361157a565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015610f5557600080fd5b505af1158015610f69573d6000803e3d6000fd5b505050506040513d6020811015610f7f57600080fd5b5050600082815260076020526040902054601054610fa29163ffffffff61229d16565b601055600082815260076020526040902054601354610fc69163ffffffff61229d16565b601355610a0b6109fc8361157a565b610fe16108fb836114bd565b6000838152600960209081526040808320849055600254815160e060020a63a9059cbb02815233600482015260248101959095529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b505050506040513d602081101561107157600080fd5b50506000828152600760205260409020546010546110949163ffffffff61229d16565b6010556000828152600760205260409020546013546110b89163ffffffff61229d16565b601355610b056109fc836114bd565b5060006106cc565b506001919050565b623b538081565b60006110e86122ff565b1515611140576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600c54611153908363ffffffff61223916565b600c556002546040805160e060020a6323b872dd028152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050506040513d60208110156111dd57600080fd5b5060019392505050565b6224cb6881565b600b5460009082111561124d576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526007602052604090205490565b600b5490565b62e0305281565b600f5490565b600061127d6122ff565b15156112d5576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b5060028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60105490565b600b5460009082111561136c576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526006602052604090205490565b600b546000908211156113de576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b5060009081526008602052604090205460ff1690565b605a81565b6276a70081565b626e71a481565b60009081526009602052604090205490565b60135481565b60115481565b61142d6122ff565b1515611485576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600e805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000818152600660205260408120544210156110c7576000828152600a6020526040902054605a141561150d576000828152600760205260409020546305f5e100906224cb68025b0490506106cc565b6000828152600a602052604090205460b41415611543576000828152600760205260409020546305f5e10090626e71a402611505565b6000828152600a602052604090205461010e14156110c7576000828152600760205260409020546305f5e1009062e0305202611505565b6000818152600a6020526040812054605a14156115b0576000828152600760205260409020546305f5e10090623641df02611505565b6000828152600a602052604090205460b414156115e6576000828152600760205260409020546305f5e1009062a6671502611505565b6000828152600a602052604090205461010e14156110c7576000828152600760205260409020546305f5e1009063018ce1c502611505565b600e5460ff1681565b61162f6122ff565b1515611687576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600e805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b60105481565b61010e81565b600b54600090821115611727576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b50600090815260036020526040902054600160a060020a031690565b60125481565b600b546000908211156117a8576040805160e560020a62461bcd02815260206004820152603b60248201526000805160206123118339815191526044820152600080516020612331833981519152606482015290519081900360840190fd5b506000908152600a602052604090205490565b60b481565b6a14adf4b7320334b900000081565b60006117d96122ff565b1515611831576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b600c5482106118b0576040805160e560020a62461bcd02815260206004820152602a60248201527f56616c7565206973206e6f74206665617369626c652c20506c6561736520547260448201527f7920416761696e21212100000000000000000000000000000000000000000000606482015290519081900360840190fd5b600c546118c3908363ffffffff61229d16565b600c556002546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156111b357600080fd5b6060600160a060020a03821615156119a5576040805160e560020a62461bcd02815260206004820152602360248201527f496e76616c696420416464726573732c20506c6561652054727920416761696e60448201527f2121210000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03821660009081526004602090815260409182902080548351818402810184019094528084529091830182828015611a0357602002820191906000526020600020905b8154815260200190600101908083116119ef575b50505050509050919050565b62b1fa8081565b600f5481565b63018ce1c581565b623641df81565b6000611a356122ff565b1515611a8d576040805160e560020a62461bcd02815260206004820152602e60248201526000805160206123518339815191526044820152600080516020612371833981519152606482015290519081900360840190fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b62a6671581565b600c5490565b600054600160a060020a031690565b60008282828211611b5c576040805160e560020a62461bcd02815260206004820152602a60248201527f496e76616c696420546f6b656e20416d6f756e742c20506c656173652054727960448201527f20416761696e2121212000000000000000000000000000000000000000000000606482015290519081900360840190fd5b605a811480611b6b575060b481145b80611b77575061010e81145b1515611bf3576040805160e560020a62461bcd02815260206004820152602d60248201527f456e746572207468652056616c69642054696d6520506572696f6420616e642060448201527f54727920416761696e2021212100000000000000000000000000000000000000606482015290519081900360840190fd5b600e5460ff1615611c74576040805160e560020a62461bcd02815260206004820152603b60248201527f5374616b696e67206973205061757365642c20506c656173652074727920616660448201527f746572207374616b696e672067657420756e7061757365642121210000000000606482015290519081900360840190fd5b605a841415611e7a576011546a14adf4b7320334b900000090611c9d908763ffffffff61223916565b1115611cf3576040805160e560020a62461bcd02815260206004820152601b60248201527f536572656e69747920506f6f6c204c696d697420526561636865640000000000604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54611dbc908663ffffffff61223916565b600f55601054611dd2908663ffffffff61223916565b601055601154611de8908663ffffffff61223916565b6011556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b505050506040513d6020811015611e7257600080fd5b5061222c9050565b60b484141561204e576012546a14adf4b7320334b900000090611ea3908763ffffffff61223916565b1115611ef9576040805160e560020a62461bcd02815260206004820152601e60248201527f457175696c69627269756d20506f6f6c204c696d697420526561636865640000604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54611fc2908663ffffffff61223916565b600f55601054611fd8908663ffffffff61223916565b601055601254611fee908663ffffffff61223916565b6012556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b61010e841415612223576013546a14adf4b7320334b900000090612078908763ffffffff61223916565b11156120ce576040805160e560020a62461bcd02815260206004820152601f60248201527f5472616e7175696c6c69747920506f6f6c204c696d6974205265616368656400604482015290519081900360640190fd5b426201518085028101600d908155600b805460019081018083556000908152600a602090815260408083208b90558454835260038252808320805473ffffffffffffffffffffffffffffffffffffffff19163390811790915583526004825280832085548154958601825590845282842090940193909355935483548252600685528282205582548152600584528181209490945581548452600783528084208990559054835260089091529020805460ff19169055600f54612197908663ffffffff61223916565b600f556010546121ad908663ffffffff61223916565b6010556013546121c3908663ffffffff61223916565b6013556002546040805160e060020a6323b872dd028152336004820152306024820152604481018890529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015611e4857600080fd5b60009250612231565b600192505b505092915050565b600082820183811015612296576040805160e560020a62461bcd02815260206004820152601d60248201527f43616c63756c6174696f6e206572726f7220696e206164646974696f6e000000604482015290519081900360640190fd5b9392505050565b600080838311156122f8576040805160e560020a62461bcd02815260206004820181905260248201527f43616c63756c6174696f6e206572726f7220696e207375627472616374696f6e604482015290519081900360640190fd5b5050900390565b600054600160a060020a03163314905600556e61626c6520746f2072657465726976652064617461206f6e207370656369666965642069642c20506c656173652074727920616761696e21210000000000596f7520617265206e6f742061757468656e74696361746520746f206d616b652074686973207472616e73666572000000000000000000000000000000000000a165627a7a72305820ac4fe51b8de9da5600f2a4c4deb4cd209f8a2fdcc0fa995a26fe626fb3ab0e5d0029

Deployed Bytecode Sourcemap

2363:20780:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21817:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21817:228:0;;;;;;;;;;;;;;;;;;;;;15787:4735;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15787:4735:0;;;;;;;;;;;;;;;;;;;;;;;3118:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3118:73:0;;;;6928:216;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6928:216:0;;;;;4014:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4014:69:0;;;;22662:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22662:209:0;;;;;14104:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14104:98:0;;;;4315:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4315:70:0;;;;14252:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14252:95:0;;;;6369:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6369:158:0;-1:-1:-1;;;;;6369:158:0;;;;;20774:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20774:117:0;;;;22107:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22107:224:0;;;;;22922:216;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22922:216:0;;;;;2673:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2673:64:0;;;;3264:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3264:73:0;;;;4163:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4163:69:0;;;;20590:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20590:124:0;;;;;10034:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10034:53:0;;;;9821:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9821:49:0;;;;7701:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7701:97:0;;;;;;15066:673;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15066:673:0;;;;;14423:568;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14423:568:0;;;;;9541:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9541:31:0;;;;7844:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7844:102:0;;;;9720:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9720:45:0;;;;2968:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2968:65:0;;;;21278:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21278:225:0;;;;;;;;;-1:-1:-1;;;;;21278:225:0;;;;;;;;;;;;;;9926:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9926:52:0;;;;22392:221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22392:221:0;;;;;2819:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2819:65:0;;;;4468:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4468:71:0;;;;7210:296;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7210:296:0;;;;;21561:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21561:192:0;-1:-1:-1;;;;;21561:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21561:192:0;;;;;;;;;;;;;;;;;3413:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3413:74:0;;;;9627:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9627:35:0;;;;3862:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3862:70:0;;;;3563:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3563:69:0;;;;5646:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5646:129:0;-1:-1:-1;;;;;5646:129:0;;;;;3711:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3711:70:0;;;;7561:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7561:94:0;;;;5100:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5100:78:0;;;;10890:3162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10890:3162:0;;;;;;;21817:228;21918:18;;21889:7;;21912:24;;;21904:95;;;;;-1:-1:-1;;;;;21904:95:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21904:95:0;;;;-1:-1:-1;;;;;;;;;;;21904:95:0;;;;;;;;;;;;;;;-1:-1:-1;22013:26:0;;;;:22;:26;;;;;;21817:228;;;;:::o;15787:4735::-;15851:4;15872:31;;;:20;:31;;;;;;-1:-1:-1;;;;;15872:31:0;15907:10;15872:45;15864:101;;;;;-1:-1:-1;;;;;15864:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15980:34;;;;:23;:34;;;;;;;;:42;;:34;:42;;15972:109;;;;;-1:-1:-1;;;;;15972:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16091:26;;;;:15;:26;;;;;;2735:2;16091:45;16088:4411;;;16165:33;;;;:22;:33;;;;;;3180:11;16165:58;16158:3;:65;;16150:173;;;;;-1:-1:-1;;;;;16150:173:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16336:34;;;;:23;:34;;;;;;;;:41;;-1:-1:-1;;16336:41:0;16373:4;16336:41;;;16400:20;:31;;;;;;16393:3;:38;16390:1130;;16487:72;16515:43;16548:9;16515:32;:43::i;:::-;16487:23;;;;:12;:23;;;;;;;:72;:27;:72;:::i;:::-;16449:35;;;;:24;:35;;;;;;;;:110;;;16576:6;;:63;;-1:-1:-1;;;;;16576:63:0;;16592:10;16576:63;;;;;;;;;;;;;-1:-1:-1;;;;;16576:6:0;;;;:15;;:63;;;;;16449:35;16576:63;;;;;;;;:6;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;16576:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16576:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;16716:23:0;;;;:12;16576:63;16716:23;;;;;16685:26;;:55;;;:30;:55;:::i;:::-;16656:26;:84;16825:23;;;;:12;:23;;;;;;16790:30;;:59;;;:34;:59;:::i;:::-;16757:30;:92;16889:69;16914:43;16947:9;16914:32;:43::i;:::-;16889:20;;;:69;:24;:69;:::i;:::-;16866:20;:92;16390:1130;;;17033:72;17061:43;17094:9;17061:32;:43::i;17033:72::-;16995:35;;;;:24;:35;;;;;;;;:110;;;17122:6;;:63;;-1:-1:-1;;;;;17122:63:0;;17138:10;17122:63;;;;;;;;;;;;;-1:-1:-1;;;;;17122:6:0;;;;:15;;:63;;;;;16995:35;17122:63;;;;;;;;:6;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;17122:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17122:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;17262:23:0;;;;:12;17122:63;17262:23;;;;;17231:26;;:55;;;:30;:55;:::i;:::-;17202:26;:84;17371:23;;;;:12;:23;;;;;;17336:30;;:59;;;:34;:59;:::i;:::-;17303:30;:92;17435:69;17460:43;17493:9;17460:32;:43::i;17435:69::-;17412:20;:92;16390:1130;16088:4411;;;17536:26;;;;:15;:26;;;;;;2881:3;17536:48;17533:2966;;;17613:33;;;;:22;:33;;;;;;3326:11;17613:61;17606:3;:68;;17598:176;;;;;-1:-1:-1;;;;;17598:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17787:34;;;;:23;:34;;;;;;;;:41;;-1:-1:-1;;17787:41:0;17824:4;17787:41;;;17851:20;:31;;;;;;17844:3;:38;17841:1142;;17938:72;17966:43;17999:9;17966:32;:43::i;17938:72::-;17900:35;;;;:24;:35;;;;;;;;:110;;;18027:6;;:63;;-1:-1:-1;;;;;18027:63:0;;18043:10;18027:63;;;;;;;;;;;;;-1:-1:-1;;;;;18027:6:0;;;;:15;;:63;;;;;17900:35;18027:63;;;;;;;;:6;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;18027:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18027:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;18167:23:0;;;;:12;18027:63;18167:23;;;;;18136:26;;:55;;;:30;:55;:::i;:::-;18107:26;:84;18282:23;;;;:12;:23;;;;;;18244:33;;:62;;;:37;:62;:::i;:::-;18208:33;:98;18346:69;18371:43;18404:9;18371:32;:43::i;17841:1142::-;18490:72;18518:43;18551:9;18518:32;:43::i;18490:72::-;18452:35;;;;:24;:35;;;;;;;;:110;;;18579:6;;:63;;-1:-1:-1;;;;;18579:63:0;;18595:10;18579:63;;;;;;;;;;;;;-1:-1:-1;;;;;18579:6:0;;;;:15;;:63;;;;;18452:35;18579:63;;;;;;;;:6;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;18579:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18579:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;18719:23:0;;;;:12;18579:63;18719:23;;;;;18688:26;;:55;;;:30;:55;:::i;:::-;18659:26;:84;18834:23;;;;:12;:23;;;;;;18796:33;;:62;;;:37;:62;:::i;:::-;18760:33;:98;18898:69;18923:43;18956:9;18923:32;:43::i;17533:2966::-;18999:26;;;;:15;:26;;;;;;3030:3;18999:49;18996:1503;;;19077:33;;;;:22;:33;;;;;;3475:12;19077:62;19070:3;:69;;19062:178;;;;;-1:-1:-1;;;;;19062:178:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19253:34;;;;:23;:34;;;;;;;;:41;;-1:-1:-1;;19253:41:0;19290:4;19253:41;;;19317:20;:31;;;;;;19310:3;:38;19307:1146;;19404:72;19432:43;19465:9;19432:32;:43::i;19404:72::-;19366:35;;;;:24;:35;;;;;;;;:110;;;19493:6;;:63;;-1:-1:-1;;;;;19493:63:0;;19509:10;19493:63;;;;;;;;;;;;;-1:-1:-1;;;;;19493:6:0;;;;:15;;:63;;;;;19366:35;19493:63;;;;;;;;:6;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;19493:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19493:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;19633:23:0;;;;:12;19493:63;19633:23;;;;;19602:26;;:55;;;:30;:55;:::i;:::-;19573:26;:84;19750:23;;;;:12;:23;;;;;;19711:34;;:63;;;:38;:63;:::i;:::-;19674:34;:100;19814:69;19839:43;19872:9;19839:32;:43::i;19307:1146::-;19958:72;19986:43;20019:9;19986:32;:43::i;19958:72::-;19920:35;;;;:24;:35;;;;;;;;:110;;;20047:6;;:63;;-1:-1:-1;;;;;20047:63:0;;20063:10;20047:63;;;;;;;;;;;;;-1:-1:-1;;;;;20047:6:0;;;;:15;;:63;;;;;19920:35;20047:63;;;;;;;;:6;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;20047:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20047:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;20187:23:0;;;;:12;20047:63;20187:23;;;;;20156:26;;:55;;;:30;:55;:::i;:::-;20127:26;:84;20304:23;;;;:12;:23;;;;;;20265:34;;:63;;;:38;:63;:::i;:::-;20228:34;:100;20368:69;20393:43;20426:9;20393:32;:43::i;18996:1503::-;-1:-1:-1;20484:5:0;20477:12;;18996:1503;-1:-1:-1;20512:4:0;15787:4735;;;:::o;3118:73::-;3180:11;3118:73;:::o;6928:216::-;6994:4;5297:9;:7;:9::i;:::-;5289:67;;;;;;;-1:-1:-1;;;;;5289:67:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;;;;;;;;;;;;7029:20;;:31;;7054:5;7029:31;:24;:31;:::i;:::-;7006:20;:54;7067:6;;:53;;;-1:-1:-1;;;;;7067:53:0;;7087:10;7067:53;;;;7107:4;7067:53;;;;;;;;;;;;-1:-1:-1;;;;;7067:6:0;;;;:19;;:53;;;;;;;;;;;;;;;:6;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;7067:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7067:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7134:4:0;;6928:216;-1:-1:-1;;;6928:216:0:o;4014:69::-;4076:7;4014:69;:::o;22662:209::-;22754:18;;22725:7;;22748:24;;;22740:95;;;;;-1:-1:-1;;;;;22740:95:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22740:95:0;;;;-1:-1:-1;;;;;;;;;;;22740:95:0;;;;;;;;;;;;;;;-1:-1:-1;22849:16:0;;;;:12;:16;;;;;;;22662:209::o;14104:98::-;14178:18;;14104:98;:::o;4315:70::-;4377:8;4315:70;:::o;14252:95::-;14325:16;;14252:95;:::o;6369:158::-;6454:4;5297:9;:7;:9::i;:::-;5289:67;;;;;;;-1:-1:-1;;;;;5289:67:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;;;;;;;;;;;;-1:-1:-1;6466:6:0;:37;;-1:-1:-1;;;;;6466:37:0;;-1:-1:-1;;6466:37:0;;;;;;;6369:158;;;:::o;20774:117::-;20859:26;;20774:117;:::o;22107:224::-;22206:18;;22177:7;;22200:24;;;22192:95;;;;;-1:-1:-1;;;;;22192:95:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22192:95:0;;;;-1:-1:-1;;;;;;;;;;;22192:95:0;;;;;;;;;;;;;;;-1:-1:-1;22301:24:0;;;;:20;:24;;;;;;;22107:224::o;22922:216::-;23010:18;;22984:4;;23004:24;;;22996:95;;;;;-1:-1:-1;;;;;22996:95:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22996:95:0;;;;-1:-1:-1;;;;;;;;;;;22996:95:0;;;;;;;;;;;;;;;-1:-1:-1;23105:27:0;;;;:23;:27;;;;;;;;;22922:216::o;2673:64::-;2735:2;2673:64;:::o;3264:73::-;3326:11;3264:73;:::o;4163:69::-;4225:7;4163:69;:::o;20590:124::-;20658:7;20680:28;;;:24;:28;;;;;;;20590:124::o;10034:53::-;;;;:::o;9821:49::-;;;;:::o;7701:97::-;5297:9;:7;:9::i;:::-;5289:67;;;;;;;-1:-1:-1;;;;;5289:67:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;;;;;;;;;;;;7754:11;:18;;-1:-1:-1;;7754:18:0;7768:4;7754:18;;;7784:8;;;;7754:11;;7784:8;7701:97::o;15066:673::-;15140:7;15158:24;;;:20;:24;;;;;;15185:3;-1:-1:-1;15155:579:0;;;15203:19;;;;:15;:19;;;;;;2735:2;15203:36;15200:495;;;15263:16;;;;:12;:16;;;;;;15311:9;;4076:7;15263:47;:57;;15255:66;;;;15200:495;15342:19;;;;:15;:19;;;;;;2881:3;15342:41;15339:356;;;15410:16;;;;:12;:16;;;;;;15461:9;;4225:7;15410:50;:60;;15339:356;15494:19;;;;:15;:19;;;;;;3030:3;15494:42;15491:204;;;15566:16;;;;:12;:16;;;;;;15618:9;;4377:8;15566:51;:61;;14423:568;14497:7;14515:19;;;:15;:19;;;;;;2735:2;14515:38;14512:474;;;14574:16;;;;:12;:16;;;;;;14621:9;;3625:7;14574:46;:56;;14512:474;14648:19;;;;:15;:19;;;;;;2881:3;14648:41;14645:341;;;14717:16;;;;:12;:16;;;;;;14767:9;;3773:8;14717:49;:59;;14645:341;14796:19;;;;:15;:19;;;;;;3030:3;14796:42;14793:193;;;14869:16;;;;:12;:16;;;;;;14920:9;;3924:8;14869:50;:60;;9541:31;;;;;;:::o;7844:102::-;5297:9;:7;:9::i;:::-;5289:67;;;;;;;-1:-1:-1;;;;;5289:67:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;;;;;;;;;;;;7899:11;:19;;-1:-1:-1;;7899:19:0;;;7930:10;;;;7913:5;;7930:10;7844:102::o;9720:45::-;;;;:::o;2968:65::-;3030:3;2968:65;:::o;21278:225::-;21378:18;;21349:7;;21372:24;;;21364:95;;;;;-1:-1:-1;;;;;21364:95:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21364:95:0;;;;-1:-1:-1;;;;;;;;;;;21364:95:0;;;;;;;;;;;;;;;-1:-1:-1;21473:24:0;;;;:20;:24;;;;;;-1:-1:-1;;;;;21473:24:0;;21278:225::o;9926:52::-;;;;:::o;22392:221::-;22493:18;;22464:7;;22487:24;;;22479:95;;;;;-1:-1:-1;;;;;22479:95:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22479:95:0;;;;-1:-1:-1;;;;;;;;;;;22479:95:0;;;;;;;;;;;;;;;-1:-1:-1;22588:19:0;;;;:15;:19;;;;;;;22392:221::o;2819:65::-;2881:3;2819:65;:::o;4468:71::-;4522:17;4468:71;:::o;7210:296::-;7286:4;5297:9;:7;:9::i;:::-;5289:67;;;;;;;-1:-1:-1;;;;;5289:67:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;;;;;;;;;;;;7314:20;;7306:28;;7298:82;;;;;-1:-1:-1;;;;;7298:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7410:20;;:31;;7435:5;7410:31;:24;:31;:::i;:::-;7387:20;:54;7448:6;;:34;;;-1:-1:-1;;;;;7448:34:0;;7464:10;7448:34;;;;;;;;;;;;-1:-1:-1;;;;;7448:6:0;;;;:15;;:34;;;;;;;;;;;;;;;:6;;:34;;;5:2:-1;;;;30:1;27;20:12;21561:192:0;21632:9;-1:-1:-1;;;;;21657:17:0;;;;21649:64;;;;;-1:-1:-1;;;;;21649:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21727:20:0;;;;;;:15;:20;;;;;;;;;21720:27;;;;;;;;;;;;;;;;;21727:20;;21720:27;;21727:20;21720:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21561:192;;;:::o;3413:74::-;3475:12;3413:74;:::o;9627:35::-;;;;:::o;3862:70::-;3924:8;3862:70;:::o;3563:69::-;3625:7;3563:69;:::o;5646:129::-;5717:4;5297:9;:7;:9::i;:::-;5289:67;;;;;;;-1:-1:-1;;;;;5289:67:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;-1:-1:-1;;;;;;;;;;;5289:67:0;;;;;;;;;;;;;;;-1:-1:-1;5731:6:0;:17;;-1:-1:-1;;;;;5731:17:0;;-1:-1:-1;;5731:17:0;;;;;;;5646:129;;;:::o;3711:70::-;3773:8;3711:70;:::o;7561:94::-;7629:20;;7561:94;:::o;5100:78::-;5141:7;5165:6;-1:-1:-1;;;;;5165:6:0;5100:78;:::o;10890:3162::-;10985:4;10963:6;10971:4;10238:10;;;10230:65;;;;;-1:-1:-1;;;;;10230:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:2;10310:10;:29;:65;;;;2881:3;10343:10;:32;10310:65;:102;;;;3030:3;10379:10;:33;10310:102;10302:160;;;;;;;-1:-1:-1;;;;;10302:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:11;;;;:20;10997:92;;;;;-1:-1:-1;;;;;10997:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:2;11099:4;:23;11096:2933;;;11142:30;;4522:17;;11142:42;;11177:6;11142:42;:34;:42;:::i;:::-;:60;;11134:100;;;;;-1:-1:-1;;;;;11134:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11258:3;11272:6;11265:13;;11258:21;;11245:10;:34;;;11311:18;;;11331:1;11311:21;;;11290:42;;;-1:-1:-1;11343:35:0;;;:15;:35;;;;;;;;:42;;;11417:18;;11396:40;;:20;:40;;;;;:53;;-1:-1:-1;;11396:53:0;11439:10;11396:53;;;;;;11460:27;;:15;:27;;;;;11493:18;;27:10:-1;;23:18;;;45:23;;11460:52:0;;;;;;;;;;;;;11566:10;;11544:18;;11523:40;;:20;:40;;;;;:53;11610:18;;11587:42;;:22;:42;;;;;:48;;;;11659:18;;11646:32;;:12;:32;;;;;:41;;;11722:18;;11698:43;;:23;:43;;;;;:51;;-1:-1:-1;;11698:51:0;;;11779:16;;:28;;11681:6;11779:28;:20;:28;:::i;:::-;11760:16;:47;11847:26;;:38;;11878:6;11847:38;:30;:38;:::i;:::-;11818:26;:67;11929:30;;:42;;11964:6;11929:42;:34;:42;:::i;:::-;11896:30;:75;11982:6;;:54;;;-1:-1:-1;;;;;11982:54:0;;12002:10;11982:54;;;;12022:4;11982:54;;;;;;;;;;;;-1:-1:-1;;;;;11982:6:0;;;;:19;;:54;;;;;;;;;;;;;;;:6;;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;11982:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11982:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11096:2933:0;;-1:-1:-1;11096:2933:0;;2881:3;12054:4;:26;12050:1979;;;12101:33;;4522:17;;12101:45;;12139:6;12101:45;:37;:45;:::i;:::-;:63;;12093:106;;;;;-1:-1:-1;;;;;12093:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12223:3;12237:6;12230:13;;12223:21;;12210:10;:34;;;12276:18;;;12296:1;12276:21;;;12255:42;;;-1:-1:-1;12308:35:0;;;:15;:35;;;;;;;;:42;;;12382:18;;12361:40;;:20;:40;;;;;:53;;-1:-1:-1;;12361:53:0;12404:10;12361:53;;;;;;12425:27;;:15;:27;;;;;12458:18;;27:10:-1;;23:18;;;45:23;;12425:52:0;;;;;;;;;;;;;12531:10;;12509:18;;12488:40;;:20;:40;;;;;:53;12575:18;;12552:42;;:22;:42;;;;;:48;;;;12624:18;;12611:32;;:12;:32;;;;;:41;;;12687:18;;12663:43;;:23;:43;;;;;:51;;-1:-1:-1;;12663:51:0;;;12744:16;;:28;;12646:6;12744:28;:20;:28;:::i;:::-;12725:16;:47;12812:26;;:38;;12843:6;12812:38;:30;:38;:::i;:::-;12783:26;:67;12897:33;;:45;;12935:6;12897:45;:37;:45;:::i;:::-;12861:33;:81;12953:6;;:54;;;-1:-1:-1;;;;;12953:54:0;;12973:10;12953:54;;;;12993:4;12953:54;;;;;;;;;;;;-1:-1:-1;;;;;12953:6:0;;;;:19;;:54;;;;;;;;;;;;;;;:6;;:54;;;5:2:-1;;;;30:1;27;20:12;12050:1979:0;3030:3;13024:4;:27;13021:1008;;;13072:34;;4522:17;;13072:46;;13111:6;13072:46;:38;:46;:::i;:::-;:64;;13064:108;;;;;-1:-1:-1;;;;;13064:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13196:3;13210:6;13203:13;;13196:21;;13183:10;:34;;;13249:18;;;13269:1;13249:21;;;13228:42;;;-1:-1:-1;13281:35:0;;;:15;:35;;;;;;;;:42;;;13355:18;;13334:40;;:20;:40;;;;;:53;;-1:-1:-1;;13334:53:0;13377:10;13334:53;;;;;;13398:27;;:15;:27;;;;;13431:18;;27:10:-1;;23:18;;;45:23;;13398:52:0;;;;;;;;;;;;;13504:10;;13482:18;;13461:40;;:20;:40;;;;;:53;13548:18;;13525:42;;:22;:42;;;;;:48;;;;13597:18;;13584:32;;:12;:32;;;;;:41;;;13660:18;;13636:43;;:23;:43;;;;;:51;;-1:-1:-1;;13636:51:0;;;13717:16;;:28;;13619:6;13717:28;:20;:28;:::i;:::-;13698:16;:47;13785:26;;:38;;13816:6;13785:38;:30;:38;:::i;:::-;13756:26;:67;13871:34;;:46;;13910:6;13871:46;:38;:46;:::i;:::-;13834:34;:83;13928:6;;:54;;;-1:-1:-1;;;;;13928:54:0;;13948:10;13928:54;;;;13968:4;13928:54;;;;;;;;;;;;-1:-1:-1;;;;;13928:6:0;;;;:19;;:54;;;;;;;;;;;;;;;:6;;:54;;;5:2:-1;;;;30:1;27;20:12;13021:1008:0;14014:5;14007:12;;;;13021:1008;14042:4;14035:11;;10469:1;10890:3162;;;;;;:::o;1276:179::-;1334:7;1365:5;;;1389:6;;;;1381:47;;;;;-1:-1:-1;;;;;1381:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1446:1;1276:179;-1:-1:-1;;;1276:179:0:o;1008:182::-;1066:7;;1093:6;;;;1085:50;;;;;-1:-1:-1;;;;;1085:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1158:5:0;;;1008:182::o;5436:91::-;5478:4;5514:6;-1:-1:-1;;;;;5514:6:0;5500:10;:20;;5436:91::o

Swarm Source

bzzr://ac4fe51b8de9da5600f2a4c4deb4cd209f8a2fdcc0fa995a26fe626fb3ab0e5d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.