ETH Price: $2,509.50 (+0.41%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Unstake200459082024-06-08 8:26:35365 days ago1717835195IN
0x11B23B2c...6f82e510D
0 ETH0.000794747.09988204
Unstake198235362024-05-08 6:24:11396 days ago1715149451IN
0x11B23B2c...6f82e510D
0 ETH0.000747685.79433042
Unstake197439692024-04-27 3:23:35407 days ago1714188215IN
0x11B23B2c...6f82e510D
0 ETH0.000759775.88802203
Unstake195232952024-03-27 4:23:47438 days ago1711513427IN
0x11B23B2c...6f82e510D
0 ETH0.0025032619.39947631
Unstake195171062024-03-26 7:23:47439 days ago1711437827IN
0x11B23B2c...6f82e510D
0 ETH0.0024102518.67860758
Unstake195144022024-03-25 22:18:59439 days ago1711405139IN
0x11B23B2c...6f82e510D
0 ETH0.0043149233.43919979
Unstake194036282024-03-10 8:53:23455 days ago1710060803IN
0x11B23B2c...6f82e510D
0 ETH0.0065667550.89006594
Unstake193567222024-03-03 19:27:47461 days ago1709494067IN
0x11B23B2c...6f82e510D
0 ETH0.0083162564.44807053
Unstake192781072024-02-21 19:27:23472 days ago1708543643IN
0x11B23B2c...6f82e510D
0 ETH0.0051413739.8438801
Unstake192448722024-02-17 3:19:47477 days ago1708139987IN
0x11B23B2c...6f82e510D
0 ETH0.0017147815.31902403
Unstake190730582024-01-24 0:54:47501 days ago1706057687IN
0x11B23B2c...6f82e510D
0 ETH0.0014792811.46393543
Unstake190715052024-01-23 19:39:23501 days ago1706038763IN
0x11B23B2c...6f82e510D
0 ETH0.0017834913.82145115
Unstake190551142024-01-21 12:03:35504 days ago1705838615IN
0x11B23B2c...6f82e510D
0 ETH0.0015269211.83317154
Unstake189688092024-01-09 10:27:59516 days ago1704796079IN
0x11B23B2c...6f82e510D
0 ETH0.0016309112.63902054
Unstake189431412024-01-05 19:27:47519 days ago1704482867IN
0x11B23B2c...6f82e510D
0 ETH0.0023230718.0030494
Unstake189424852024-01-05 17:15:11519 days ago1704474911IN
0x11B23B2c...6f82e510D
0 ETH0.0036772828.4976597
Unstake189070552023-12-31 17:50:23524 days ago1704045023IN
0x11B23B2c...6f82e510D
0 ETH0.0017913713.88255038
Unstake188935392023-12-29 20:15:23526 days ago1703880923IN
0x11B23B2c...6f82e510D
0 ETH0.0023288220.80463492
Unstake188904332023-12-29 9:46:35527 days ago1703843195IN
0x11B23B2c...6f82e510D
0 ETH0.0029223322.64705395
Unstake188898192023-12-29 7:41:11527 days ago1703835671IN
0x11B23B2c...6f82e510D
0 ETH0.0030241223.43593558
Unstake188865152023-12-28 20:35:23527 days ago1703795723IN
0x11B23B2c...6f82e510D
0 ETH0.0027947721.65855257
Unstake188862882023-12-28 19:49:35527 days ago1703792975IN
0x11B23B2c...6f82e510D
0 ETH0.0029221622.64575215
Unstake188845372023-12-28 13:55:23527 days ago1703771723IN
0x11B23B2c...6f82e510D
0 ETH0.0040322431.24853967
Unstake188751772023-12-27 6:20:35529 days ago1703658035IN
0x11B23B2c...6f82e510D
0 ETH0.0024263821.67618928
Unstake188688202023-12-26 8:57:11530 days ago1703581031IN
0x11B23B2c...6f82e510D
0 ETH0.0014631113.07072105
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PlanetStakingPool

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-07-17
*/

// File: contracts/interfaces/IERC20.sol

pragma solidity >=0.4.22 <0.9.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * ////IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

// File: contracts/interfaces/IPlanetConventionalPool.sol

pragma solidity >=0.4.22 <0.9.0;

interface IPlanetConventionalPool {
    function userTokenStakeInfo(
        address _user
    )
        external
        view
        returns (
            uint256 _amount,
            uint256 _time,
            uint256 _reward,
            uint256 _startTime
        );

    function userLpStakeInfo(
        address _user
    )
        external
        view
        returns (
            uint256 _lpAmount,
            uint256 _amount,
            uint256 _time,
            uint256 _reward,
            uint256 _startTime
        );

    function getUserInfo(
        address _user
    )
        external
        view
        returns (
            bool _isExists,
            uint256 _stakeCount,
            uint256 _totalStakedToken,
            uint256 _totalStakedLp,
            uint256 _totalWithdrawanToken,
            uint256 _totalWithdrawanLp
        );
}

// File: contracts/interfaces/OwnershipManager.sol

pragma solidity >=0.4.22 <0.9.0;

abstract contract OwnershipManager {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(
            owner() == msg.sender,
            "OwnershipManager: caller is not the owner"
        );
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "OwnershipManager: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contracts/interfaces/IPairInterface.sol

pragma solidity >=0.4.22 <0.9.0;

interface IPair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

// File: contracts/PlanetStakingPool.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;




/**
 * @notice Token staking pool enables users to stake their tokens,
 *         to earn % APY for providing their tokens to the staking pool.
 */
contract PlanetStakingPool is OwnershipManager {
    struct AccountDetails {
        uint256 stakedTokenAmount; // Stake Fn
        uint256 firstStakedAt; // Stake Fn
        uint256 rewards; // Stake & Unstake Fn
        uint256 stakeEntries; // Stake Fn
    }
    // Tracking of global account level staking details.
    mapping(address => AccountDetails) public accountDetails;

    // Staking Pool token dependency.
    IERC20 public immutable PLANET_TOKEN;

    // Tracking of staking pool details.
    uint256 public totalStakedTokens; // Stake Fn
    uint256 public totalUnstakedTokens; // Unstake Fn
    uint256 public totalUniqueStakers; // Stake Fn
    uint256 public totalRewards; // Stake Fn
    uint256 public totalHarvestedRewards; // Unstake Fn

    uint256 public APY = 50;

    // Staking pool requirements.
    uint256 public startDate = 1689602400;
    uint256 public maximumPoolAmount = 1e29;
    uint256 public remainingPoolAmount = 1e29;
    uint256 public tokensLockinPeriod = 90 days;
    uint256 public allowedStakingPeriod = 7 days;

    // Tracking of banned accounts
    mapping(address => bool) public isBanned;

    // Staking pool reward provisioning distributor endpoint.
    address public rewardVault;

    // Emergency state
    bool public isPaused;

    // Staking pool events to log core functionality.
    event Staked(address indexed staker, uint256 amount);
    event Unstaked(address indexed staker, uint256 amount);
    event Harvested(address indexed staker, uint256 rewards);
    event Banned(address indexed staker, bool isBanned);
    event Paused(bool isPaused);

    modifier onlyIfNotPaused() {
        require(!isPaused, "PlanetStakingPool: all actions are paused");
        _;
    }

    modifier onlyIfNotBanned() {
        require(!isBanned[msg.sender], "PlanetStakingPool: account banned");
        _;
    }

    /**
     * @dev Initialize contract by deploying a staking pool and setting
     *      up external dependencies.
     *
     * @param initialOwner --> The manager of access restricted functionality.
     * @param rewardToken --> The token that will be rewarded for staking in the pool.
     * @param distributor --> The reward distribution endpoint that will do reward provisioning.
     */
    constructor(
        address payable initialOwner,
        address rewardToken,
        address payable distributor
    ) OwnershipManager(initialOwner) {
        PLANET_TOKEN = IERC20(rewardToken);
        rewardVault = distributor;
    }

    /**
     * @notice Update APY
     *
     * @param newAPY --> new APY.
     */
    function UpdatePoolAPY(uint256 newAPY) external onlyOwner {
        require(
            newAPY > 0,
            "PlanetStakingPool: new APY must be greater than zero"
        );
        APY = newAPY;
    }

    /**
     * @notice SeUpdatet the max token staking requirement for all users,
     *         the pool must comply with the max to stake.
     *
     * @param newMaximumPoolAmount --> The maximum token amount for all users.
     */
    function UpdateMaximumPoolAmount(
        uint256 newMaximumPoolAmount
    ) external onlyOwner {
        require(
            newMaximumPoolAmount > 0 &&
                newMaximumPoolAmount >= totalStakedTokens,
            "PlanetStakingPool: new maximum pool amount must be greater than zero"
        );
        maximumPoolAmount = newMaximumPoolAmount;
        remainingPoolAmount = maximumPoolAmount - totalStakedTokens;
    }

    /**
     * @notice Update the pool start date.
     *
     * @param newStartDate --> The start date in seconds.
     */
    function UpdateStartDate(uint256 newStartDate) external onlyOwner {
        require(
            newStartDate > block.timestamp,
            "PlanetStakingPool: start date must be in the future"
        );
        startDate = newStartDate;
    }

    /**
     * @notice Update the allowed staking period.
     *
     * @param newAllowedStakingPeriod --> The allowed staing period period in days.
     */
    function UpdateAllowedStakingPeriod(
        uint256 newAllowedStakingPeriod
    ) external onlyOwner {
        require(
            newAllowedStakingPeriod > 0 &&
                newAllowedStakingPeriod < tokensLockinPeriod,
            "PlanetStakingPool: new allowed staking period must be greater than zero and less than lockin period"
        );
        allowedStakingPeriod = newAllowedStakingPeriod * 1 days;
    }

    /**
     * @notice Update the token staking lockin period.
     *
     * @param newLockinPeriod --> The lockin period in days.
     */
    function UpdateLockinPeriod(uint256 newLockinPeriod) external onlyOwner {
        require(
            newLockinPeriod > allowedStakingPeriod,
            "PlanetStakingPool: new lockin period must be greater than allowed staking period (14 days)"
        );
        tokensLockinPeriod = newLockinPeriod * 1 days;
    }

    /**
     * @notice Update the reward provisioning endpoint,
     *         this should be the distributor that handle rewards.
     *
     * @param newRewardVault --> The new distributor for reward provisioning.
     */
    function UpdateRewardVault(address newRewardVault) external onlyOwner {
        require(
            newRewardVault != address(0),
            "PlanetStakingPool: new reward vault cannot be zero address"
        );
        rewardVault = newRewardVault;
    }

    /**
     * @notice Update restrictions on an account.
     *
     * @param account --> The account to restrict.
     * @param state --> The state of the restriction.
     */
    function UpdateBanState(address account, bool state) external onlyOwner {
        require(
            isBanned[account] != state,
            "PlanetStakingPool: account already in state"
        );
        isBanned[account] = state;
        emit Banned(account, state);
    }

    /**
     * @notice Update the staking pool in a pause.
     *
     * @param state --> The state of the staking pool.
     */
    function UpdatePoolPauseState(bool state) external onlyOwner {
        require(isPaused != state, "PlanetStakingPool: pool already in state");
        isPaused = state;
        emit Paused(state);
    }

    /**
     * @notice Stake tokens to accumulate token rewards,
     *         token reward accumulation is based on the % APY.
     *
     * @param amount --> The amount of tokens that the account wish,
     *         to stake in the staking pool.
     */
    function stake(uint256 amount) external onlyIfNotPaused onlyIfNotBanned {
        address account = msg.sender;

        // Check that the staked amount is greater than zero
        require(
            amount > 0,
            "PlanetStakingPool: staked amount must be greater than zero"
        );

        // Check that staking has started
        require(
            startDate <= block.timestamp,
            "PlanetStakingPool: staking not started"
        );

        // Check that staking has not locked
        require(
            startDate + allowedStakingPeriod >= block.timestamp,
            "PlanetStakingPool: staking period ended"
        );

        // Check that the staked amount does not overflow the pool
        require(
            totalStakedTokens + amount <= maximumPoolAmount,
            "PlanetStakingPool: staking pool overflow"
        );

        // Check if the account is unique (First Stake), if yes then add it to global tracking and capture first staking time.
        if (accountDetails[account].stakedTokenAmount == 0) {
            totalUniqueStakers++;
            accountDetails[account].firstStakedAt = block.timestamp;
        }

        // Transfer the staked amount of tokens to the staking pool.
        require(
            PLANET_TOKEN.transferFrom(account, address(this), amount),
            "PlanetStakingPool: transfer failed"
        );

        // Update global account staking details.
        accountDetails[account].stakeEntries++;
        // accountDetails[account].lastStakedAt = block.timestamp;
        accountDetails[account].stakedTokenAmount += amount;

        // Calculate rewards
        totalRewards -= accountDetails[account].rewards;
        uint256 rewards = calculateTokenReward(account);
        totalRewards += rewards;
        accountDetails[account].rewards = rewards;

        // Update global staking pool details.
        totalStakedTokens += amount;
        remainingPoolAmount -= amount;

        // Log successful activity.
        emit Staked(account, amount);
    }

    /**
     * @notice Unstake tokens to withdraw your position from the staking pools,
     *         available rewards are transferred to the staking account.
     */
    function unstake() external onlyIfNotPaused onlyIfNotBanned {
        require(
            getAllowingUnstakeDate(msg.sender) <= block.timestamp,
            "PlanetStakingPool: can not unstake yet"
        );

        require(
            accountDetails[msg.sender].rewards > 0,
            "PlanetStakingPool: no rewards to harvest"
        );

        uint256 rewards = accountDetails[msg.sender].rewards;
        uint256 stakedAmount = accountDetails[msg.sender].stakedTokenAmount;

        // Delete the account details before making external calls.
        delete accountDetails[msg.sender];

        // Transfer the staked tokens and rewards to the user account.
        require(
            PLANET_TOKEN.transferFrom(rewardVault, msg.sender, rewards),
            "PlanetStakingPool: rewards transfer failed"
        );
        require(
            PLANET_TOKEN.transfer(msg.sender, stakedAmount),
            "PlanetStakingPool: staked tokens transfer failed"
        );

        totalHarvestedRewards += rewards;
        totalUnstakedTokens += stakedAmount;

        // Log successful activity.
        emit Unstaked(msg.sender, stakedAmount);
        emit Harvested(msg.sender, rewards);
    }

    /**
     * @notice Calculate the unsettled rewards for an account from staking
     *         in the pool, rewards that has not been compounded yet.
     *
     * @param account --> The account to use for reward calculation.
     */
    function calculateTokenReward(
        address account
    ) public view returns (uint256 reward) {
        // Calculate the reward rate of an account.
        reward =
            (accountDetails[account].stakedTokenAmount *
                tokensLockinPeriod *
                APY) /
            (365 days * 100.0);
    }

    /**
     * @notice Calculate the current rewards.
     *
     */
    function calculateTokenCurrentReward(
        address account
    ) public view returns (uint256 reward) {
        require(
            accountDetails[account].stakedTokenAmount > 0,
            "PlanetStakingPool: no staked tokens"
        );
        reward =
            (accountDetails[account].stakedTokenAmount *
                (block.timestamp - accountDetails[account].firstStakedAt) *
                APY) /
            (365 days * 100.0);
    }

    /**
     * @notice Calculate the Unstake Date.
     *
     */
    function getAllowingUnstakeDate(
        address account
    ) public view returns (uint256 unstakeDate) {
        unstakeDate =
            accountDetails[account].firstStakedAt +
            tokensLockinPeriod;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address payable","name":"initialOwner","type":"address"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address payable","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"bool","name":"isBanned","type":"bool"}],"name":"Banned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewards","type":"uint256"}],"name":"Harvested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"APY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PLANET_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAllowedStakingPeriod","type":"uint256"}],"name":"UpdateAllowedStakingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"UpdateBanState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLockinPeriod","type":"uint256"}],"name":"UpdateLockinPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaximumPoolAmount","type":"uint256"}],"name":"UpdateMaximumPoolAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAPY","type":"uint256"}],"name":"UpdatePoolAPY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"UpdatePoolPauseState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRewardVault","type":"address"}],"name":"UpdateRewardVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newStartDate","type":"uint256"}],"name":"UpdateStartDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accountDetails","outputs":[{"internalType":"uint256","name":"stakedTokenAmount","type":"uint256"},{"internalType":"uint256","name":"firstStakedAt","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"},{"internalType":"uint256","name":"stakeEntries","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowedStakingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"calculateTokenCurrentReward","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"calculateTokenReward","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAllowingUnstakeDate","outputs":[{"internalType":"uint256","name":"unstakeDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumPoolAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainingPoolAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensLockinPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHarvestedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUniqueStakers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnstakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a060405260326007556364b549606008556c01431e0fae6d7217caa00000006009556c01431e0fae6d7217caa0000000600a556276a700600b5562093a80600c553480156200004d575f80fd5b50604051620032863803806200328683398181016040528101906200007391906200026b565b8262000085816200010360201b60201c565b508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002c4565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620001f382620001c8565b9050919050565b6200020581620001e7565b811462000210575f80fd5b50565b5f815190506200022381620001fa565b92915050565b5f6200023582620001c8565b9050919050565b620002478162000229565b811462000252575f80fd5b50565b5f8151905062000265816200023c565b92915050565b5f805f60608486031215620002855762000284620001c4565b5b5f620002948682870162000213565b9350506020620002a78682870162000255565b9250506040620002ba8682870162000213565b9150509250925092565b608051612f94620002f25f395f8181610a0d01528181610b0a01528181611599015261187c0152612f945ff3fe608060405234801561000f575f80fd5b50600436106101ee575f3560e01c8063715018a61161010d578063cb2ac6e3116100a0578063ec8fd8001161006f578063ec8fd8001461054a578063ef8bd3051461057d578063f2fde38b1461059b578063fbe21b1e146105b7576101ee565b8063cb2ac6e3146104c4578063e8864789146104f4578063eaa92f2414610510578063eb2fd5671461052c576101ee565b8063a694fc3a116100dc578063a694fc3a1461044e578063b187bd261461046a578063b1e17c2a14610488578063bd91b2e4146104a6576101ee565b8063715018a6146103da5780638da5cb5b146103e457806391a1aa761461040257806397f735d51461041e576101ee565b806333f9fa781161018557806342d9c60d1161015457806342d9c60d146103665780634bf9c46d146103845780636d0de98a146103a25780637143c848146103be576101ee565b806333f9fa78146102de57806338b8870f1461030e5780633a2c67771461032a5780633ae7325914610348576101ee565b80631de9e45e116101c15780631de9e45e1461026857806328665a65146102865780632def6620146102b65780632eba7399146102c0576101ee565b80630b97bc86146101f25780630e15561a146102105780630f7377441461022e57806316d391b91461024a575b5f80fd5b6101fa6105d3565b6040516102079190611dd3565b60405180910390f35b6102186105d9565b6040516102259190611dd3565b60405180910390f35b61024860048036038101906102439190611e4a565b6105df565b005b610252610705565b60405161025f9190611dd3565b60405180910390f35b61027061070b565b60405161027d9190611dd3565b60405180910390f35b6102a0600480360381019061029b9190611e4a565b610711565b6040516102ad9190611dd3565b60405180910390f35b6102be610782565b005b6102c8610cb2565b6040516102d59190611dd3565b60405180910390f35b6102f860048036038101906102f39190611e4a565b610cb8565b6040516103059190611dd3565b60405180910390f35b61032860048036038101906103239190611e9f565b610df3565b005b610332610eb4565b60405161033f9190611ed9565b60405180910390f35b610350610ed9565b60405161035d9190611dd3565b60405180910390f35b61036e610edf565b60405161037b9190611dd3565b60405180910390f35b61038c610ee5565b6040516103999190611dd3565b60405180910390f35b6103bc60048036038101906103b79190611e9f565b610eeb565b005b6103d860048036038101906103d39190611e9f565b610fac565b005b6103e261107d565b005b6103ec6110fd565b6040516103f99190611ed9565b60405180910390f35b61041c60048036038101906104179190611f27565b611124565b005b61043860048036038101906104339190611e4a565b6112ce565b6040516104459190611f74565b60405180910390f35b61046860048036038101906104639190611e9f565b6112eb565b005b610472611861565b60405161047f9190611f74565b60405180910390f35b610490611874565b60405161049d9190611dd3565b60405180910390f35b6104ae61187a565b6040516104bb9190611fe8565b60405180910390f35b6104de60048036038101906104d99190611e4a565b61189e565b6040516104eb9190611dd3565b60405180910390f35b61050e60048036038101906105099190611e9f565b6118f4565b005b61052a60048036038101906105259190612001565b6119d0565b005b610534611aee565b6040516105419190611dd3565b60405180910390f35b610564600480360381019061055f9190611e4a565b611af4565b604051610574949392919061202c565b60405180910390f35b610585611b20565b6040516105929190611dd3565b60405180910390f35b6105b560048036038101906105b09190611e4a565b611b26565b005b6105d160048036038101906105cc9190611e9f565b611c15565b005b60085481565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff166105fe6110fd565b73ffffffffffffffffffffffffffffffffffffffff1614610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064b906120ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b99061217d565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b60035481565b5f63bbf81e00600754600b5460015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015461076791906121c8565b61077191906121c8565b61077b9190612236565b9050919050565b600e60149054906101000a900460ff16156107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c9906122d6565b60405180910390fd5b600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085390612364565b60405180910390fd5b426108663361189e565b11156108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e906123f2565b60405180910390fd5b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015411610929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092090612480565b60405180910390fd5b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015490505f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154905060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8082015f9055600182015f9055600282015f9055600382015f905550507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b8152600401610a899392919061249e565b6020604051808303815f875af1158015610aa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac991906124e7565b610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90612582565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610b639291906125a0565b6020604051808303815f875af1158015610b7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba391906124e7565b610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd990612637565b60405180910390fd5b8160065f828254610bf39190612655565b925050819055508060035f828254610c0b9190612655565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7582604051610c589190611dd3565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff167f121c5042302bae5fc561fbc64368f297ca60a880878e1e3a7f7e9380377260bf83604051610ca69190611dd3565b60405180910390a25050565b60095481565b5f8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015411610d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d31906126f8565b60405180910390fd5b63bbf81e0060075460015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015442610d8e9190612716565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154610dd891906121c8565b610de291906121c8565b610dec9190612236565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610e126110fd565b73ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f906120ef565b60405180910390fd5b5f8111610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906127b9565b60405180910390fd5b8060078190555050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60065481565b60045481565b3373ffffffffffffffffffffffffffffffffffffffff16610f0a6110fd565b73ffffffffffffffffffffffffffffffffffffffff1614610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f57906120ef565b60405180910390fd5b428111610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990612847565b60405180910390fd5b8060088190555050565b3373ffffffffffffffffffffffffffffffffffffffff16610fcb6110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611018906120ef565b60405180910390fd5b600c548111611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906128fb565b60405180910390fd5b620151808161107491906121c8565b600b8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1661109c6110fd565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e9906120ef565b60405180910390fd5b6110fb5f611cfa565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff166111436110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611190906120ef565b60405180910390fd5b801515600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90612989565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fbe490a041de95d684835a21f3975102b719d9ede8cf410d4b6b06440bf839509826040516112c29190611f74565b60405180910390a25050565b600d602052805f5260405f205f915054906101000a900460ff1681565b600e60149054906101000a900460ff161561133b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611332906122d6565b60405180910390fd5b600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90612364565b60405180910390fd5b5f3390505f821161140b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140290612a17565b60405180910390fd5b426008541115611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790612aa5565b60405180910390fd5b42600c546008546114619190612655565b10156114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990612b33565b60405180910390fd5b600954826002546114b39190612655565b11156114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90612bc1565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154036115975760045f81548092919061154c90612bdf565b91905055504260015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd8230856040518463ffffffff1660e01b81526004016115f49392919061249e565b6020604051808303815f875af1158015611610573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163491906124e7565b611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a90612c96565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f8154809291906116c390612bdf565b91905055508160015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282546117169190612655565b9250508190555060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015460055f82825461176e9190612716565b925050819055505f61177f82610711565b90508060055f8282546117929190612655565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201819055508260025f8282546117ef9190612655565b9250508190555082600a5f8282546118079190612716565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040516118549190611dd3565b60405180910390a2505050565b600e60149054906101000a900460ff1681565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600b5460015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101546118ed9190612655565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff166119136110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611960906120ef565b60405180910390fd5b5f811180156119795750600b5481105b6119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119af90612d70565b60405180910390fd5b62015180816119c791906121c8565b600c8190555050565b3373ffffffffffffffffffffffffffffffffffffffff166119ef6110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906120ef565b60405180910390fd5b801515600e60149054906101000a900460ff16151503611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190612dfe565b60405180910390fd5b80600e60146101000a81548160ff0219169083151502179055507f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd281604051611ae39190611f74565b60405180910390a150565b600a5481565b6001602052805f5260405f205f91509050805f0154908060010154908060020154908060030154905084565b60075481565b3373ffffffffffffffffffffffffffffffffffffffff16611b456110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b92906120ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0090612e8c565b60405180910390fd5b611c1281611cfa565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611c346110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c81906120ef565b60405180910390fd5b5f81118015611c9b57506002548110155b611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd190612f40565b60405180910390fd5b80600981905550600254600954611cf19190612716565b600a8190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f819050919050565b611dcd81611dbb565b82525050565b5f602082019050611de65f830184611dc4565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e1982611df0565b9050919050565b611e2981611e0f565b8114611e33575f80fd5b50565b5f81359050611e4481611e20565b92915050565b5f60208284031215611e5f57611e5e611dec565b5b5f611e6c84828501611e36565b91505092915050565b611e7e81611dbb565b8114611e88575f80fd5b50565b5f81359050611e9981611e75565b92915050565b5f60208284031215611eb457611eb3611dec565b5b5f611ec184828501611e8b565b91505092915050565b611ed381611e0f565b82525050565b5f602082019050611eec5f830184611eca565b92915050565b5f8115159050919050565b611f0681611ef2565b8114611f10575f80fd5b50565b5f81359050611f2181611efd565b92915050565b5f8060408385031215611f3d57611f3c611dec565b5b5f611f4a85828601611e36565b9250506020611f5b85828601611f13565b9150509250929050565b611f6e81611ef2565b82525050565b5f602082019050611f875f830184611f65565b92915050565b5f819050919050565b5f611fb0611fab611fa684611df0565b611f8d565b611df0565b9050919050565b5f611fc182611f96565b9050919050565b5f611fd282611fb7565b9050919050565b611fe281611fc8565b82525050565b5f602082019050611ffb5f830184611fd9565b92915050565b5f6020828403121561201657612015611dec565b5b5f61202384828501611f13565b91505092915050565b5f60808201905061203f5f830187611dc4565b61204c6020830186611dc4565b6120596040830185611dc4565b6120666060830184611dc4565b95945050505050565b5f82825260208201905092915050565b7f4f776e6572736869704d616e616765723a2063616c6c6572206973206e6f74205f8201527f746865206f776e65720000000000000000000000000000000000000000000000602082015250565b5f6120d960298361206f565b91506120e48261207f565b604082019050919050565b5f6020820190508181035f830152612106816120cd565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e6577207265776172642076615f8201527f756c742063616e6e6f74206265207a65726f2061646472657373000000000000602082015250565b5f612167603a8361206f565b91506121728261210d565b604082019050919050565b5f6020820190508181035f8301526121948161215b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121d282611dbb565b91506121dd83611dbb565b92508282026121eb81611dbb565b915082820484148315176122025761220161219b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61224082611dbb565b915061224b83611dbb565b92508261225b5761225a612209565b5b828204905092915050565b7f506c616e65745374616b696e67506f6f6c3a20616c6c20616374696f6e7320615f8201527f7265207061757365640000000000000000000000000000000000000000000000602082015250565b5f6122c060298361206f565b91506122cb82612266565b604082019050919050565b5f6020820190508181035f8301526122ed816122b4565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206163636f756e742062616e6e655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61234e60218361206f565b9150612359826122f4565b604082019050919050565b5f6020820190508181035f83015261237b81612342565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a2063616e206e6f7420756e7374615f8201527f6b65207965740000000000000000000000000000000000000000000000000000602082015250565b5f6123dc60268361206f565b91506123e782612382565b604082019050919050565b5f6020820190508181035f830152612409816123d0565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e6f207265776172647320746f5f8201527f2068617276657374000000000000000000000000000000000000000000000000602082015250565b5f61246a60288361206f565b915061247582612410565b604082019050919050565b5f6020820190508181035f8301526124978161245e565b9050919050565b5f6060820190506124b15f830186611eca565b6124be6020830185611eca565b6124cb6040830184611dc4565b949350505050565b5f815190506124e181611efd565b92915050565b5f602082840312156124fc576124fb611dec565b5b5f612509848285016124d3565b91505092915050565b7f506c616e65745374616b696e67506f6f6c3a2072657761726473207472616e735f8201527f666572206661696c656400000000000000000000000000000000000000000000602082015250565b5f61256c602a8361206f565b915061257782612512565b604082019050919050565b5f6020820190508181035f83015261259981612560565b9050919050565b5f6040820190506125b35f830185611eca565b6125c06020830184611dc4565b9392505050565b7f506c616e65745374616b696e67506f6f6c3a207374616b656420746f6b656e735f8201527f207472616e73666572206661696c656400000000000000000000000000000000602082015250565b5f61262160308361206f565b915061262c826125c7565b604082019050919050565b5f6020820190508181035f83015261264e81612615565b9050919050565b5f61265f82611dbb565b915061266a83611dbb565b92508282019050808211156126825761268161219b565b5b92915050565b7f506c616e65745374616b696e67506f6f6c3a206e6f207374616b656420746f6b5f8201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126e260238361206f565b91506126ed82612688565b604082019050919050565b5f6020820190508181035f83015261270f816126d6565b9050919050565b5f61272082611dbb565b915061272b83611dbb565b92508282039050818111156127435761274261219b565b5b92915050565b7f506c616e65745374616b696e67506f6f6c3a206e657720415059206d757374205f8201527f62652067726561746572207468616e207a65726f000000000000000000000000602082015250565b5f6127a360348361206f565b91506127ae82612749565b604082019050919050565b5f6020820190508181035f8301526127d081612797565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a2073746172742064617465206d755f8201527f737420626520696e207468652066757475726500000000000000000000000000602082015250565b5f61283160338361206f565b915061283c826127d7565b604082019050919050565b5f6020820190508181035f83015261285e81612825565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e6577206c6f636b696e2070655f8201527f72696f64206d7573742062652067726561746572207468616e20616c6c6f776560208201527f64207374616b696e6720706572696f6420283134206461797329000000000000604082015250565b5f6128e5605a8361206f565b91506128f082612865565b606082019050919050565b5f6020820190508181035f830152612912816128d9565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206163636f756e7420616c7265615f8201527f647920696e207374617465000000000000000000000000000000000000000000602082015250565b5f612973602b8361206f565b915061297e82612919565b604082019050919050565b5f6020820190508181035f8301526129a081612967565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a207374616b656420616d6f756e745f8201527f206d7573742062652067726561746572207468616e207a65726f000000000000602082015250565b5f612a01603a8361206f565b9150612a0c826129a7565b604082019050919050565b5f6020820190508181035f830152612a2e816129f5565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a207374616b696e67206e6f7420735f8201527f7461727465640000000000000000000000000000000000000000000000000000602082015250565b5f612a8f60268361206f565b9150612a9a82612a35565b604082019050919050565b5f6020820190508181035f830152612abc81612a83565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a207374616b696e6720706572696f5f8201527f6420656e64656400000000000000000000000000000000000000000000000000602082015250565b5f612b1d60278361206f565b9150612b2882612ac3565b604082019050919050565b5f6020820190508181035f830152612b4a81612b11565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a207374616b696e6720706f6f6c205f8201527f6f766572666c6f77000000000000000000000000000000000000000000000000602082015250565b5f612bab60288361206f565b9150612bb682612b51565b604082019050919050565b5f6020820190508181035f830152612bd881612b9f565b9050919050565b5f612be982611dbb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c1b57612c1a61219b565b5b600182019050919050565b7f506c616e65745374616b696e67506f6f6c3a207472616e73666572206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c8060228361206f565b9150612c8b82612c26565b604082019050919050565b5f6020820190508181035f830152612cad81612c74565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e657720616c6c6f77656420735f8201527f74616b696e6720706572696f64206d757374206265206772656174657220746860208201527f616e207a65726f20616e64206c657373207468616e206c6f636b696e2070657260408201527f696f640000000000000000000000000000000000000000000000000000000000606082015250565b5f612d5a60638361206f565b9150612d6582612cb4565b608082019050919050565b5f6020820190508181035f830152612d8781612d4e565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a20706f6f6c20616c7265616479205f8201527f696e207374617465000000000000000000000000000000000000000000000000602082015250565b5f612de860288361206f565b9150612df382612d8e565b604082019050919050565b5f6020820190508181035f830152612e1581612ddc565b9050919050565b7f4f776e6572736869704d616e616765723a206e6577206f776e657220697320745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f612e76602f8361206f565b9150612e8182612e1c565b604082019050919050565b5f6020820190508181035f830152612ea381612e6a565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e6577206d6178696d756d20705f8201527f6f6f6c20616d6f756e74206d7573742062652067726561746572207468616e2060208201527f7a65726f00000000000000000000000000000000000000000000000000000000604082015250565b5f612f2a60448361206f565b9150612f3582612eaa565b606082019050919050565b5f6020820190508181035f830152612f5781612f1e565b905091905056fea2646970667358221220a25ddfc6b02b1002d09e3519c4ad932bcfb593a80511eeddf85cdeb8348c7d6964736f6c63430008140033000000000000000000000000c5a9be8cd8de39c9197e5cad1a460184100d92b10000000000000000000000002ad9addd0d97ec3cdba27f92bf6077893b76ab0b000000000000000000000000e382ff08fff6412ac4924fad7162e74b2643a7f0

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101ee575f3560e01c8063715018a61161010d578063cb2ac6e3116100a0578063ec8fd8001161006f578063ec8fd8001461054a578063ef8bd3051461057d578063f2fde38b1461059b578063fbe21b1e146105b7576101ee565b8063cb2ac6e3146104c4578063e8864789146104f4578063eaa92f2414610510578063eb2fd5671461052c576101ee565b8063a694fc3a116100dc578063a694fc3a1461044e578063b187bd261461046a578063b1e17c2a14610488578063bd91b2e4146104a6576101ee565b8063715018a6146103da5780638da5cb5b146103e457806391a1aa761461040257806397f735d51461041e576101ee565b806333f9fa781161018557806342d9c60d1161015457806342d9c60d146103665780634bf9c46d146103845780636d0de98a146103a25780637143c848146103be576101ee565b806333f9fa78146102de57806338b8870f1461030e5780633a2c67771461032a5780633ae7325914610348576101ee565b80631de9e45e116101c15780631de9e45e1461026857806328665a65146102865780632def6620146102b65780632eba7399146102c0576101ee565b80630b97bc86146101f25780630e15561a146102105780630f7377441461022e57806316d391b91461024a575b5f80fd5b6101fa6105d3565b6040516102079190611dd3565b60405180910390f35b6102186105d9565b6040516102259190611dd3565b60405180910390f35b61024860048036038101906102439190611e4a565b6105df565b005b610252610705565b60405161025f9190611dd3565b60405180910390f35b61027061070b565b60405161027d9190611dd3565b60405180910390f35b6102a0600480360381019061029b9190611e4a565b610711565b6040516102ad9190611dd3565b60405180910390f35b6102be610782565b005b6102c8610cb2565b6040516102d59190611dd3565b60405180910390f35b6102f860048036038101906102f39190611e4a565b610cb8565b6040516103059190611dd3565b60405180910390f35b61032860048036038101906103239190611e9f565b610df3565b005b610332610eb4565b60405161033f9190611ed9565b60405180910390f35b610350610ed9565b60405161035d9190611dd3565b60405180910390f35b61036e610edf565b60405161037b9190611dd3565b60405180910390f35b61038c610ee5565b6040516103999190611dd3565b60405180910390f35b6103bc60048036038101906103b79190611e9f565b610eeb565b005b6103d860048036038101906103d39190611e9f565b610fac565b005b6103e261107d565b005b6103ec6110fd565b6040516103f99190611ed9565b60405180910390f35b61041c60048036038101906104179190611f27565b611124565b005b61043860048036038101906104339190611e4a565b6112ce565b6040516104459190611f74565b60405180910390f35b61046860048036038101906104639190611e9f565b6112eb565b005b610472611861565b60405161047f9190611f74565b60405180910390f35b610490611874565b60405161049d9190611dd3565b60405180910390f35b6104ae61187a565b6040516104bb9190611fe8565b60405180910390f35b6104de60048036038101906104d99190611e4a565b61189e565b6040516104eb9190611dd3565b60405180910390f35b61050e60048036038101906105099190611e9f565b6118f4565b005b61052a60048036038101906105259190612001565b6119d0565b005b610534611aee565b6040516105419190611dd3565b60405180910390f35b610564600480360381019061055f9190611e4a565b611af4565b604051610574949392919061202c565b60405180910390f35b610585611b20565b6040516105929190611dd3565b60405180910390f35b6105b560048036038101906105b09190611e4a565b611b26565b005b6105d160048036038101906105cc9190611e9f565b611c15565b005b60085481565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff166105fe6110fd565b73ffffffffffffffffffffffffffffffffffffffff1614610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064b906120ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b99061217d565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b60035481565b5f63bbf81e00600754600b5460015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015461076791906121c8565b61077191906121c8565b61077b9190612236565b9050919050565b600e60149054906101000a900460ff16156107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c9906122d6565b60405180910390fd5b600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085390612364565b60405180910390fd5b426108663361189e565b11156108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e906123f2565b60405180910390fd5b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015411610929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092090612480565b60405180910390fd5b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015490505f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154905060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8082015f9055600182015f9055600282015f9055600382015f905550507f0000000000000000000000002ad9addd0d97ec3cdba27f92bf6077893b76ab0b73ffffffffffffffffffffffffffffffffffffffff166323b872dd600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b8152600401610a899392919061249e565b6020604051808303815f875af1158015610aa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac991906124e7565b610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90612582565b60405180910390fd5b7f0000000000000000000000002ad9addd0d97ec3cdba27f92bf6077893b76ab0b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610b639291906125a0565b6020604051808303815f875af1158015610b7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba391906124e7565b610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd990612637565b60405180910390fd5b8160065f828254610bf39190612655565b925050819055508060035f828254610c0b9190612655565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7582604051610c589190611dd3565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff167f121c5042302bae5fc561fbc64368f297ca60a880878e1e3a7f7e9380377260bf83604051610ca69190611dd3565b60405180910390a25050565b60095481565b5f8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015411610d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d31906126f8565b60405180910390fd5b63bbf81e0060075460015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015442610d8e9190612716565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154610dd891906121c8565b610de291906121c8565b610dec9190612236565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610e126110fd565b73ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f906120ef565b60405180910390fd5b5f8111610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906127b9565b60405180910390fd5b8060078190555050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60065481565b60045481565b3373ffffffffffffffffffffffffffffffffffffffff16610f0a6110fd565b73ffffffffffffffffffffffffffffffffffffffff1614610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f57906120ef565b60405180910390fd5b428111610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990612847565b60405180910390fd5b8060088190555050565b3373ffffffffffffffffffffffffffffffffffffffff16610fcb6110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611018906120ef565b60405180910390fd5b600c548111611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906128fb565b60405180910390fd5b620151808161107491906121c8565b600b8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1661109c6110fd565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e9906120ef565b60405180910390fd5b6110fb5f611cfa565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff166111436110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611190906120ef565b60405180910390fd5b801515600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f90612989565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fbe490a041de95d684835a21f3975102b719d9ede8cf410d4b6b06440bf839509826040516112c29190611f74565b60405180910390a25050565b600d602052805f5260405f205f915054906101000a900460ff1681565b600e60149054906101000a900460ff161561133b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611332906122d6565b60405180910390fd5b600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90612364565b60405180910390fd5b5f3390505f821161140b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140290612a17565b60405180910390fd5b426008541115611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790612aa5565b60405180910390fd5b42600c546008546114619190612655565b10156114a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149990612b33565b60405180910390fd5b600954826002546114b39190612655565b11156114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90612bc1565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154036115975760045f81548092919061154c90612bdf565b91905055504260015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b7f0000000000000000000000002ad9addd0d97ec3cdba27f92bf6077893b76ab0b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8230856040518463ffffffff1660e01b81526004016115f49392919061249e565b6020604051808303815f875af1158015611610573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163491906124e7565b611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a90612c96565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f8154809291906116c390612bdf565b91905055508160015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282546117169190612655565b9250508190555060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015460055f82825461176e9190612716565b925050819055505f61177f82610711565b90508060055f8282546117929190612655565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201819055508260025f8282546117ef9190612655565b9250508190555082600a5f8282546118079190612716565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040516118549190611dd3565b60405180910390a2505050565b600e60149054906101000a900460ff1681565b600c5481565b7f0000000000000000000000002ad9addd0d97ec3cdba27f92bf6077893b76ab0b81565b5f600b5460015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101546118ed9190612655565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff166119136110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611960906120ef565b60405180910390fd5b5f811180156119795750600b5481105b6119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119af90612d70565b60405180910390fd5b62015180816119c791906121c8565b600c8190555050565b3373ffffffffffffffffffffffffffffffffffffffff166119ef6110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906120ef565b60405180910390fd5b801515600e60149054906101000a900460ff16151503611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190612dfe565b60405180910390fd5b80600e60146101000a81548160ff0219169083151502179055507f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd281604051611ae39190611f74565b60405180910390a150565b600a5481565b6001602052805f5260405f205f91509050805f0154908060010154908060020154908060030154905084565b60075481565b3373ffffffffffffffffffffffffffffffffffffffff16611b456110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b92906120ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0090612e8c565b60405180910390fd5b611c1281611cfa565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611c346110fd565b73ffffffffffffffffffffffffffffffffffffffff1614611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c81906120ef565b60405180910390fd5b5f81118015611c9b57506002548110155b611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd190612f40565b60405180910390fd5b80600981905550600254600954611cf19190612716565b600a8190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f819050919050565b611dcd81611dbb565b82525050565b5f602082019050611de65f830184611dc4565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e1982611df0565b9050919050565b611e2981611e0f565b8114611e33575f80fd5b50565b5f81359050611e4481611e20565b92915050565b5f60208284031215611e5f57611e5e611dec565b5b5f611e6c84828501611e36565b91505092915050565b611e7e81611dbb565b8114611e88575f80fd5b50565b5f81359050611e9981611e75565b92915050565b5f60208284031215611eb457611eb3611dec565b5b5f611ec184828501611e8b565b91505092915050565b611ed381611e0f565b82525050565b5f602082019050611eec5f830184611eca565b92915050565b5f8115159050919050565b611f0681611ef2565b8114611f10575f80fd5b50565b5f81359050611f2181611efd565b92915050565b5f8060408385031215611f3d57611f3c611dec565b5b5f611f4a85828601611e36565b9250506020611f5b85828601611f13565b9150509250929050565b611f6e81611ef2565b82525050565b5f602082019050611f875f830184611f65565b92915050565b5f819050919050565b5f611fb0611fab611fa684611df0565b611f8d565b611df0565b9050919050565b5f611fc182611f96565b9050919050565b5f611fd282611fb7565b9050919050565b611fe281611fc8565b82525050565b5f602082019050611ffb5f830184611fd9565b92915050565b5f6020828403121561201657612015611dec565b5b5f61202384828501611f13565b91505092915050565b5f60808201905061203f5f830187611dc4565b61204c6020830186611dc4565b6120596040830185611dc4565b6120666060830184611dc4565b95945050505050565b5f82825260208201905092915050565b7f4f776e6572736869704d616e616765723a2063616c6c6572206973206e6f74205f8201527f746865206f776e65720000000000000000000000000000000000000000000000602082015250565b5f6120d960298361206f565b91506120e48261207f565b604082019050919050565b5f6020820190508181035f830152612106816120cd565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e6577207265776172642076615f8201527f756c742063616e6e6f74206265207a65726f2061646472657373000000000000602082015250565b5f612167603a8361206f565b91506121728261210d565b604082019050919050565b5f6020820190508181035f8301526121948161215b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121d282611dbb565b91506121dd83611dbb565b92508282026121eb81611dbb565b915082820484148315176122025761220161219b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61224082611dbb565b915061224b83611dbb565b92508261225b5761225a612209565b5b828204905092915050565b7f506c616e65745374616b696e67506f6f6c3a20616c6c20616374696f6e7320615f8201527f7265207061757365640000000000000000000000000000000000000000000000602082015250565b5f6122c060298361206f565b91506122cb82612266565b604082019050919050565b5f6020820190508181035f8301526122ed816122b4565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206163636f756e742062616e6e655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61234e60218361206f565b9150612359826122f4565b604082019050919050565b5f6020820190508181035f83015261237b81612342565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a2063616e206e6f7420756e7374615f8201527f6b65207965740000000000000000000000000000000000000000000000000000602082015250565b5f6123dc60268361206f565b91506123e782612382565b604082019050919050565b5f6020820190508181035f830152612409816123d0565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e6f207265776172647320746f5f8201527f2068617276657374000000000000000000000000000000000000000000000000602082015250565b5f61246a60288361206f565b915061247582612410565b604082019050919050565b5f6020820190508181035f8301526124978161245e565b9050919050565b5f6060820190506124b15f830186611eca565b6124be6020830185611eca565b6124cb6040830184611dc4565b949350505050565b5f815190506124e181611efd565b92915050565b5f602082840312156124fc576124fb611dec565b5b5f612509848285016124d3565b91505092915050565b7f506c616e65745374616b696e67506f6f6c3a2072657761726473207472616e735f8201527f666572206661696c656400000000000000000000000000000000000000000000602082015250565b5f61256c602a8361206f565b915061257782612512565b604082019050919050565b5f6020820190508181035f83015261259981612560565b9050919050565b5f6040820190506125b35f830185611eca565b6125c06020830184611dc4565b9392505050565b7f506c616e65745374616b696e67506f6f6c3a207374616b656420746f6b656e735f8201527f207472616e73666572206661696c656400000000000000000000000000000000602082015250565b5f61262160308361206f565b915061262c826125c7565b604082019050919050565b5f6020820190508181035f83015261264e81612615565b9050919050565b5f61265f82611dbb565b915061266a83611dbb565b92508282019050808211156126825761268161219b565b5b92915050565b7f506c616e65745374616b696e67506f6f6c3a206e6f207374616b656420746f6b5f8201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126e260238361206f565b91506126ed82612688565b604082019050919050565b5f6020820190508181035f83015261270f816126d6565b9050919050565b5f61272082611dbb565b915061272b83611dbb565b92508282039050818111156127435761274261219b565b5b92915050565b7f506c616e65745374616b696e67506f6f6c3a206e657720415059206d757374205f8201527f62652067726561746572207468616e207a65726f000000000000000000000000602082015250565b5f6127a360348361206f565b91506127ae82612749565b604082019050919050565b5f6020820190508181035f8301526127d081612797565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a2073746172742064617465206d755f8201527f737420626520696e207468652066757475726500000000000000000000000000602082015250565b5f61283160338361206f565b915061283c826127d7565b604082019050919050565b5f6020820190508181035f83015261285e81612825565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e6577206c6f636b696e2070655f8201527f72696f64206d7573742062652067726561746572207468616e20616c6c6f776560208201527f64207374616b696e6720706572696f6420283134206461797329000000000000604082015250565b5f6128e5605a8361206f565b91506128f082612865565b606082019050919050565b5f6020820190508181035f830152612912816128d9565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206163636f756e7420616c7265615f8201527f647920696e207374617465000000000000000000000000000000000000000000602082015250565b5f612973602b8361206f565b915061297e82612919565b604082019050919050565b5f6020820190508181035f8301526129a081612967565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a207374616b656420616d6f756e745f8201527f206d7573742062652067726561746572207468616e207a65726f000000000000602082015250565b5f612a01603a8361206f565b9150612a0c826129a7565b604082019050919050565b5f6020820190508181035f830152612a2e816129f5565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a207374616b696e67206e6f7420735f8201527f7461727465640000000000000000000000000000000000000000000000000000602082015250565b5f612a8f60268361206f565b9150612a9a82612a35565b604082019050919050565b5f6020820190508181035f830152612abc81612a83565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a207374616b696e6720706572696f5f8201527f6420656e64656400000000000000000000000000000000000000000000000000602082015250565b5f612b1d60278361206f565b9150612b2882612ac3565b604082019050919050565b5f6020820190508181035f830152612b4a81612b11565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a207374616b696e6720706f6f6c205f8201527f6f766572666c6f77000000000000000000000000000000000000000000000000602082015250565b5f612bab60288361206f565b9150612bb682612b51565b604082019050919050565b5f6020820190508181035f830152612bd881612b9f565b9050919050565b5f612be982611dbb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c1b57612c1a61219b565b5b600182019050919050565b7f506c616e65745374616b696e67506f6f6c3a207472616e73666572206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c8060228361206f565b9150612c8b82612c26565b604082019050919050565b5f6020820190508181035f830152612cad81612c74565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e657720616c6c6f77656420735f8201527f74616b696e6720706572696f64206d757374206265206772656174657220746860208201527f616e207a65726f20616e64206c657373207468616e206c6f636b696e2070657260408201527f696f640000000000000000000000000000000000000000000000000000000000606082015250565b5f612d5a60638361206f565b9150612d6582612cb4565b608082019050919050565b5f6020820190508181035f830152612d8781612d4e565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a20706f6f6c20616c7265616479205f8201527f696e207374617465000000000000000000000000000000000000000000000000602082015250565b5f612de860288361206f565b9150612df382612d8e565b604082019050919050565b5f6020820190508181035f830152612e1581612ddc565b9050919050565b7f4f776e6572736869704d616e616765723a206e6577206f776e657220697320745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f612e76602f8361206f565b9150612e8182612e1c565b604082019050919050565b5f6020820190508181035f830152612ea381612e6a565b9050919050565b7f506c616e65745374616b696e67506f6f6c3a206e6577206d6178696d756d20705f8201527f6f6f6c20616d6f756e74206d7573742062652067726561746572207468616e2060208201527f7a65726f00000000000000000000000000000000000000000000000000000000604082015250565b5f612f2a60448361206f565b9150612f3582612eaa565b606082019050919050565b5f6020820190508181035f830152612f5781612f1e565b905091905056fea2646970667358221220a25ddfc6b02b1002d09e3519c4ad932bcfb593a80511eeddf85cdeb8348c7d6964736f6c63430008140033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000c5a9be8cd8de39c9197e5cad1a460184100d92b10000000000000000000000002ad9addd0d97ec3cdba27f92bf6077893b76ab0b000000000000000000000000e382ff08fff6412ac4924fad7162e74b2643a7f0

-----Decoded View---------------
Arg [0] : initialOwner (address): 0xc5A9BE8CD8dE39C9197E5CaD1A460184100d92b1
Arg [1] : rewardToken (address): 0x2aD9adDD0d97EC3cDBA27F92bF6077893b76Ab0b
Arg [2] : distributor (address): 0xE382FF08fFF6412AC4924fad7162e74B2643a7F0

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c5a9be8cd8de39c9197e5cad1a460184100d92b1
Arg [1] : 0000000000000000000000002ad9addd0d97ec3cdba27f92bf6077893b76ab0b
Arg [2] : 000000000000000000000000e382ff08fff6412ac4924fad7162e74b2643a7f0


Deployed Bytecode Sourcemap

9187:11595:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10039:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9867:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14462:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10177:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9760:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19598:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18110:1237;;;:::i;:::-;;10083:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20011:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11856:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10428:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9709:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9913:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9815:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12896:251;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13899:325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5108:103;;;:::i;:::-;;4670:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14918:284;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10316:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15823:2106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10487:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10227:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9622:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20555:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13317:430;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15344:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10129:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9518:56;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;9972:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5366:247;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12317:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10039:37;;;;:::o;9867:27::-;;;;:::o;14462:264::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;14591:1:::1;14565:28;;:14;:28;;::::0;14543:136:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14704:14;14690:11;;:28;;;;;;;;;;;;;;;;;;14462:264:::0;:::o;10177:43::-;;;;:::o;9760:34::-;;;;:::o;19598:332::-;19682:14;19905:16;19884:3;;19846:18;;19785:14;:23;19800:7;19785:23;;;;;;;;;;;;;;;:41;;;:79;;;;:::i;:::-;:102;;;;:::i;:::-;19784:138;;;;:::i;:::-;19762:160;;19598:332;;;:::o;18110:1237::-;10895:8;;;;;;;;;;;10894:9;10886:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11024:8:::1;:20;11033:10;11024:20;;;;;;;;;;;;;;;;;;;;;;;;;11023:21;11015:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18241:15:::2;18203:34;18226:10;18203:22;:34::i;:::-;:53;;18181:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18394:1;18357:14;:26;18372:10;18357:26;;;;;;;;;;;;;;;:34;;;:38;18335:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;18476:15;18494:14;:26;18509:10;18494:26;;;;;;;;;;;;;;;:34;;;18476:52;;18539:20;18562:14;:26;18577:10;18562:26;;;;;;;;;;;;;;;:44;;;18539:67;;18695:14;:26;18710:10;18695:26;;;;;;;;;;;;;;;;18688:33:::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;18828:12;:25;;;18854:11;;;;;;;;;;;18867:10;18879:7;18828:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18806:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;18990:12;:21;;;19012:10;19024:12;18990:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18968:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;19151:7;19126:21;;:32;;;;;;;:::i;:::-;;;;;;;;19192:12;19169:19;;:35;;;;;;;:::i;:::-;;;;;;;;19268:10;19259:34;;;19280:12;19259:34;;;;;;:::i;:::-;;;;;;;;19319:10;19309:30;;;19331:7;19309:30;;;;;;:::i;:::-;;;;;;;;18170:1177;;18110:1237::o:0;10083:39::-;;;;:::o;20011:466::-;20102:14;20195:1;20151:14;:23;20166:7;20151:23;;;;;;;;;;;;;;;:41;;;:45;20129:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;20452:16;20431:3;;20373:14;:23;20388:7;20373:23;;;;;;;;;;;;;;;:37;;;20355:15;:55;;;;:::i;:::-;20293:14;:23;20308:7;20293:23;;;;;;;;;;;;;;;:41;;;:118;;;;:::i;:::-;:141;;;;:::i;:::-;20292:177;;;;:::i;:::-;20270:199;;20011:466;;;:::o;11856:212::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;11956:1:::1;11947:6;:10;11925:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;12054:6;12048:3;:12;;;;11856:212:::0;:::o;10428:26::-;;;;;;;;;;;;;:::o;9709:32::-;;;;:::o;9913:36::-;;;;:::o;9815:33::-;;;;:::o;12896:251::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13010:15:::1;12995:12;:30;12973:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;13127:12;13115:9;:24;;;;12896:251:::0;:::o;13899:325::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;14022:20:::1;;14004:15;:38;13982:178;;;;;;;;;;;;:::i;:::-;;;;;;;;;14210:6;14192:15;:24;;;;:::i;:::-;14171:18;:45;;;;13899:325:::0;:::o;5108:103::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;5173:30:::1;5200:1;5173:18;:30::i;:::-;5108:103::o:0;4670:87::-;4716:7;4743:6;;;;;;;;;;;4736:13;;4670:87;:::o;14918:284::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;15044:5:::1;15023:26;;:8;:17;15032:7;15023:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;::::0;15001:119:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15151:5;15131:8;:17;15140:7;15131:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15179:7;15172:22;;;15188:5;15172:22;;;;;;:::i;:::-;;;;;;;;14918:284:::0;;:::o;10316:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;15823:2106::-;10895:8;;;;;;;;;;;10894:9;10886:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11024:8:::1;:20;11033:10;11024:20;;;;;;;;;;;;;;;;;;;;;;;;;11023:21;11015:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15906:15:::2;15924:10;15906:28;;16040:1;16031:6;:10;16009:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;16218:15;16205:9;;:28;;16183:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;16416:15;16392:20;;16380:9;;:32;;;;:::i;:::-;:51;;16358:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16631:17;;16621:6;16601:17;;:26;;;;:::i;:::-;:47;;16579:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;16906:1;16861:14;:23;16876:7;16861:23;;;;;;;;;;;;;;;:41;;;:46:::0;16857:169:::2;;16924:18;;:20;;;;;;;;;:::i;:::-;;;;;;16999:15;16959:14;:23;16974:7;16959:23;;;;;;;;;;;;;;;:37;;:55;;;;16857:169;17130:12;:25;;;17156:7;17173:4;17180:6;17130:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17108:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;17313:14;:23;17328:7;17313:23;;;;;;;;;;;;;;;:36;;;:38;;;;;;;;;:::i;:::-;;;;;;17475:6;17430:14;:23;17445:7;17430:23;;;;;;;;;;;;;;;:41;;;:51;;;;;;;:::i;:::-;;;;;;;;17540:14;:23;17555:7;17540:23;;;;;;;;;;;;;;;:31;;;17524:12;;:47;;;;;;;:::i;:::-;;;;;;;;17582:15;17600:29;17621:7;17600:20;:29::i;:::-;17582:47;;17656:7;17640:12;;:23;;;;;;;:::i;:::-;;;;;;;;17708:7;17674:14;:23;17689:7;17674:23;;;;;;;;;;;;;;;:31;;:41;;;;17797:6;17776:17;;:27;;;;;;;:::i;:::-;;;;;;;;17837:6;17814:19;;:29;;;;;;;:::i;:::-;;;;;;;;17905:7;17898:23;;;17914:6;17898:23;;;;;;:::i;:::-;;;;;;;;15895:2034;;15823:2106:::0;:::o;10487:20::-;;;;;;;;;;;;;:::o;10227:44::-;;;;:::o;9622:36::-;;;:::o;20555:224::-;20641:19;20753:18;;20700:14;:23;20715:7;20700:23;;;;;;;;;;;;;;;:37;;;:71;;;;:::i;:::-;20673:98;;20555:224;;;:::o;13317:430::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13480:1:::1;13454:23;:27;:92;;;;;13528:18;;13502:23;:44;13454:92;13432:241;;;;;;;;;;;;:::i;:::-;;;;;;;;;13733:6;13707:23;:32;;;;:::i;:::-;13684:20;:55;;;;13317:430:::0;:::o;15344:206::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;15436:5:::1;15424:17;;:8;;;;;;;;;;;:17;;::::0;15416:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15508:5;15497:8;;:16;;;;;;;;;;;;;;;;;;15529:13;15536:5;15529:13;;;;;;:::i;:::-;;;;;;;;15344:206:::0;:::o;10129:41::-;;;;:::o;9518:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9972:23::-;;;;:::o;5366:247::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;5489:1:::1;5469:22;;:8;:22;;::::0;5447:119:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5577:28;5596:8;5577:18;:28::i;:::-;5366:247:::0;:::o;12317:442::-;4490:10;4479:21;;:7;:5;:7::i;:::-;:21;;;4457:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;12471:1:::1;12448:20;:24;:86;;;;;12517:17;;12493:20;:41;;12448:86;12426:204;;;;;;;;;;;;:::i;:::-;;;;;;;;;12661:20;12641:17;:40;;;;12734:17;;12714;;:37;;;;:::i;:::-;12692:19;:59;;;;12317:442:::0;:::o;5773:191::-;5847:16;5866:6;;;;;;;;;;;5847:25;;5892:8;5883:6;;:17;;;;;;;;;;;;;;;;;;5947:8;5916:40;;5937:8;5916:40;;;;;;;;;;;;5836:128;5773:191;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:126;806:7;846:42;839:5;835:54;824:65;;769:126;;;:::o;901:96::-;938:7;967:24;985:5;967:24;:::i;:::-;956:35;;901:96;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:329::-;1335:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:119;;;1390:79;;:::i;:::-;1352:119;1510:1;1535:53;1580:7;1571:6;1560:9;1556:22;1535:53;:::i;:::-;1525:63;;1481:117;1276:329;;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:118::-;2306:24;2324:5;2306:24;:::i;:::-;2301:3;2294:37;2219:118;;:::o;2343:222::-;2436:4;2474:2;2463:9;2459:18;2451:26;;2487:71;2555:1;2544:9;2540:17;2531:6;2487:71;:::i;:::-;2343:222;;;;:::o;2571:90::-;2605:7;2648:5;2641:13;2634:21;2623:32;;2571:90;;;:::o;2667:116::-;2737:21;2752:5;2737:21;:::i;:::-;2730:5;2727:32;2717:60;;2773:1;2770;2763:12;2717:60;2667:116;:::o;2789:133::-;2832:5;2870:6;2857:20;2848:29;;2886:30;2910:5;2886:30;:::i;:::-;2789:133;;;;:::o;2928:468::-;2993:6;3001;3050:2;3038:9;3029:7;3025:23;3021:32;3018:119;;;3056:79;;:::i;:::-;3018:119;3176:1;3201:53;3246:7;3237:6;3226:9;3222:22;3201:53;:::i;:::-;3191:63;;3147:117;3303:2;3329:50;3371:7;3362:6;3351:9;3347:22;3329:50;:::i;:::-;3319:60;;3274:115;2928:468;;;;;:::o;3402:109::-;3483:21;3498:5;3483:21;:::i;:::-;3478:3;3471:34;3402:109;;:::o;3517:210::-;3604:4;3642:2;3631:9;3627:18;3619:26;;3655:65;3717:1;3706:9;3702:17;3693:6;3655:65;:::i;:::-;3517:210;;;;:::o;3733:60::-;3761:3;3782:5;3775:12;;3733:60;;;:::o;3799:142::-;3849:9;3882:53;3900:34;3909:24;3927:5;3909:24;:::i;:::-;3900:34;:::i;:::-;3882:53;:::i;:::-;3869:66;;3799:142;;;:::o;3947:126::-;3997:9;4030:37;4061:5;4030:37;:::i;:::-;4017:50;;3947:126;;;:::o;4079:139::-;4142:9;4175:37;4206:5;4175:37;:::i;:::-;4162:50;;4079:139;;;:::o;4224:157::-;4324:50;4368:5;4324:50;:::i;:::-;4319:3;4312:63;4224:157;;:::o;4387:248::-;4493:4;4531:2;4520:9;4516:18;4508:26;;4544:84;4625:1;4614:9;4610:17;4601:6;4544:84;:::i;:::-;4387:248;;;;:::o;4641:323::-;4697:6;4746:2;4734:9;4725:7;4721:23;4717:32;4714:119;;;4752:79;;:::i;:::-;4714:119;4872:1;4897:50;4939:7;4930:6;4919:9;4915:22;4897:50;:::i;:::-;4887:60;;4843:114;4641:323;;;;:::o;4970:553::-;5147:4;5185:3;5174:9;5170:19;5162:27;;5199:71;5267:1;5256:9;5252:17;5243:6;5199:71;:::i;:::-;5280:72;5348:2;5337:9;5333:18;5324:6;5280:72;:::i;:::-;5362;5430:2;5419:9;5415:18;5406:6;5362:72;:::i;:::-;5444;5512:2;5501:9;5497:18;5488:6;5444:72;:::i;:::-;4970:553;;;;;;;:::o;5529:169::-;5613:11;5647:6;5642:3;5635:19;5687:4;5682:3;5678:14;5663:29;;5529:169;;;;:::o;5704:228::-;5844:34;5840:1;5832:6;5828:14;5821:58;5913:11;5908:2;5900:6;5896:15;5889:36;5704:228;:::o;5938:366::-;6080:3;6101:67;6165:2;6160:3;6101:67;:::i;:::-;6094:74;;6177:93;6266:3;6177:93;:::i;:::-;6295:2;6290:3;6286:12;6279:19;;5938:366;;;:::o;6310:419::-;6476:4;6514:2;6503:9;6499:18;6491:26;;6563:9;6557:4;6553:20;6549:1;6538:9;6534:17;6527:47;6591:131;6717:4;6591:131;:::i;:::-;6583:139;;6310:419;;;:::o;6735:245::-;6875:34;6871:1;6863:6;6859:14;6852:58;6944:28;6939:2;6931:6;6927:15;6920:53;6735:245;:::o;6986:366::-;7128:3;7149:67;7213:2;7208:3;7149:67;:::i;:::-;7142:74;;7225:93;7314:3;7225:93;:::i;:::-;7343:2;7338:3;7334:12;7327:19;;6986:366;;;:::o;7358:419::-;7524:4;7562:2;7551:9;7547:18;7539:26;;7611:9;7605:4;7601:20;7597:1;7586:9;7582:17;7575:47;7639:131;7765:4;7639:131;:::i;:::-;7631:139;;7358:419;;;:::o;7783:180::-;7831:77;7828:1;7821:88;7928:4;7925:1;7918:15;7952:4;7949:1;7942:15;7969:410;8009:7;8032:20;8050:1;8032:20;:::i;:::-;8027:25;;8066:20;8084:1;8066:20;:::i;:::-;8061:25;;8121:1;8118;8114:9;8143:30;8161:11;8143:30;:::i;:::-;8132:41;;8322:1;8313:7;8309:15;8306:1;8303:22;8283:1;8276:9;8256:83;8233:139;;8352:18;;:::i;:::-;8233:139;8017:362;7969:410;;;;:::o;8385:180::-;8433:77;8430:1;8423:88;8530:4;8527:1;8520:15;8554:4;8551:1;8544:15;8571:185;8611:1;8628:20;8646:1;8628:20;:::i;:::-;8623:25;;8662:20;8680:1;8662:20;:::i;:::-;8657:25;;8701:1;8691:35;;8706:18;;:::i;:::-;8691:35;8748:1;8745;8741:9;8736:14;;8571:185;;;;:::o;8762:228::-;8902:34;8898:1;8890:6;8886:14;8879:58;8971:11;8966:2;8958:6;8954:15;8947:36;8762:228;:::o;8996:366::-;9138:3;9159:67;9223:2;9218:3;9159:67;:::i;:::-;9152:74;;9235:93;9324:3;9235:93;:::i;:::-;9353:2;9348:3;9344:12;9337:19;;8996:366;;;:::o;9368:419::-;9534:4;9572:2;9561:9;9557:18;9549:26;;9621:9;9615:4;9611:20;9607:1;9596:9;9592:17;9585:47;9649:131;9775:4;9649:131;:::i;:::-;9641:139;;9368:419;;;:::o;9793:220::-;9933:34;9929:1;9921:6;9917:14;9910:58;10002:3;9997:2;9989:6;9985:15;9978:28;9793:220;:::o;10019:366::-;10161:3;10182:67;10246:2;10241:3;10182:67;:::i;:::-;10175:74;;10258:93;10347:3;10258:93;:::i;:::-;10376:2;10371:3;10367:12;10360:19;;10019:366;;;:::o;10391:419::-;10557:4;10595:2;10584:9;10580:18;10572:26;;10644:9;10638:4;10634:20;10630:1;10619:9;10615:17;10608:47;10672:131;10798:4;10672:131;:::i;:::-;10664:139;;10391:419;;;:::o;10816:225::-;10956:34;10952:1;10944:6;10940:14;10933:58;11025:8;11020:2;11012:6;11008:15;11001:33;10816:225;:::o;11047:366::-;11189:3;11210:67;11274:2;11269:3;11210:67;:::i;:::-;11203:74;;11286:93;11375:3;11286:93;:::i;:::-;11404:2;11399:3;11395:12;11388:19;;11047:366;;;:::o;11419:419::-;11585:4;11623:2;11612:9;11608:18;11600:26;;11672:9;11666:4;11662:20;11658:1;11647:9;11643:17;11636:47;11700:131;11826:4;11700:131;:::i;:::-;11692:139;;11419:419;;;:::o;11844:227::-;11984:34;11980:1;11972:6;11968:14;11961:58;12053:10;12048:2;12040:6;12036:15;12029:35;11844:227;:::o;12077:366::-;12219:3;12240:67;12304:2;12299:3;12240:67;:::i;:::-;12233:74;;12316:93;12405:3;12316:93;:::i;:::-;12434:2;12429:3;12425:12;12418:19;;12077:366;;;:::o;12449:419::-;12615:4;12653:2;12642:9;12638:18;12630:26;;12702:9;12696:4;12692:20;12688:1;12677:9;12673:17;12666:47;12730:131;12856:4;12730:131;:::i;:::-;12722:139;;12449:419;;;:::o;12874:442::-;13023:4;13061:2;13050:9;13046:18;13038:26;;13074:71;13142:1;13131:9;13127:17;13118:6;13074:71;:::i;:::-;13155:72;13223:2;13212:9;13208:18;13199:6;13155:72;:::i;:::-;13237;13305:2;13294:9;13290:18;13281:6;13237:72;:::i;:::-;12874:442;;;;;;:::o;13322:137::-;13376:5;13407:6;13401:13;13392:22;;13423:30;13447:5;13423:30;:::i;:::-;13322:137;;;;:::o;13465:345::-;13532:6;13581:2;13569:9;13560:7;13556:23;13552:32;13549:119;;;13587:79;;:::i;:::-;13549:119;13707:1;13732:61;13785:7;13776:6;13765:9;13761:22;13732:61;:::i;:::-;13722:71;;13678:125;13465:345;;;;:::o;13816:229::-;13956:34;13952:1;13944:6;13940:14;13933:58;14025:12;14020:2;14012:6;14008:15;14001:37;13816:229;:::o;14051:366::-;14193:3;14214:67;14278:2;14273:3;14214:67;:::i;:::-;14207:74;;14290:93;14379:3;14290:93;:::i;:::-;14408:2;14403:3;14399:12;14392:19;;14051:366;;;:::o;14423:419::-;14589:4;14627:2;14616:9;14612:18;14604:26;;14676:9;14670:4;14666:20;14662:1;14651:9;14647:17;14640:47;14704:131;14830:4;14704:131;:::i;:::-;14696:139;;14423:419;;;:::o;14848:332::-;14969:4;15007:2;14996:9;14992:18;14984:26;;15020:71;15088:1;15077:9;15073:17;15064:6;15020:71;:::i;:::-;15101:72;15169:2;15158:9;15154:18;15145:6;15101:72;:::i;:::-;14848:332;;;;;:::o;15186:235::-;15326:34;15322:1;15314:6;15310:14;15303:58;15395:18;15390:2;15382:6;15378:15;15371:43;15186:235;:::o;15427:366::-;15569:3;15590:67;15654:2;15649:3;15590:67;:::i;:::-;15583:74;;15666:93;15755:3;15666:93;:::i;:::-;15784:2;15779:3;15775:12;15768:19;;15427:366;;;:::o;15799:419::-;15965:4;16003:2;15992:9;15988:18;15980:26;;16052:9;16046:4;16042:20;16038:1;16027:9;16023:17;16016:47;16080:131;16206:4;16080:131;:::i;:::-;16072:139;;15799:419;;;:::o;16224:191::-;16264:3;16283:20;16301:1;16283:20;:::i;:::-;16278:25;;16317:20;16335:1;16317:20;:::i;:::-;16312:25;;16360:1;16357;16353:9;16346:16;;16381:3;16378:1;16375:10;16372:36;;;16388:18;;:::i;:::-;16372:36;16224:191;;;;:::o;16421:222::-;16561:34;16557:1;16549:6;16545:14;16538:58;16630:5;16625:2;16617:6;16613:15;16606:30;16421:222;:::o;16649:366::-;16791:3;16812:67;16876:2;16871:3;16812:67;:::i;:::-;16805:74;;16888:93;16977:3;16888:93;:::i;:::-;17006:2;17001:3;16997:12;16990:19;;16649:366;;;:::o;17021:419::-;17187:4;17225:2;17214:9;17210:18;17202:26;;17274:9;17268:4;17264:20;17260:1;17249:9;17245:17;17238:47;17302:131;17428:4;17302:131;:::i;:::-;17294:139;;17021:419;;;:::o;17446:194::-;17486:4;17506:20;17524:1;17506:20;:::i;:::-;17501:25;;17540:20;17558:1;17540:20;:::i;:::-;17535:25;;17584:1;17581;17577:9;17569:17;;17608:1;17602:4;17599:11;17596:37;;;17613:18;;:::i;:::-;17596:37;17446:194;;;;:::o;17646:239::-;17786:34;17782:1;17774:6;17770:14;17763:58;17855:22;17850:2;17842:6;17838:15;17831:47;17646:239;:::o;17891:366::-;18033:3;18054:67;18118:2;18113:3;18054:67;:::i;:::-;18047:74;;18130:93;18219:3;18130:93;:::i;:::-;18248:2;18243:3;18239:12;18232:19;;17891:366;;;:::o;18263:419::-;18429:4;18467:2;18456:9;18452:18;18444:26;;18516:9;18510:4;18506:20;18502:1;18491:9;18487:17;18480:47;18544:131;18670:4;18544:131;:::i;:::-;18536:139;;18263:419;;;:::o;18688:238::-;18828:34;18824:1;18816:6;18812:14;18805:58;18897:21;18892:2;18884:6;18880:15;18873:46;18688:238;:::o;18932:366::-;19074:3;19095:67;19159:2;19154:3;19095:67;:::i;:::-;19088:74;;19171:93;19260:3;19171:93;:::i;:::-;19289:2;19284:3;19280:12;19273:19;;18932:366;;;:::o;19304:419::-;19470:4;19508:2;19497:9;19493:18;19485:26;;19557:9;19551:4;19547:20;19543:1;19532:9;19528:17;19521:47;19585:131;19711:4;19585:131;:::i;:::-;19577:139;;19304:419;;;:::o;19729:314::-;19869:34;19865:1;19857:6;19853:14;19846:58;19938:34;19933:2;19925:6;19921:15;19914:59;20007:28;20002:2;19994:6;19990:15;19983:53;19729:314;:::o;20049:366::-;20191:3;20212:67;20276:2;20271:3;20212:67;:::i;:::-;20205:74;;20288:93;20377:3;20288:93;:::i;:::-;20406:2;20401:3;20397:12;20390:19;;20049:366;;;:::o;20421:419::-;20587:4;20625:2;20614:9;20610:18;20602:26;;20674:9;20668:4;20664:20;20660:1;20649:9;20645:17;20638:47;20702:131;20828:4;20702:131;:::i;:::-;20694:139;;20421:419;;;:::o;20846:230::-;20986:34;20982:1;20974:6;20970:14;20963:58;21055:13;21050:2;21042:6;21038:15;21031:38;20846:230;:::o;21082:366::-;21224:3;21245:67;21309:2;21304:3;21245:67;:::i;:::-;21238:74;;21321:93;21410:3;21321:93;:::i;:::-;21439:2;21434:3;21430:12;21423:19;;21082:366;;;:::o;21454:419::-;21620:4;21658:2;21647:9;21643:18;21635:26;;21707:9;21701:4;21697:20;21693:1;21682:9;21678:17;21671:47;21735:131;21861:4;21735:131;:::i;:::-;21727:139;;21454:419;;;:::o;21879:245::-;22019:34;22015:1;22007:6;22003:14;21996:58;22088:28;22083:2;22075:6;22071:15;22064:53;21879:245;:::o;22130:366::-;22272:3;22293:67;22357:2;22352:3;22293:67;:::i;:::-;22286:74;;22369:93;22458:3;22369:93;:::i;:::-;22487:2;22482:3;22478:12;22471:19;;22130:366;;;:::o;22502:419::-;22668:4;22706:2;22695:9;22691:18;22683:26;;22755:9;22749:4;22745:20;22741:1;22730:9;22726:17;22719:47;22783:131;22909:4;22783:131;:::i;:::-;22775:139;;22502:419;;;:::o;22927:225::-;23067:34;23063:1;23055:6;23051:14;23044:58;23136:8;23131:2;23123:6;23119:15;23112:33;22927:225;:::o;23158:366::-;23300:3;23321:67;23385:2;23380:3;23321:67;:::i;:::-;23314:74;;23397:93;23486:3;23397:93;:::i;:::-;23515:2;23510:3;23506:12;23499:19;;23158:366;;;:::o;23530:419::-;23696:4;23734:2;23723:9;23719:18;23711:26;;23783:9;23777:4;23773:20;23769:1;23758:9;23754:17;23747:47;23811:131;23937:4;23811:131;:::i;:::-;23803:139;;23530:419;;;:::o;23955:226::-;24095:34;24091:1;24083:6;24079:14;24072:58;24164:9;24159:2;24151:6;24147:15;24140:34;23955:226;:::o;24187:366::-;24329:3;24350:67;24414:2;24409:3;24350:67;:::i;:::-;24343:74;;24426:93;24515:3;24426:93;:::i;:::-;24544:2;24539:3;24535:12;24528:19;;24187:366;;;:::o;24559:419::-;24725:4;24763:2;24752:9;24748:18;24740:26;;24812:9;24806:4;24802:20;24798:1;24787:9;24783:17;24776:47;24840:131;24966:4;24840:131;:::i;:::-;24832:139;;24559:419;;;:::o;24984:227::-;25124:34;25120:1;25112:6;25108:14;25101:58;25193:10;25188:2;25180:6;25176:15;25169:35;24984:227;:::o;25217:366::-;25359:3;25380:67;25444:2;25439:3;25380:67;:::i;:::-;25373:74;;25456:93;25545:3;25456:93;:::i;:::-;25574:2;25569:3;25565:12;25558:19;;25217:366;;;:::o;25589:419::-;25755:4;25793:2;25782:9;25778:18;25770:26;;25842:9;25836:4;25832:20;25828:1;25817:9;25813:17;25806:47;25870:131;25996:4;25870:131;:::i;:::-;25862:139;;25589:419;;;:::o;26014:233::-;26053:3;26076:24;26094:5;26076:24;:::i;:::-;26067:33;;26122:66;26115:5;26112:77;26109:103;;26192:18;;:::i;:::-;26109:103;26239:1;26232:5;26228:13;26221:20;;26014:233;;;:::o;26253:221::-;26393:34;26389:1;26381:6;26377:14;26370:58;26462:4;26457:2;26449:6;26445:15;26438:29;26253:221;:::o;26480:366::-;26622:3;26643:67;26707:2;26702:3;26643:67;:::i;:::-;26636:74;;26719:93;26808:3;26719:93;:::i;:::-;26837:2;26832:3;26828:12;26821:19;;26480:366;;;:::o;26852:419::-;27018:4;27056:2;27045:9;27041:18;27033:26;;27105:9;27099:4;27095:20;27091:1;27080:9;27076:17;27069:47;27133:131;27259:4;27133:131;:::i;:::-;27125:139;;26852:419;;;:::o;27277:360::-;27417:34;27413:1;27405:6;27401:14;27394:58;27486:34;27481:2;27473:6;27469:15;27462:59;27555:34;27550:2;27542:6;27538:15;27531:59;27624:5;27619:2;27611:6;27607:15;27600:30;27277:360;:::o;27643:367::-;27785:3;27806:67;27870:2;27865:3;27806:67;:::i;:::-;27799:74;;27882:93;27971:3;27882:93;:::i;:::-;28000:3;27995;27991:13;27984:20;;27643:367;;;:::o;28016:419::-;28182:4;28220:2;28209:9;28205:18;28197:26;;28269:9;28263:4;28259:20;28255:1;28244:9;28240:17;28233:47;28297:131;28423:4;28297:131;:::i;:::-;28289:139;;28016:419;;;:::o;28441:227::-;28581:34;28577:1;28569:6;28565:14;28558:58;28650:10;28645:2;28637:6;28633:15;28626:35;28441:227;:::o;28674:366::-;28816:3;28837:67;28901:2;28896:3;28837:67;:::i;:::-;28830:74;;28913:93;29002:3;28913:93;:::i;:::-;29031:2;29026:3;29022:12;29015:19;;28674:366;;;:::o;29046:419::-;29212:4;29250:2;29239:9;29235:18;29227:26;;29299:9;29293:4;29289:20;29285:1;29274:9;29270:17;29263:47;29327:131;29453:4;29327:131;:::i;:::-;29319:139;;29046:419;;;:::o;29471:234::-;29611:34;29607:1;29599:6;29595:14;29588:58;29680:17;29675:2;29667:6;29663:15;29656:42;29471:234;:::o;29711:366::-;29853:3;29874:67;29938:2;29933:3;29874:67;:::i;:::-;29867:74;;29950:93;30039:3;29950:93;:::i;:::-;30068:2;30063:3;30059:12;30052:19;;29711:366;;;:::o;30083:419::-;30249:4;30287:2;30276:9;30272:18;30264:26;;30336:9;30330:4;30326:20;30322:1;30311:9;30307:17;30300:47;30364:131;30490:4;30364:131;:::i;:::-;30356:139;;30083:419;;;:::o;30508:292::-;30648:34;30644:1;30636:6;30632:14;30625:58;30717:34;30712:2;30704:6;30700:15;30693:59;30786:6;30781:2;30773:6;30769:15;30762:31;30508:292;:::o;30806:366::-;30948:3;30969:67;31033:2;31028:3;30969:67;:::i;:::-;30962:74;;31045:93;31134:3;31045:93;:::i;:::-;31163:2;31158:3;31154:12;31147:19;;30806:366;;;:::o;31178:419::-;31344:4;31382:2;31371:9;31367:18;31359:26;;31431:9;31425:4;31421:20;31417:1;31406:9;31402:17;31395:47;31459:131;31585:4;31459:131;:::i;:::-;31451:139;;31178:419;;;:::o

Swarm Source

ipfs://a25ddfc6b02b1002d09e3519c4ad932bcfb593a80511eeddf85cdeb8348c7d69

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.