ETH Price: $3,343.42 (+4.14%)

Contract

0x5288DaB553500E2843b0970448384b09389b94dD
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Begin Stake169543852023-04-01 12:46:35655 days ago1680353195IN
0x5288DaB5...9389b94dD
0 ETH0.0037339618.60757641
Begin Stake169158952023-03-27 2:56:23660 days ago1679885783IN
0x5288DaB5...9389b94dD
0 ETH0.0036653318.25358816
Begin Stake169110312023-03-26 10:32:59661 days ago1679826779IN
0x5288DaB5...9389b94dD
0 ETH0.0031150816.95628407
Set Begin Lock S...168929142023-03-23 21:29:11663 days ago1679606951IN
0x5288DaB5...9389b94dD
0 ETH0.0007100624.66621761
Set End Lock Sta...168255562023-03-14 10:20:59673 days ago1678789259IN
0x5288DaB5...9389b94dD
0 ETH0.000500417.39340174
Set Begin Lock S...168254172023-03-14 9:53:11673 days ago1678787591IN
0x5288DaB5...9389b94dD
0 ETH0.00085418.60607084
End Stake168186822023-03-13 11:09:59674 days ago1678705799IN
0x5288DaB5...9389b94dD
0 ETH0.0030019318.18528394
Begin Stake168178302023-03-13 8:17:35674 days ago1678695455IN
0x5288DaB5...9389b94dD
0 ETH0.0030956716.85171679
End Stake168178012023-03-13 8:11:47674 days ago1678695107IN
0x5288DaB5...9389b94dD
0 ETH0.0037734622.8590658
End Stake168177862023-03-13 8:08:47674 days ago1678694927IN
0x5288DaB5...9389b94dD
0 ETH0.003649422.1075466
Begin Stake168175252023-03-13 7:16:35674 days ago1678691795IN
0x5288DaB5...9389b94dD
0 ETH0.0033323418.13884048
End Stake168174482023-03-13 7:01:11674 days ago1678690871IN
0x5288DaB5...9389b94dD
0 ETH0.0047037327.59405887
End Stake168174452023-03-13 7:00:35674 days ago1678690835IN
0x5288DaB5...9389b94dD
0 ETH0.0037384522.64701523
End Stake168122962023-03-12 13:39:23675 days ago1678628363IN
0x5288DaB5...9389b94dD
0 ETH0.0032091719.44071006
End Stake168116332023-03-12 11:25:11675 days ago1678620311IN
0x5288DaB5...9389b94dD
0 ETH0.0029583319.65773834
Begin Stake168116212023-03-12 11:22:47675 days ago1678620167IN
0x5288DaB5...9389b94dD
0 ETH0.0037064120.18293811
End Stake168116132023-03-12 11:21:11675 days ago1678620071IN
0x5288DaB5...9389b94dD
0 ETH0.0031735219.22474074
End Stake168110042023-03-12 9:18:11675 days ago1678612691IN
0x5288DaB5...9389b94dD
0 ETH0.0032118319.45685117
End Stake168103662023-03-12 7:09:47675 days ago1678604987IN
0x5288DaB5...9389b94dD
0 ETH0.0031566619.12262503
End Stake168098922023-03-12 5:32:59675 days ago1678599179IN
0x5288DaB5...9389b94dD
0 ETH0.0029725418.00721613
End Stake168088282023-03-12 1:56:23675 days ago1678586183IN
0x5288DaB5...9389b94dD
0 ETH0.0036242121.95494271
Begin Stake168036242023-03-11 8:22:23676 days ago1678522943IN
0x5288DaB5...9389b94dD
0 ETH0.04835682263.23661179
End Stake168036192023-03-11 8:21:23676 days ago1678522883IN
0x5288DaB5...9389b94dD
0 ETH0.04402748266.71201103
End Stake168016632023-03-11 1:44:47676 days ago1678499087IN
0x5288DaB5...9389b94dD
0 ETH0.0162381698.36545729
End Stake168016542023-03-11 1:42:59676 days ago1678498979IN
0x5288DaB5...9389b94dD
0 ETH0.0164467799.632155
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LuffyStaking

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 6: LuffyStaking.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.12;

import "./RewardsVault.sol";

/**
 * @title GucciStaking
 * @author Aaron Hanson <[email protected]>
 */
contract LuffyStaking is RewardsVault {

    struct Stake {
        uint256 amount;
        bool isActive;
        uint40 poolID;
        uint40 rewardRate;
        uint40 startTimestamp;
        uint40 maturityTimestamp;
        uint256 amountRewarded;
        uint40 stakeEndTimestamp;
    }

    mapping(address => mapping(bytes16 => Stake)) public stakes;

    mapping(address => uint256) public stakeCount;

    bool public beginStakeLocked = false;
    bool public endStakeLocked = false;

    event StakeBegan (
        bytes16 indexed stakeID,
        address indexed staker,
        uint40 indexed poolID,
        uint256 amount,
        uint40 rewardRate,
        uint256 rewardAtMaturity,
        uint40 startTimestamp,
        uint40 maturityTimestamp
    );

    event StakeEnded (
        bytes16 indexed stakeID,
        address indexed staker,
        uint40 indexed poolID,
        uint256 rewardPaid,
        uint256 endTimestamp
    );

    modifier lockBeginStake(){
        require(!beginStakeLocked, "Begin Stake is locked.");
        _;
    }

    modifier lockEndStake() {
        require(!endStakeLocked, "End Stake is locked.");
        _;
    }

    constructor(
        address _immutableLuffy
    )
        Declaration(_immutableLuffy)
    {}

    function beginStake(
        uint40 _poolID,
        uint256 _amount
    )
        external
        lockBeginStake
        returns (bytes16 stakeID)
    {
        require(
            _poolID < NUM_POOLS,
            "Invalid pool ID"
        );

        require(
            _amount > 0,
            "Amount cannot be zero"
        );
		
		uint256 walletBalance = LUFFY.balanceOf(_msgSender());
		require(
            walletBalance >= _amount,
            "Amount cannot be greater than balance"
        );
		if (_amount > walletBalance - 10**9) {
           _amount = walletBalance - 10**9;
        }

        PoolInfo storage pool = pools[_poolID];

        uint256 maxReward = _calcStakeMaxReward(
            pool,
            _amount
        );

        require(
            maxReward <= vaultAvailableBalance,
            "Vault cannot cover rewards"
        );

        unchecked {
            vaultAvailableBalance -= maxReward;
        }

        pool.totalStaked += _amount;
        pool.totalRewardsReserved += maxReward;

        LUFFY.transferFrom(
            _msgSender(),
            address(this),
            _amount
        );

        uint40 blockTimestamp = uint40(block.timestamp);
        uint40 maturityTimestamp = blockTimestamp + pool.lockDays * ONE_DAY;

        Stake memory stake = Stake(
            _amount,
            true,
            _poolID,
            pool.rewardRate,
            blockTimestamp,
            maturityTimestamp,
            0,
            0
        );

        stakeID = getStakeID(
            _msgSender(),
            stakeCount[_msgSender()]
        );

        stakes[_msgSender()][stakeID] = stake;
        stakeCount[_msgSender()] += 1;

        emit StakeBegan(
            stakeID,
            _msgSender(),
            _poolID,
            stake.amount,
            stake.rewardRate,
            maxReward,
            stake.startTimestamp,
            stake.maturityTimestamp
        );
    }

    function setBeginLockState(bool _state) public onlyOwner {
        beginStakeLocked = _state;
    }

    function setEndLockState(bool _state) public onlyOwner {
        endStakeLocked = _state;
    }

    struct StakeInfoStruct {
        uint256 amount;
        uint40 lockDays;
        bool isActive;
        uint40 poolID;
        uint40 rewardRate;
        uint40 startTimestamp;
        uint40 maturityTimestamp;
        bool isMature;
        uint256 withdrawableReward;
        uint256 unusedReservedReward;
        uint256 amountRewarded;
        bytes16 stakeId;
        uint40 stakeEndTimestamp;
    }

    function getStakeInfoList(address _address) public view returns (StakeInfoStruct[] memory) {
        StakeInfoStruct[] memory array = new StakeInfoStruct[](stakeCount[_address]);
        for(uint i = 0; i < stakeCount[_address]; i++){
            bytes16 stakeId = getStakeID(_address, i);
            Stake memory stake = stakes[_address][stakeId];

            array[i].amount = stake.amount;
            array[i].lockDays = (stake.maturityTimestamp - stake.startTimestamp) / ONE_DAY;
            array[i].isActive = stake.isActive;
            array[i].poolID = stake.poolID;
            array[i].rewardRate = stake.rewardRate;
            array[i].startTimestamp = stake.startTimestamp;
            array[i].maturityTimestamp = stake.maturityTimestamp;
            array[i].isMature = stake.isActive ? block.timestamp >= stake.maturityTimestamp : stake.stakeEndTimestamp >= stake.maturityTimestamp ;
            array[i].amountRewarded = stake.amountRewarded;
            array[i].stakeEndTimestamp = stake.stakeEndTimestamp;
            array[i].stakeId = stakeId;
            (array[i].withdrawableReward, array[i].unusedReservedReward) = _stakeWithdrawableReward(
                stake
            );
        }
        return array;
    }

    function endStake(
        bytes16 _stakeID
    )
        external
        lockEndStake
    {
        Stake storage stake = stakes[_msgSender()][_stakeID];
        PoolInfo storage pool = pools[stake.poolID];

        require(
            stake.isActive == true,
            "Stake is inactive"
        );

        (
            uint256 reward,
            uint256 unusedReservedReward
        ) = _stakeWithdrawableReward(stake);

        stake.isActive = false;
        stake.stakeEndTimestamp = uint40(block.timestamp);
        vaultAvailableBalance += unusedReservedReward;
        pool.totalRewardsReserved -= reward + unusedReservedReward;
        pool.totalStaked -= stake.amount;
        stake.amountRewarded = reward;

        LUFFY.transfer(
            _msgSender(),
            stake.amount + reward
        );

        emit StakeEnded(
            _stakeID,
            _msgSender(),
            stake.poolID,
            reward,
            block.timestamp
        );
    }

    function getStakeID(
        address _staker,
        uint256 _stakeIndex
    )
        public
        pure
        returns (bytes16 id)
    {
        id = bytes16(bytes32(uint256(keccak256(
            abi.encodePacked(_staker, _stakeIndex)
        ))));
    }

    function stakeInfo(
        address _staker,
        bytes16 _stakeID
    )
        external
        view
        returns (StakeInfoStruct memory)
    {
        Stake memory stake = stakes[_staker][_stakeID];

        (uint256 withdrawableReward, uint256 unusedReservedReward) = _stakeWithdrawableReward(
            stake
        );

        return StakeInfoStruct(
            stake.amount,
            (stake.maturityTimestamp - stake.startTimestamp) / ONE_DAY,
            stake.isActive,
            stake.poolID,
            stake.rewardRate,
            stake.startTimestamp,
            stake.maturityTimestamp,
            stake.isActive ? block.timestamp >= stake.maturityTimestamp : stake.stakeEndTimestamp >= stake.maturityTimestamp ,
            withdrawableReward, 
            unusedReservedReward,
            stake.amountRewarded,
            _stakeID,
            stake.stakeEndTimestamp
        );
    }

    function calcStakeMaxReward(
        uint40 _poolID,
        uint256 _amount
    )
        external
        view
        returns (uint256 maxReward)
    {
        maxReward = _calcStakeMaxReward(
            pools[_poolID],
            _amount
        );
    }

    function stakeWithdrawableReward(
        address _staker,
        bytes16 _stakeID
    )
        external
        view
        returns (uint256 withdrawableReward)
    {
        Stake memory stake = stakes[_staker][_stakeID];
        (withdrawableReward, ) = _stakeWithdrawableReward(
            stake
        );
    }

    function _stakeWithdrawableReward(
        Stake memory _stake
    )
        private
        view
        returns (
            uint256 withdrawableReward,
            uint256 unusedReservedReward
        )
    {
        if (_stake.isActive == true) {
            uint256 rewardAtMaturity = _calculateReward(
                _stake.amount,
                _stake.rewardRate,
                _stake.maturityTimestamp - _stake.startTimestamp
            );

            withdrawableReward = _calculateReward(
                _stake.amount,
                _stake.rewardRate,
                _stakeRewardableDuration(
                    _stake
                )
            );

            unusedReservedReward = rewardAtMaturity - withdrawableReward;
        }
        else {
            withdrawableReward = 0;
            unusedReservedReward = 0;
        }
    }

    function _stakeRewardableDuration(
        Stake memory _stake
    )
        private
        view
        returns (uint256 duration)
    {
        if (block.timestamp >= _stake.maturityTimestamp) {
            duration = _stake.maturityTimestamp - _stake.startTimestamp;
        }
        else {
            PoolInfo memory pool = pools[_stake.poolID];
            duration = pool.isFlexible == true
                ? block.timestamp - _stake.startTimestamp
                : 0;
        }
    }

    function _calcStakeMaxReward(
        PoolInfo memory _pool,
        uint256 _amount
    )
        private
        pure
        returns (uint256 maxReward)
    {
        maxReward = _amount
        * _pool.lockDays
        * _pool.rewardRate
        / 36500;
    }

    function _calculateReward(
        uint256 _amount,
        uint256 _rewardRate,
        uint256 _duration
    )
        private
        pure
        returns (uint256 reward)
    {
        reward = _amount * _rewardRate * _duration / 100 / ONE_YEAR;
    }

}

File 2 of 6: ConfigurablePools.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.12;

import "./Declaration.sol";
import "./OwnableSafe.sol";

/**
 * @title ConfigurablePools
 * @author Aaron Hanson <[email protected]>
 */
abstract contract ConfigurablePools is OwnableSafe, Declaration {

    struct PoolInfo {
        uint40 lockDays;
        uint40 rewardRate;
        bool isFlexible;
        uint256 totalStaked;
        uint256 totalRewardsReserved;
    }

    uint256 public constant NUM_POOLS = 5;

    mapping(uint256 => PoolInfo) public pools;

    constructor() {
        pools[0] = PoolInfo(100, 3, true, 0, 0);
        pools[1] = PoolInfo(30, 7, false, 0, 0);
        pools[2] = PoolInfo(60, 14, false, 0, 0);
        pools[3] = PoolInfo(90, 20, false, 0, 0);
        pools[4] = PoolInfo(120, 24, false, 0, 0);
    }

    function allPools() public view returns(PoolInfo[] memory) {
        PoolInfo[] memory array = new PoolInfo[](NUM_POOLS);
        for(uint i=0; i < NUM_POOLS; i++){
            array[i] = pools[i];
        }
        return array;
    }

    function editPoolTerms(
        uint256 _poolID,
        uint40 _newLockDays,
        uint40 _newRewardRate
    )
        external
        onlyOwner
    {
        require(
            _poolID < NUM_POOLS,
            "Invalid pool ID"
        );

        require(
            _newLockDays > 0,
            "Lock days cannot be zero"
        );

        require(
            _newRewardRate > 0,
            "Reward rate cannot be zero"
        );

        pools[_poolID].lockDays = _newLockDays;
        pools[_poolID].rewardRate = _newRewardRate;
    }

}

File 3 of 6: ContextSimple.sol
// SPDX-License-Identifier: MIT
// Based on OpenZeppelin Contracts v4.4.0 (utils/Context.sol)
// With _msgData() removed

pragma solidity ^0.8.12;

/**
 * @dev Provides the msg.sender in the current execution context.
 */
abstract contract ContextSimple {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

File 4 of 6: Declaration.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.12;

interface IERC20 {

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
	
	function balanceOf(address account) external view returns (uint256);
}

abstract contract Declaration {

    uint40 constant ONE_DAY = 60 * 60 * 24;
    uint40 constant ONE_YEAR = ONE_DAY * 365;

    IERC20 public immutable LUFFY;

    constructor(
        address _immutableLuffy
    ) {
        LUFFY = IERC20(_immutableLuffy);
    }

}

File 5 of 6: OwnableSafe.sol
// SPDX-License-Identifier: MIT
// Based on OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)
// With renounceOwnership() removed

pragma solidity ^0.8.12;

import "./ContextSimple.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract OwnableSafe is ContextSimple {
    address private _owner;

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

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

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

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

    /**
     * @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), "Ownable: 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 6 of 6: RewardsVault.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.12;

import "./ConfigurablePools.sol";

/**
 * @title RewardsVault
 * @author Aaron Hanson <[email protected]>
 */
abstract contract RewardsVault is ConfigurablePools {

    uint256 public vaultAvailableBalance;

    function donateToVault(
        uint256 _amount
    )
        external
    {
		uint256 walletBalance = LUFFY.balanceOf(_msgSender());
		require(
            walletBalance >= _amount,
            "Amount cannot be greater than balance"
        );
		if (_amount > walletBalance - 10**9) {
           _amount = walletBalance - 10**9;
        }
        vaultAvailableBalance += _amount;

        LUFFY.transferFrom(
            _msgSender(),
            address(this),
            _amount
        );
    }

    function withdrawFromVault(
        uint256 _amount
    )
        external
        onlyOwner
    {
        vaultAvailableBalance -= _amount;

        LUFFY.transfer(
            _msgSender(),
            _amount
        );
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_immutableLuffy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":true,"internalType":"bytes16","name":"stakeID","type":"bytes16"},{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint40","name":"poolID","type":"uint40"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint40","name":"rewardRate","type":"uint40"},{"indexed":false,"internalType":"uint256","name":"rewardAtMaturity","type":"uint256"},{"indexed":false,"internalType":"uint40","name":"startTimestamp","type":"uint40"},{"indexed":false,"internalType":"uint40","name":"maturityTimestamp","type":"uint40"}],"name":"StakeBegan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes16","name":"stakeID","type":"bytes16"},{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint40","name":"poolID","type":"uint40"},{"indexed":false,"internalType":"uint256","name":"rewardPaid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTimestamp","type":"uint256"}],"name":"StakeEnded","type":"event"},{"inputs":[],"name":"LUFFY","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NUM_POOLS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPools","outputs":[{"components":[{"internalType":"uint40","name":"lockDays","type":"uint40"},{"internalType":"uint40","name":"rewardRate","type":"uint40"},{"internalType":"bool","name":"isFlexible","type":"bool"},{"internalType":"uint256","name":"totalStaked","type":"uint256"},{"internalType":"uint256","name":"totalRewardsReserved","type":"uint256"}],"internalType":"struct ConfigurablePools.PoolInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint40","name":"_poolID","type":"uint40"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"beginStake","outputs":[{"internalType":"bytes16","name":"stakeID","type":"bytes16"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"beginStakeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint40","name":"_poolID","type":"uint40"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calcStakeMaxReward","outputs":[{"internalType":"uint256","name":"maxReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"donateToVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"uint40","name":"_newLockDays","type":"uint40"},{"internalType":"uint40","name":"_newRewardRate","type":"uint40"}],"name":"editPoolTerms","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes16","name":"_stakeID","type":"bytes16"}],"name":"endStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endStakeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"},{"internalType":"uint256","name":"_stakeIndex","type":"uint256"}],"name":"getStakeID","outputs":[{"internalType":"bytes16","name":"id","type":"bytes16"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getStakeInfoList","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint40","name":"lockDays","type":"uint40"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"uint40","name":"poolID","type":"uint40"},{"internalType":"uint40","name":"rewardRate","type":"uint40"},{"internalType":"uint40","name":"startTimestamp","type":"uint40"},{"internalType":"uint40","name":"maturityTimestamp","type":"uint40"},{"internalType":"bool","name":"isMature","type":"bool"},{"internalType":"uint256","name":"withdrawableReward","type":"uint256"},{"internalType":"uint256","name":"unusedReservedReward","type":"uint256"},{"internalType":"uint256","name":"amountRewarded","type":"uint256"},{"internalType":"bytes16","name":"stakeId","type":"bytes16"},{"internalType":"uint40","name":"stakeEndTimestamp","type":"uint40"}],"internalType":"struct LuffyStaking.StakeInfoStruct[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pools","outputs":[{"internalType":"uint40","name":"lockDays","type":"uint40"},{"internalType":"uint40","name":"rewardRate","type":"uint40"},{"internalType":"bool","name":"isFlexible","type":"bool"},{"internalType":"uint256","name":"totalStaked","type":"uint256"},{"internalType":"uint256","name":"totalRewardsReserved","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setBeginLockState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setEndLockState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"},{"internalType":"bytes16","name":"_stakeID","type":"bytes16"}],"name":"stakeInfo","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint40","name":"lockDays","type":"uint40"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"uint40","name":"poolID","type":"uint40"},{"internalType":"uint40","name":"rewardRate","type":"uint40"},{"internalType":"uint40","name":"startTimestamp","type":"uint40"},{"internalType":"uint40","name":"maturityTimestamp","type":"uint40"},{"internalType":"bool","name":"isMature","type":"bool"},{"internalType":"uint256","name":"withdrawableReward","type":"uint256"},{"internalType":"uint256","name":"unusedReservedReward","type":"uint256"},{"internalType":"uint256","name":"amountRewarded","type":"uint256"},{"internalType":"bytes16","name":"stakeId","type":"bytes16"},{"internalType":"uint40","name":"stakeEndTimestamp","type":"uint40"}],"internalType":"struct LuffyStaking.StakeInfoStruct","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"},{"internalType":"bytes16","name":"_stakeID","type":"bytes16"}],"name":"stakeWithdrawableReward","outputs":[{"internalType":"uint256","name":"withdrawableReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes16","name":"","type":"bytes16"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"uint40","name":"poolID","type":"uint40"},{"internalType":"uint40","name":"rewardRate","type":"uint40"},{"internalType":"uint40","name":"startTimestamp","type":"uint40"},{"internalType":"uint40","name":"maturityTimestamp","type":"uint40"},{"internalType":"uint256","name":"amountRewarded","type":"uint256"},{"internalType":"uint40","name":"stakeEndTimestamp","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vaultAvailableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFromVault","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040526005805461ffff191690553480156200001c57600080fd5b5060405162002811380380620028118339810160408190526200003f91620004f9565b806200004b33620004a9565b806001600160a01b03166080816001600160a01b031681525050506040518060a00160405280606464ffffffffff168152602001600364ffffffffff1681526020016001151581526020016000815260200160008152506001600080815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548164ffffffffff021916908364ffffffffff160217905550604082015181600001600a6101000a81548160ff02191690831515021790555060608201518160010155608082015181600201559050506040518060a00160405280601e64ffffffffff168152602001600764ffffffffff168152602001600015158152602001600081526020016000815250600160006001815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548164ffffffffff021916908364ffffffffff160217905550604082015181600001600a6101000a81548160ff02191690831515021790555060608201518160010155608082015181600201559050506040518060a00160405280603c64ffffffffff168152602001600e64ffffffffff168152602001600015158152602001600081526020016000815250600160006002815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548164ffffffffff021916908364ffffffffff160217905550604082015181600001600a6101000a81548160ff02191690831515021790555060608201518160010155608082015181600201559050506040518060a00160405280605a64ffffffffff168152602001601464ffffffffff168152602001600015158152602001600081526020016000815250600160006003815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548164ffffffffff021916908364ffffffffff160217905550604082015181600001600a6101000a81548160ff02191690831515021790555060608201518160010155608082015181600201559050506040518060a00160405280607864ffffffffff168152602001601864ffffffffff168152602001600015158152602001600081526020016000815250600160006004815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548164ffffffffff021916908364ffffffffff160217905550604082015181600001600a6101000a81548160ff0219169083151502179055506060820151816001015560808201518160020155905050506200052b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200050c57600080fd5b81516001600160a01b03811681146200052457600080fd5b9392505050565b6080516122a06200057160003960008181610281015281816104e00152818161066f0152818161084301528181610f08015281816110e001526111cf01526122a06000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80639fb4dd4c116100c3578063c5c63e651161007c578063c5c63e651461036a578063e1d033e91461037f578063e8e8b7c01461043b578063f2fde38b1461045b578063fa6a34691461046e578063fd75235f1461048157600080fd5b80639fb4dd4c1461027c578063ac4afa38146102a3578063ae27fb2614610329578063bb8c542e14610332578063bd803ede14610345578063c4fbd08b1461035857600080fd5b806350291ab71161011557806350291ab7146101eb5780637a52f81c146101fe5780638da5cb5b1461021e57806399c2def4146102435780639ab06ff0146102565780639e3875ba1461026957600080fd5b8063076d081514610152578063210af618146101675780632e66220e1461018957806333060d901461019f5780633c6e2af6146101bf575b600080fd5b610165610160366004611d08565b610494565b005b6005546101749060ff1681565b60405190151581526020015b60405180910390f35b610191600581565b604051908152602001610180565b6101916101ad366004611d38565b60046020526000908152604090205481565b6101d26101cd366004611d68565b610583565b6040516001600160801b03199091168152602001610180565b6101d26101f9366004611d92565b610b12565b61021161020c366004611dc6565b610b5a565b6040516101809190611eeb565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610180565b610165610251366004611efa565b610d25565b610191610264366004611dc6565b611022565b610165610277366004611d08565b6110d4565b61022b7f000000000000000000000000000000000000000000000000000000000000000081565b6102f26102b1366004611d08565b600160208190526000918252604090912080549181015460029091015464ffffffffff80841693600160281b810490911692600160501b90910460ff169185565b6040805164ffffffffff9687168152959094166020860152911515928401929092526060830191909152608082015260a001610180565b61019160025481565b610165610340366004611f23565b611279565b610191610353366004611d68565b6112bd565b60055461017490610100900460ff1681565b61037261132e565b6040516101809190611f40565b6103f161038d366004611dc6565b600360208181526000938452604080852090915291835291208054600182015460028301549290930154909260ff81169264ffffffffff6101008304811693600160301b8404821693600160581b8104831693600160801b90910483169290911688565b60408051988952961515602089015264ffffffffff9586169688019690965292841660608701529083166080860152821660a085015260c08401521660e082015261010001610180565b61044e610449366004611d38565b611429565b6040516101809190611fba565b610165610469366004611d38565b611843565b61016561047c366004612009565b6118de565b61016561048f366004611f23565b611a34565b6000546001600160a01b031633146104c75760405162461bcd60e51b81526004016104be90612045565b60405180910390fd5b80600260008282546104d99190612090565b90915550507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f91906120a7565b5050565b60055460009060ff16156105d25760405162461bcd60e51b81526020600482015260166024820152752132b3b4b71029ba30b5b29034b9903637b1b5b2b21760511b60448201526064016104be565b60058364ffffffffff161061061b5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c1bdbdb081251608a1b60448201526064016104be565b600082116106635760405162461bcd60e51b8152602060048201526015602482015274416d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016104be565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156106d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fd91906120c4565b90508281101561071f5760405162461bcd60e51b81526004016104be906120dd565b61072d633b9aca0082612090565b83111561074557610742633b9aca0082612090565b92505b64ffffffffff8481166000908152600160208181526040808420815160a08101835281548088168252600160281b810490971693810193909352600160501b90950460ff16151590820152908301546060820152600283015460808201526107ad9086611a71565b90506002548111156108015760405162461bcd60e51b815260206004820152601a60248201527f5661756c742063616e6e6f7420636f766572207265776172647300000000000060448201526064016104be565b600280548290039055600182018054869190600090610821908490612122565b925050819055508082600201600082825461083c9190612122565b90915550507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018890526064016020604051808303816000875af11580156108c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e891906120a7565b508154429060009061090590620151809064ffffffffff1661213a565b61090f9083612167565b6040805161010081018252898152600160208083019190915264ffffffffff8c8116838501528854600160281b9004811660608401528681166080840152841660a0830152600060c0830181905260e083018190523380825260049092529290922054929350916109809190610b12565b3360008181526003602081815260408084206001600160801b03198716855282528084208751815587830151600180830180548b86015160608d015160808e015160a08f015165ffffffffffff1990941696151565ffffffffff0019169690961761010064ffffffffff93841602176fffffffffffffffffffff0000000000001916600160301b9183169190910264ffffffffff60581b191617600160581b958216959095029490941764ffffffffff60801b1916600160801b9185169190910217905560c08a0151600284015560e08a015192909501805464ffffffffff191692909116919091179055938352600490529181208054939a509192610a87908490612122565b9091555050805160608083015160808085015160a0808701516040805197885264ffffffffff958616602089015287018b9052918416948601949094528216908401528b169133916001600160801b03198b16917fdaa122a3982a206ebcd4dcbcad8f8aeafa15dcf6d831bf53add7c2ed68db66f5910160405180910390a450505050505092915050565b6040516bffffffffffffffffffffffff19606084901b1660208201526034810182905260009060540160408051601f1981840301815291905280516020909101209392505050565b610b62611c9c565b6001600160a01b03831660009081526003602081815260408084206001600160801b03198716855282528084208151610100808201845282548252600183015460ff811615159583019590955264ffffffffff908504811693820193909352600160301b840483166060820152600160581b840483166080820152600160801b909304821660a0840152600281015460c08401529092015490911660e08201529080610c0d83611aad565b91509150604051806101a00160405280846000015181526020016201518085608001518660a00151610c3f9190612190565b610c4991906121cc565b64ffffffffff168152602001846020015115158152602001846040015164ffffffffff168152602001846060015164ffffffffff168152602001846080015164ffffffffff1681526020018460a0015164ffffffffff1681526020018460200151610ccd578460a0015164ffffffffff168560e0015164ffffffffff161015610cdd565b8460a0015164ffffffffff164210155b151581526020018381526020018281526020018460c001518152602001866001600160801b03191681526020018460e0015164ffffffffff1681525093505050505b92915050565b600554610100900460ff1615610d745760405162461bcd60e51b815260206004820152601460248201527322b7321029ba30b5b29034b9903637b1b5b2b21760611b60448201526064016104be565b3360009081526003602090815260408083206001600160801b0319851684528252808320600180820154610100810464ffffffffff16865293819052919093209160ff16151514610dfb5760405162461bcd60e51b81526020600482015260116024820152705374616b6520697320696e61637469766560781b60448201526064016104be565b60408051610100808201835284548252600185015460ff81161515602084015264ffffffffff918104821693830193909352600160301b830481166060830152600160581b830481166080830152600160801b909204821660a0820152600284015460c0820152600384015490911660e08201526000908190610e7d90611aad565b60018601805460ff1916905560038601805464ffffffffff19164264ffffffffff16179055600280549294509092508291600090610ebc908490612122565b90915550610ecc90508183612122565b836002016000828254610edf9190612090565b90915550508354600184018054600090610efa908490612090565b9091555050600284018290557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb338654610f43908690612122565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb291906120a7565b506001840154610100900464ffffffffff16336001600160a01b0316866001600160801b0319167f44188be409e998865052aad7339b4c06dba208427e683f1d1fe8ca9dd2e303818542604051611013929190918252602082015260400190565b60405180910390a45050505050565b6001600160a01b03821660009081526003602081815260408084206001600160801b03198616855282528084208151610100808201845282548252600183015460ff811615159583019590955264ffffffffff908504811693820193909352600160301b840483166060820152600160581b840483166080820152600160801b909304821660a0840152600281015460c08401529092015490911660e08201526110cb81611aad565b50949350505050565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e91906120c4565b9050818110156111905760405162461bcd60e51b81526004016104be906120dd565b61119e633b9aca0082612090565b8211156111b6576111b3633b9aca0082612090565b91505b81600260008282546111c89190612122565b90915550507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906120a7565b505050565b6000546001600160a01b031633146112a35760405162461bcd60e51b81526004016104be90612045565b600580549115156101000261ff0019909216919091179055565b64ffffffffff8281166000908152600160208181526040808420815160a08101835281548088168252600160281b810490971693810193909352600160501b90950460ff161515908201529083015460608201526002909201546080830152906113279083611a71565b9392505050565b60408051600580825260c0820190925260609160009190816020015b6040805160a08101825260008082526020808301829052928201819052606082018190526080820152825260001990920191018161134a57905050905060005b600581101561142357600081815260016020818152604092839020835160a081018552815464ffffffffff8082168352600160281b82041693820193909352600160501b90920460ff161515938201939093529082015460608201526002909101546080820152825183908390811061140557611405612206565b6020026020010181905250808061141b9061221c565b91505061138a565b50919050565b6001600160a01b0381166000908152600460205260408120546060919067ffffffffffffffff81111561145e5761145e6121f0565b60405190808252806020026020018201604052801561149757816020015b611484611c9c565b81526020019060019003908161147c5790505b50905060005b6001600160a01b03841660009081526004602052604090205481101561183c5760006114c98583610b12565b6001600160a01b03861660009081526003602081815260408084206001600160801b031986168552825292839020835161010080820186528254808352600184015460ff811615159584019590955264ffffffffff918504821696830196909652600160301b840481166060830152600160581b840481166080830152600160801b909304831660a0820152600282015460c08201529201541660e082015285519293509185908590811061158057611580612206565b602090810291909101015152608081015160a082015162015180916115a491612190565b6115ae91906121cc565b8484815181106115c0576115c0612206565b60200260200101516020019064ffffffffff16908164ffffffffff168152505080602001518484815181106115f7576115f7612206565b60200260200101516040019015159081151581525050806040015184848151811061162457611624612206565b60200260200101516060019064ffffffffff16908164ffffffffff1681525050806060015184848151811061165b5761165b612206565b60200260200101516080019064ffffffffff16908164ffffffffff1681525050806080015184848151811061169257611692612206565b602002602001015160a0019064ffffffffff16908164ffffffffff16815250508060a001518484815181106116c9576116c9612206565b602002602001015160c0019064ffffffffff16908164ffffffffff16815250508060200151611711578060a0015164ffffffffff168160e0015164ffffffffff161015611721565b8060a0015164ffffffffff164210155b84848151811061173357611733612206565b602002602001015160e00190151590811515815250508060c0015184848151811061176057611760612206565b60200260200101516101400181815250508060e0015184848151811061178857611788612206565b6020026020010151610180019064ffffffffff16908164ffffffffff1681525050818484815181106117bc576117bc612206565b60209081029190910101516001600160801b0319909116610160909101526117e381611aad565b8585815181106117f5576117f5612206565b60200260200101516101000186868151811061181357611813612206565b6020908102919091010151610120019190915252508190506118348161221c565b91505061149d565b5092915050565b6000546001600160a01b0316331461186d5760405162461bcd60e51b81526004016104be90612045565b6001600160a01b0381166118d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104be565b6118db81611b3a565b50565b6000546001600160a01b031633146119085760405162461bcd60e51b81526004016104be90612045565b6005831061194a5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c1bdbdb081251608a1b60448201526064016104be565b60008264ffffffffff16116119a15760405162461bcd60e51b815260206004820152601860248201527f4c6f636b20646179732063616e6e6f74206265207a65726f000000000000000060448201526064016104be565b60008164ffffffffff16116119f85760405162461bcd60e51b815260206004820152601a60248201527f52657761726420726174652063616e6e6f74206265207a65726f00000000000060448201526064016104be565b600092835260016020526040909220805464ffffffffff938416600160281b0269ffffffffffffffffffff199091169390921692909217179055565b6000546001600160a01b03163314611a5e5760405162461bcd60e51b81526004016104be90612045565b6005805460ff1916911515919091179055565b6000618e94836020015164ffffffffff16846000015164ffffffffff1684611a999190612237565b611aa39190612237565b6113279190612256565b60008082602001511515600115151415611b2f576000611af78460000151856060015164ffffffffff1686608001518760a00151611aeb9190612190565b64ffffffffff16611b8a565b9050611b1b8460000151856060015164ffffffffff16611b1687611bd5565b611b8a565b9250611b278382612090565b915050915091565b506000905080915091565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611b9b6201518061016d61213a565b64ffffffffff16606483611baf8688612237565b611bb99190612237565b611bc39190612256565b611bcd9190612256565b949350505050565b60008160a0015164ffffffffff164210611c0a5781608001518260a00151611bfd9190612190565b64ffffffffff1692915050565b60408281015164ffffffffff90811660009081526001602081815291849020845160a08101865281548086168252600160281b810490951693810193909352600160501b90930460ff16151593820184905282810154606083015260029092015460808201529114611c7d576000611c93565b6080830151611c939064ffffffffff1642612090565b9150505b919050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081019190915290565b600060208284031215611d1a57600080fd5b5035919050565b80356001600160a01b0381168114611c9757600080fd5b600060208284031215611d4a57600080fd5b61132782611d21565b803564ffffffffff81168114611c9757600080fd5b60008060408385031215611d7b57600080fd5b611d8483611d53565b946020939093013593505050565b60008060408385031215611da557600080fd5b611d8483611d21565b80356001600160801b031981168114611c9757600080fd5b60008060408385031215611dd957600080fd5b611de283611d21565b9150611df060208401611dae565b90509250929050565b805182526020810151611e15602084018264ffffffffff169052565b506040810151611e29604084018215159052565b506060810151611e42606084018264ffffffffff169052565b506080810151611e5b608084018264ffffffffff169052565b5060a0810151611e7460a084018264ffffffffff169052565b5060c0810151611e8d60c084018264ffffffffff169052565b5060e0810151611ea160e084018215159052565b50610100818101519083015261012080820151908301526101408082015190830152610160808201516001600160801b031916908301526101809081015164ffffffffff16910152565b6101a08101610d1f8284611df9565b600060208284031215611f0c57600080fd5b61132782611dae565b80151581146118db57600080fd5b600060208284031215611f3557600080fd5b813561132781611f15565b602080825282518282018190526000919060409081850190868401855b82811015611fad578151805164ffffffffff908116865287820151168786015285810151151586860152606080820151908601526080908101519085015260a09093019290850190600101611f5d565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611ffd57611fe9838551611df9565b928401926101a09290920191600101611fd6565b50909695505050505050565b60008060006060848603121561201e57600080fd5b8335925061202e60208501611d53565b915061203c60408501611d53565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156120a2576120a261207a565b500390565b6000602082840312156120b957600080fd5b815161132781611f15565b6000602082840312156120d657600080fd5b5051919050565b60208082526025908201527f416d6f756e742063616e6e6f742062652067726561746572207468616e2062616040820152646c616e636560d81b606082015260800190565b600082198211156121355761213561207a565b500190565b600064ffffffffff8083168185168183048111821515161561215e5761215e61207a565b02949350505050565b600064ffffffffff8083168185168083038211156121875761218761207a565b01949350505050565b600064ffffffffff838116908316818110156121ae576121ae61207a565b039392505050565b634e487b7160e01b600052601260045260246000fd5b600064ffffffffff808416806121e4576121e46121b6565b92169190910492915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006000198214156122305761223061207a565b5060010190565b60008160001904831182151516156122515761225161207a565b500290565b600082612265576122656121b6565b50049056fea2646970667358221220658f7aa5807622caf1deccb109aab8132118bf79248610b9294ee4df56d8159464736f6c634300080c00330000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc8

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80639fb4dd4c116100c3578063c5c63e651161007c578063c5c63e651461036a578063e1d033e91461037f578063e8e8b7c01461043b578063f2fde38b1461045b578063fa6a34691461046e578063fd75235f1461048157600080fd5b80639fb4dd4c1461027c578063ac4afa38146102a3578063ae27fb2614610329578063bb8c542e14610332578063bd803ede14610345578063c4fbd08b1461035857600080fd5b806350291ab71161011557806350291ab7146101eb5780637a52f81c146101fe5780638da5cb5b1461021e57806399c2def4146102435780639ab06ff0146102565780639e3875ba1461026957600080fd5b8063076d081514610152578063210af618146101675780632e66220e1461018957806333060d901461019f5780633c6e2af6146101bf575b600080fd5b610165610160366004611d08565b610494565b005b6005546101749060ff1681565b60405190151581526020015b60405180910390f35b610191600581565b604051908152602001610180565b6101916101ad366004611d38565b60046020526000908152604090205481565b6101d26101cd366004611d68565b610583565b6040516001600160801b03199091168152602001610180565b6101d26101f9366004611d92565b610b12565b61021161020c366004611dc6565b610b5a565b6040516101809190611eeb565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610180565b610165610251366004611efa565b610d25565b610191610264366004611dc6565b611022565b610165610277366004611d08565b6110d4565b61022b7f0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc881565b6102f26102b1366004611d08565b600160208190526000918252604090912080549181015460029091015464ffffffffff80841693600160281b810490911692600160501b90910460ff169185565b6040805164ffffffffff9687168152959094166020860152911515928401929092526060830191909152608082015260a001610180565b61019160025481565b610165610340366004611f23565b611279565b610191610353366004611d68565b6112bd565b60055461017490610100900460ff1681565b61037261132e565b6040516101809190611f40565b6103f161038d366004611dc6565b600360208181526000938452604080852090915291835291208054600182015460028301549290930154909260ff81169264ffffffffff6101008304811693600160301b8404821693600160581b8104831693600160801b90910483169290911688565b60408051988952961515602089015264ffffffffff9586169688019690965292841660608701529083166080860152821660a085015260c08401521660e082015261010001610180565b61044e610449366004611d38565b611429565b6040516101809190611fba565b610165610469366004611d38565b611843565b61016561047c366004612009565b6118de565b61016561048f366004611f23565b611a34565b6000546001600160a01b031633146104c75760405162461bcd60e51b81526004016104be90612045565b60405180910390fd5b80600260008282546104d99190612090565b90915550507f0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc86001600160a01b031663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f91906120a7565b5050565b60055460009060ff16156105d25760405162461bcd60e51b81526020600482015260166024820152752132b3b4b71029ba30b5b29034b9903637b1b5b2b21760511b60448201526064016104be565b60058364ffffffffff161061061b5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c1bdbdb081251608a1b60448201526064016104be565b600082116106635760405162461bcd60e51b8152602060048201526015602482015274416d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016104be565b60006001600160a01b037f0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc8166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156106d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fd91906120c4565b90508281101561071f5760405162461bcd60e51b81526004016104be906120dd565b61072d633b9aca0082612090565b83111561074557610742633b9aca0082612090565b92505b64ffffffffff8481166000908152600160208181526040808420815160a08101835281548088168252600160281b810490971693810193909352600160501b90950460ff16151590820152908301546060820152600283015460808201526107ad9086611a71565b90506002548111156108015760405162461bcd60e51b815260206004820152601a60248201527f5661756c742063616e6e6f7420636f766572207265776172647300000000000060448201526064016104be565b600280548290039055600182018054869190600090610821908490612122565b925050819055508082600201600082825461083c9190612122565b90915550507f0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc86001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018890526064016020604051808303816000875af11580156108c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e891906120a7565b508154429060009061090590620151809064ffffffffff1661213a565b61090f9083612167565b6040805161010081018252898152600160208083019190915264ffffffffff8c8116838501528854600160281b9004811660608401528681166080840152841660a0830152600060c0830181905260e083018190523380825260049092529290922054929350916109809190610b12565b3360008181526003602081815260408084206001600160801b03198716855282528084208751815587830151600180830180548b86015160608d015160808e015160a08f015165ffffffffffff1990941696151565ffffffffff0019169690961761010064ffffffffff93841602176fffffffffffffffffffff0000000000001916600160301b9183169190910264ffffffffff60581b191617600160581b958216959095029490941764ffffffffff60801b1916600160801b9185169190910217905560c08a0151600284015560e08a015192909501805464ffffffffff191692909116919091179055938352600490529181208054939a509192610a87908490612122565b9091555050805160608083015160808085015160a0808701516040805197885264ffffffffff958616602089015287018b9052918416948601949094528216908401528b169133916001600160801b03198b16917fdaa122a3982a206ebcd4dcbcad8f8aeafa15dcf6d831bf53add7c2ed68db66f5910160405180910390a450505050505092915050565b6040516bffffffffffffffffffffffff19606084901b1660208201526034810182905260009060540160408051601f1981840301815291905280516020909101209392505050565b610b62611c9c565b6001600160a01b03831660009081526003602081815260408084206001600160801b03198716855282528084208151610100808201845282548252600183015460ff811615159583019590955264ffffffffff908504811693820193909352600160301b840483166060820152600160581b840483166080820152600160801b909304821660a0840152600281015460c08401529092015490911660e08201529080610c0d83611aad565b91509150604051806101a00160405280846000015181526020016201518085608001518660a00151610c3f9190612190565b610c4991906121cc565b64ffffffffff168152602001846020015115158152602001846040015164ffffffffff168152602001846060015164ffffffffff168152602001846080015164ffffffffff1681526020018460a0015164ffffffffff1681526020018460200151610ccd578460a0015164ffffffffff168560e0015164ffffffffff161015610cdd565b8460a0015164ffffffffff164210155b151581526020018381526020018281526020018460c001518152602001866001600160801b03191681526020018460e0015164ffffffffff1681525093505050505b92915050565b600554610100900460ff1615610d745760405162461bcd60e51b815260206004820152601460248201527322b7321029ba30b5b29034b9903637b1b5b2b21760611b60448201526064016104be565b3360009081526003602090815260408083206001600160801b0319851684528252808320600180820154610100810464ffffffffff16865293819052919093209160ff16151514610dfb5760405162461bcd60e51b81526020600482015260116024820152705374616b6520697320696e61637469766560781b60448201526064016104be565b60408051610100808201835284548252600185015460ff81161515602084015264ffffffffff918104821693830193909352600160301b830481166060830152600160581b830481166080830152600160801b909204821660a0820152600284015460c0820152600384015490911660e08201526000908190610e7d90611aad565b60018601805460ff1916905560038601805464ffffffffff19164264ffffffffff16179055600280549294509092508291600090610ebc908490612122565b90915550610ecc90508183612122565b836002016000828254610edf9190612090565b90915550508354600184018054600090610efa908490612090565b9091555050600284018290557f0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc86001600160a01b031663a9059cbb338654610f43908690612122565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb291906120a7565b506001840154610100900464ffffffffff16336001600160a01b0316866001600160801b0319167f44188be409e998865052aad7339b4c06dba208427e683f1d1fe8ca9dd2e303818542604051611013929190918252602082015260400190565b60405180910390a45050505050565b6001600160a01b03821660009081526003602081815260408084206001600160801b03198616855282528084208151610100808201845282548252600183015460ff811615159583019590955264ffffffffff908504811693820193909352600160301b840483166060820152600160581b840483166080820152600160801b909304821660a0840152600281015460c08401529092015490911660e08201526110cb81611aad565b50949350505050565b60006001600160a01b037f0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc8166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e91906120c4565b9050818110156111905760405162461bcd60e51b81526004016104be906120dd565b61119e633b9aca0082612090565b8211156111b6576111b3633b9aca0082612090565b91505b81600260008282546111c89190612122565b90915550507f0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc86001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906120a7565b505050565b6000546001600160a01b031633146112a35760405162461bcd60e51b81526004016104be90612045565b600580549115156101000261ff0019909216919091179055565b64ffffffffff8281166000908152600160208181526040808420815160a08101835281548088168252600160281b810490971693810193909352600160501b90950460ff161515908201529083015460608201526002909201546080830152906113279083611a71565b9392505050565b60408051600580825260c0820190925260609160009190816020015b6040805160a08101825260008082526020808301829052928201819052606082018190526080820152825260001990920191018161134a57905050905060005b600581101561142357600081815260016020818152604092839020835160a081018552815464ffffffffff8082168352600160281b82041693820193909352600160501b90920460ff161515938201939093529082015460608201526002909101546080820152825183908390811061140557611405612206565b6020026020010181905250808061141b9061221c565b91505061138a565b50919050565b6001600160a01b0381166000908152600460205260408120546060919067ffffffffffffffff81111561145e5761145e6121f0565b60405190808252806020026020018201604052801561149757816020015b611484611c9c565b81526020019060019003908161147c5790505b50905060005b6001600160a01b03841660009081526004602052604090205481101561183c5760006114c98583610b12565b6001600160a01b03861660009081526003602081815260408084206001600160801b031986168552825292839020835161010080820186528254808352600184015460ff811615159584019590955264ffffffffff918504821696830196909652600160301b840481166060830152600160581b840481166080830152600160801b909304831660a0820152600282015460c08201529201541660e082015285519293509185908590811061158057611580612206565b602090810291909101015152608081015160a082015162015180916115a491612190565b6115ae91906121cc565b8484815181106115c0576115c0612206565b60200260200101516020019064ffffffffff16908164ffffffffff168152505080602001518484815181106115f7576115f7612206565b60200260200101516040019015159081151581525050806040015184848151811061162457611624612206565b60200260200101516060019064ffffffffff16908164ffffffffff1681525050806060015184848151811061165b5761165b612206565b60200260200101516080019064ffffffffff16908164ffffffffff1681525050806080015184848151811061169257611692612206565b602002602001015160a0019064ffffffffff16908164ffffffffff16815250508060a001518484815181106116c9576116c9612206565b602002602001015160c0019064ffffffffff16908164ffffffffff16815250508060200151611711578060a0015164ffffffffff168160e0015164ffffffffff161015611721565b8060a0015164ffffffffff164210155b84848151811061173357611733612206565b602002602001015160e00190151590811515815250508060c0015184848151811061176057611760612206565b60200260200101516101400181815250508060e0015184848151811061178857611788612206565b6020026020010151610180019064ffffffffff16908164ffffffffff1681525050818484815181106117bc576117bc612206565b60209081029190910101516001600160801b0319909116610160909101526117e381611aad565b8585815181106117f5576117f5612206565b60200260200101516101000186868151811061181357611813612206565b6020908102919091010151610120019190915252508190506118348161221c565b91505061149d565b5092915050565b6000546001600160a01b0316331461186d5760405162461bcd60e51b81526004016104be90612045565b6001600160a01b0381166118d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104be565b6118db81611b3a565b50565b6000546001600160a01b031633146119085760405162461bcd60e51b81526004016104be90612045565b6005831061194a5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c1bdbdb081251608a1b60448201526064016104be565b60008264ffffffffff16116119a15760405162461bcd60e51b815260206004820152601860248201527f4c6f636b20646179732063616e6e6f74206265207a65726f000000000000000060448201526064016104be565b60008164ffffffffff16116119f85760405162461bcd60e51b815260206004820152601a60248201527f52657761726420726174652063616e6e6f74206265207a65726f00000000000060448201526064016104be565b600092835260016020526040909220805464ffffffffff938416600160281b0269ffffffffffffffffffff199091169390921692909217179055565b6000546001600160a01b03163314611a5e5760405162461bcd60e51b81526004016104be90612045565b6005805460ff1916911515919091179055565b6000618e94836020015164ffffffffff16846000015164ffffffffff1684611a999190612237565b611aa39190612237565b6113279190612256565b60008082602001511515600115151415611b2f576000611af78460000151856060015164ffffffffff1686608001518760a00151611aeb9190612190565b64ffffffffff16611b8a565b9050611b1b8460000151856060015164ffffffffff16611b1687611bd5565b611b8a565b9250611b278382612090565b915050915091565b506000905080915091565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611b9b6201518061016d61213a565b64ffffffffff16606483611baf8688612237565b611bb99190612237565b611bc39190612256565b611bcd9190612256565b949350505050565b60008160a0015164ffffffffff164210611c0a5781608001518260a00151611bfd9190612190565b64ffffffffff1692915050565b60408281015164ffffffffff90811660009081526001602081815291849020845160a08101865281548086168252600160281b810490951693810193909352600160501b90930460ff16151593820184905282810154606083015260029092015460808201529114611c7d576000611c93565b6080830151611c939064ffffffffff1642612090565b9150505b919050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081019190915290565b600060208284031215611d1a57600080fd5b5035919050565b80356001600160a01b0381168114611c9757600080fd5b600060208284031215611d4a57600080fd5b61132782611d21565b803564ffffffffff81168114611c9757600080fd5b60008060408385031215611d7b57600080fd5b611d8483611d53565b946020939093013593505050565b60008060408385031215611da557600080fd5b611d8483611d21565b80356001600160801b031981168114611c9757600080fd5b60008060408385031215611dd957600080fd5b611de283611d21565b9150611df060208401611dae565b90509250929050565b805182526020810151611e15602084018264ffffffffff169052565b506040810151611e29604084018215159052565b506060810151611e42606084018264ffffffffff169052565b506080810151611e5b608084018264ffffffffff169052565b5060a0810151611e7460a084018264ffffffffff169052565b5060c0810151611e8d60c084018264ffffffffff169052565b5060e0810151611ea160e084018215159052565b50610100818101519083015261012080820151908301526101408082015190830152610160808201516001600160801b031916908301526101809081015164ffffffffff16910152565b6101a08101610d1f8284611df9565b600060208284031215611f0c57600080fd5b61132782611dae565b80151581146118db57600080fd5b600060208284031215611f3557600080fd5b813561132781611f15565b602080825282518282018190526000919060409081850190868401855b82811015611fad578151805164ffffffffff908116865287820151168786015285810151151586860152606080820151908601526080908101519085015260a09093019290850190600101611f5d565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611ffd57611fe9838551611df9565b928401926101a09290920191600101611fd6565b50909695505050505050565b60008060006060848603121561201e57600080fd5b8335925061202e60208501611d53565b915061203c60408501611d53565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156120a2576120a261207a565b500390565b6000602082840312156120b957600080fd5b815161132781611f15565b6000602082840312156120d657600080fd5b5051919050565b60208082526025908201527f416d6f756e742063616e6e6f742062652067726561746572207468616e2062616040820152646c616e636560d81b606082015260800190565b600082198211156121355761213561207a565b500190565b600064ffffffffff8083168185168183048111821515161561215e5761215e61207a565b02949350505050565b600064ffffffffff8083168185168083038211156121875761218761207a565b01949350505050565b600064ffffffffff838116908316818110156121ae576121ae61207a565b039392505050565b634e487b7160e01b600052601260045260246000fd5b600064ffffffffff808416806121e4576121e46121b6565b92169190910492915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006000198214156122305761223061207a565b5060010190565b60008160001904831182151516156122515761225161207a565b500290565b600082612265576122656121b6565b50049056fea2646970667358221220658f7aa5807622caf1deccb109aab8132118bf79248610b9294ee4df56d8159464736f6c634300080c0033

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

0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc8

-----Decoded View---------------
Arg [0] : _immutableLuffy (address): 0x7121D00b4fA18F13Da6c2e30d19C04844E6AfDC8

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007121d00b4fa18f13da6c2e30d19c04844e6afdc8


Deployed Bytecode Sourcemap

176:9787:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;790:228:5;;;;;;:::i;:::-;;:::i;:::-;;593:36:3;;;;;;;;;;;;460:14:6;;453:22;435:41;;423:2;408:18;593:36:3;;;;;;;;452:37:0;;488:1;452:37;;;;;633:25:6;;;621:2;606:18;452:37:0;487:177:6;541:45:3;;;;;;:::i;:::-;;;;;;;;;;;;;;1453:1958;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;1758:52:6;;;1740:71;;1728:2;1713:18;1453:1958:3;1594:223:6;6278:261:3;;;;;;:::i;:::-;;:::i;6545:922::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1091:85:4:-;1137:7;1163:6;-1:-1:-1;;;;;1163:6:4;1091:85;;;-1:-1:-1;;;;;4462:32:6;;;4444:51;;4432:2;4417:18;1091:85:4;4298:203:6;5285:987:3;;;;;;:::i;:::-;;:::i;7739:320::-;;;;;;:::i;:::-;;:::i;283:501:5:-;;;;;;:::i;:::-;;:::i;519:29:2:-;;;;;496:41:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;496:41:0;;;;;;-1:-1:-1;;;496:41:0;;;;;;;;;;;;5178:12:6;5217:15;;;5199:34;;5269:15;;;;5264:2;5249:18;;5242:43;5328:14;;5321:22;5301:18;;;5294:50;;;;5375:2;5360:18;;5353:34;;;;5418:3;5403:19;;5396:35;5155:3;5140:19;496:41:0;4919:518:6;240:36:5;;;;;;3522:95:3;;;;;;:::i;:::-;;:::i;7473:260::-;;;;;;:::i;:::-;;:::i;635:34::-;;;;;;;;;;;;820:235:0;;;:::i;:::-;;;;;;;:::i;475:59:3:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;475:59:3;;;;;-1:-1:-1;;;475:59:3;;;;;-1:-1:-1;;;475:59:3;;;;;;;;;;;;;;;7213:25:6;;;7281:14;;7274:22;7269:2;7254:18;;7247:50;7316:12;7364:15;;;7344:18;;;7337:43;;;;7416:15;;;7411:2;7396:18;;7389:43;7469:15;;;7463:3;7448:19;;7441:44;7522:15;;7516:3;7501:19;;7494:44;7569:3;7554:19;;7547:35;7619:15;7613:3;7598:19;;7591:44;7200:3;7185:19;475:59:3;6886:755:6;4034:1245:3;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1530:198:4:-;;;;;;:::i;:::-;;:::i;1061:552:0:-;;;;;;:::i;:::-;;:::i;3417:99:3:-;;;;;;:::i;:::-;;:::i;790:228:5:-;1137:7:4;1163:6;-1:-1:-1;;;;;1163:6:4;339:10:1;1303:23:4;1295:68;;;;-1:-1:-1;;;1295:68:4;;;;;;;:::i;:::-;;;;;;;;;922:7:5::1;897:21;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;940:5:5::1;-1:-1:-1::0;;;;;940:14:5::1;;339:10:1::0;940:71:5::1;::::0;-1:-1:-1;;;;;;940:71:5::1;::::0;;;;;;-1:-1:-1;;;;;9522:32:6;;;940:71:5::1;::::0;::::1;9504:51:6::0;9571:18;;;9564:34;;;9477:18;;940:71:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;790:228:::0;:::o;1453:1958:3:-;1180:16;;1585:15;;1180:16;;1179:17;1171:52;;;;-1:-1:-1;;;1171:52:3;;10061:2:6;1171:52:3;;;10043:21:6;10100:2;10080:18;;;10073:30;-1:-1:-1;;;10119:18:6;;;10112:52;10181:18;;1171:52:3;9859:346:6;1171:52:3;488:1:0::1;1637:7:3;:19;;;1616:81;;;::::0;-1:-1:-1;;;1616:81:3;;10412:2:6;1616:81:3::1;::::0;::::1;10394:21:6::0;10451:2;10431:18;;;10424:30;-1:-1:-1;;;10470:18:6;;;10463:45;10525:18;;1616:81:3::1;10210:339:6::0;1616:81:3::1;1739:1;1729:7;:11;1708:79;;;::::0;-1:-1:-1;;;1708:79:3;;10756:2:6;1708:79:3::1;::::0;::::1;10738:21:6::0;10795:2;10775:18;;;10768:30;-1:-1:-1;;;10814:18:6;;;10807:51;10875:18;;1708:79:3::1;10554:345:6::0;1708:79:3::1;1794:21;-1:-1:-1::0;;;;;1818:5:3::1;:15;;339:10:1::0;1818:29:3::1;::::0;-1:-1:-1;;;;;;1818:29:3::1;::::0;;;;;;-1:-1:-1;;;;;4462:32:6;;;1818:29:3::1;::::0;::::1;4444:51:6::0;4417:18;;1818:29:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1794:53;;1889:7;1872:13;:24;;1851:108;;;;-1:-1:-1::0;;;1851:108:3::1;;;;;;;:::i;:::-;1977:21;1993:5;1977:13:::0;:21:::1;:::i;:::-;1967:7;:31;1963:92;;;2023:21;2039:5;2023:13:::0;:21:::1;:::i;:::-;2013:31;;1963:92;2089:14;::::0;;::::1;2065:21;2089:14:::0;;;:5:::1;:14;::::0;;;;;;;2134:68;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;2134:68:3;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;2134:68:3;;::::1;;;;;::::0;;;;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;2185:7;2134:19:::1;:68::i;:::-;2114:88;;2247:21;;2234:9;:34;;2213:107;;;::::0;-1:-1:-1;;;2213:107:3;;11701:2:6;2213:107:3::1;::::0;::::1;11683:21:6::0;11740:2;11720:18;;;11713:30;11779:28;11759:18;;;11752:56;11825:18;;2213:107:3::1;11499:350:6::0;2213:107:3::1;2355:21;:34:::0;;;;::::1;::::0;;-1:-1:-1;2410:16:3;::::1;:27:::0;;2430:7;;2410:16;2355:21:::1;::::0;2410:27:::1;::::0;2430:7;;2410:27:::1;:::i;:::-;;;;;;;;2476:9;2447:4;:25;;;:38;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;2496:5:3::1;-1:-1:-1::0;;;;;2496:18:3::1;;339:10:1::0;2496:102:3::1;::::0;-1:-1:-1;;;;;;2496:102:3::1;::::0;;;;;;-1:-1:-1;;;;;12245:15:6;;;2496:102:3::1;::::0;::::1;12227:34:6::0;2562:4:3::1;12277:18:6::0;;;12270:43;12329:18;;;12322:34;;;12162:18;;2496:102:3::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2710:13:3;;2640:15:::1;::::0;2609:21:::1;::::0;2710:23:::1;::::0;454:12:2::1;::::0;2710:13:3::1;;:23;:::i;:::-;2693:40;::::0;:14;:40:::1;:::i;:::-;2765:193;::::0;;::::1;::::0;::::1;::::0;;;;;2805:4:::1;2765:193;::::0;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;2844:15;;-1:-1:-1;;;2844:15:3;::::1;::::0;::::1;2765:193:::0;;;;;;::::1;::::0;;;;;::::1;::::0;;;;-1:-1:-1;2765:193:3;;;;;;;;;;;;339:10:1;3029:24:3;;;:10:::1;:24:::0;;;;;;;;2765:193;;-1:-1:-1;2765:193:3;2979:84:::1;::::0;339:10:1;2979::3::1;:84::i;:::-;339:10:1::0;3074:20:3::1;::::0;;;:6:::1;:20;::::0;;;;;;;-1:-1:-1;;;;;;3074:29:3;::::1;::::0;;;;;;;:37;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;3074:37:3;;;;::::1;;-1:-1:-1::0;;3074:37:3;;;;;::::1;;::::0;;::::1;;;-1:-1:-1::0;;3074:37:3;-1:-1:-1;;;3074:37:3;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;3074:37:3;;-1:-1:-1;;;3074:37:3;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;3074:37:3::1;-1:-1:-1::0;;;3074:37:3;;::::1;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;3074:37:3::1;::::0;;;::::1;::::0;;;::::1;::::0;;3121:24;;;:10:::1;:24:::0;;;;;:29;;3074;;-1:-1:-1;3074:37:3;;3121:29:::1;::::0;3074:37;;3121:29:::1;:::i;:::-;::::0;;;-1:-1:-1;;3258:12:3;;3284:16:::1;::::0;;::::1;::::0;3337:20:::1;::::0;;::::1;::::0;3371:23:::1;::::0;;::::1;::::0;3166:238:::1;::::0;;13124:25:6;;;3166:238:3::1;13216:15:6::0;;;13211:2;13196:18;;13189:43;13248:18;;13241:34;;;13311:15;;;13291:18;;;13284:43;;;;13364:15;;13343:19;;;13336:44;3166:238:3;::::1;::::0;339:10:1;;-1:-1:-1;;;;;;3166:238:3;::::1;::::0;::::1;::::0;13096:19:6;3166:238:3::1;;;;;;;1606:1805;;;;;;1453:1958:::0;;;;:::o;6278:261::-;6481:38;;-1:-1:-1;;13568:2:6;13564:15;;;13560:53;6481:38:3;;;13548:66:6;13630:12;;;13623:28;;;6403:10:3;;13667:12:6;;6481:38:3;;;-1:-1:-1;;6481:38:3;;;;;;;;;6458:71;;6481:38;6458:71;;;;;6278:261;-1:-1:-1;;;6278:261:3:o;6545:922::-;6668:22;;:::i;:::-;-1:-1:-1;;;;;6727:15:3;;6706:18;6727:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;6727:25:3;;;;;;;;;6706:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6706:46:3;;;;;;;;-1:-1:-1;;;6706:46:3;;;;;;;;-1:-1:-1;;;6706:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;6824:53;6706:46;6824:24;:53::i;:::-;6763:114;;;;6895:565;;;;;;;;6924:5;:12;;;6895:565;;;;454:12:2;6977:5:3;:20;;;6951:5;:23;;;:46;;;;:::i;:::-;6950:58;;;;:::i;:::-;6895:565;;;;;;7022:5;:14;;;6895:565;;;;;;7050:5;:12;;;6895:565;;;;;;7076:5;:16;;;6895:565;;;;;;7106:5;:20;;;6895:565;;;;;;7140:5;:23;;;6895:565;;;;;;7177:5;:14;;;:112;;7266:5;:23;;;7239:50;;:5;:23;;;:50;;;;7177:112;;;7213:5;:23;;;7194:42;;:15;:42;;7177:112;6895:565;;;;;;7304:18;6895:565;;;;7337:20;6895:565;;;;7371:5;:20;;;6895:565;;;;7405:8;-1:-1:-1;;;;;6895:565:3;;;;;;7427:5;:23;;;6895:565;;;;;6888:572;;;;;6545:922;;;;;:::o;5285:987::-;1290:14;;;;;;;1289:15;1281:48;;;;-1:-1:-1;;;1281:48:3;;14450:2:6;1281:48:3;;;14432:21:6;14489:2;14469:18;;;14462:30;-1:-1:-1;;;14508:18:6;;;14501:50;14568:18;;1281:48:3;14248:344:6;1281:48:3;339:10:1;5387:19:3::1;5409:20:::0;;;:6:::1;:20;::::0;;;;;;;-1:-1:-1;;;;;;5409:30:3;::::1;::::0;;;;;;;5473:5:::1;5479:12:::0;;::::1;::::0;::::1;::::0;::::1;;;5473:19:::0;;;;;;;;;;;5524:14:::1;;:22;;;5503:86;;;::::0;-1:-1:-1;;;5503:86:3;;14799:2:6;5503:86:3::1;::::0;::::1;14781:21:6::0;14838:2;14818:18;;;14811:30;-1:-1:-1;;;14857:18:6;;;14850:47;14914:18;;5503:86:3::1;14597:341:6::0;5503:86:3::1;5683:31;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;5683:31:3;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5683:31:3;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5683:31:3;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;5614:14:::1;::::0;;;5683:31:::1;::::0;:24:::1;:31::i;:::-;5725:14;::::0;::::1;:22:::0;;-1:-1:-1;;5725:22:3::1;::::0;;5757:23:::1;::::0;::::1;:49:::0;;-1:-1:-1;;5757:49:3::1;5790:15;5757:49;;;::::0;;5816:21:::1;:45:::0;;5600:114;;-1:-1:-1;5600:114:3;;-1:-1:-1;5600:114:3;;-1:-1:-1;;5816:45:3::1;::::0;5600:114;;5816:45:::1;:::i;:::-;::::0;;;-1:-1:-1;5900:29:3::1;::::0;-1:-1:-1;5909:20:3;5900:6;:29:::1;:::i;:::-;5871:4;:25;;;:58;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;5959:12:3;;5939:16:::1;::::0;::::1;:32:::0;;5959:12:::1;::::0;5939:32:::1;::::0;5959:12;;5939:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;5981:20:3::1;::::0;::::1;:29:::0;;;6021:5:::1;-1:-1:-1::0;;;;;6021:14:3::1;;339:10:1::0;6075:12:3;;:21:::1;::::0;6090:6;;6075:21:::1;:::i;:::-;6021:85;::::0;-1:-1:-1;;;;;;6021:85:3::1;::::0;;;;;;-1:-1:-1;;;;;9522:32:6;;;6021:85:3::1;::::0;::::1;9504:51:6::0;9571:18;;;9564:34;9477:18;;6021:85:3::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;6194:12:3::1;::::0;::::1;::::0;::::1;::::0;::::1;;;339:10:1::0;-1:-1:-1;;;;;6122:143:3::1;6146:8;-1:-1:-1::0;;;;;6122:143:3::1;;;6220:6;6240:15;6122:143;;;;;;15117:25:6::0;;;15173:2;15158:18;;15151:34;15105:2;15090:18;;14943:248;6122:143:3::1;;;;;;;;5377:895;;;;5285:987:::0;:::o;7739:320::-;-1:-1:-1;;;;;7939:15:3;;7876:26;7939:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;7939:25:3;;;;;;;;;7918:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7918:46:3;;;;;;;;-1:-1:-1;;;7918:46:3;;;;;;;;-1:-1:-1;;;7918:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;7999:53;7918:46;7999:24;:53::i;:::-;-1:-1:-1;7974:78:3;7739:320;-1:-1:-1;;;;7739:320:3:o;283:501:5:-;362:21;-1:-1:-1;;;;;386:5:5;:15;;339:10:1;386:29:5;;-1:-1:-1;;;;;;386:29:5;;;;;;;-1:-1:-1;;;;;4462:32:6;;;386:29:5;;;4444:51:6;4417:18;;386:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;362:53;;457:7;440:13;:24;;419:108;;;;-1:-1:-1;;;419:108:5;;;;;;;:::i;:::-;545:21;561:5;545:13;:21;:::i;:::-;535:7;:31;531:92;;;591:21;607:5;591:13;:21;:::i;:::-;581:31;;531:92;657:7;632:21;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;675:5:5;-1:-1:-1;;;;;675:18:5;;339:10:1;675:102:5;;-1:-1:-1;;;;;;675:102:5;;;;;;;-1:-1:-1;;;;;12245:15:6;;;675:102:5;;;12227:34:6;741:4:5;12277:18:6;;;12270:43;12329:18;;;12322:34;;;12162:18;;675:102:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;358:426;283:501;:::o;3522:95:3:-;1137:7:4;1163:6;-1:-1:-1;;;;;1163:6:4;339:10:1;1303:23:4;1295:68;;;;-1:-1:-1;;;1295:68:4;;;;;;;:::i;:::-;3587:14:3::1;:23:::0;;;::::1;;;;-1:-1:-1::0;;3587:23:3;;::::1;::::0;;;::::1;::::0;;3522:95::o;7473:260::-;7681:14;;;;7603:17;7681:14;;;:5;:14;;;;;;;;7648:78;;;;;;;;;;;;;;-1:-1:-1;;;7648:78:3;;;;;;;;;;;;-1:-1:-1;;;7648:78:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;7603:17;7648:78;;7709:7;7648:19;:78::i;:::-;7636:90;7473:260;-1:-1:-1;;;7473:260:3:o;820:235:0:-;915:25;;;488:1;915:25;;;;;;;;;860:17;;889:23;;915:25;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:25:0;;-1:-1:-1;;915:25:0;;;;;;;;;;;889:51;;954:6;950:77;488:1;964;:13;950:77;;;1008:8;;;;:5;:8;;;;;;;;;997:19;;;;;;;;;;;;;;;-1:-1:-1;;;997:19:0;;;;;;;;;;-1:-1:-1;;;997:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;;;;1008;;997;;;;;;:::i;:::-;;;;;;:19;;;;979:3;;;;;:::i;:::-;;;;950:77;;;-1:-1:-1;1043:5:0;820:235;-1:-1:-1;820:235:0:o;4034:1245:3:-;-1:-1:-1;;;;;4190:20:3;;4135:30;4190:20;;;:10;:20;;;;;;4099:24;;4135:30;4168:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4135:76;;4225:6;4221:1030;-1:-1:-1;;;;;4241:20:3;;;;;;:10;:20;;;;;;4237:24;;4221:1030;;;4281:15;4299:23;4310:8;4320:1;4299:10;:23::i;:::-;-1:-1:-1;;;;;4357:16:3;;4336:18;4357:16;;;:6;:16;;;;;;;;-1:-1:-1;;;;;;4357:25:3;;;;;;;;;;4336:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4336:46:3;;;;;;;;-1:-1:-1;;;4336:46:3;;;;;;;;-1:-1:-1;;;4336:46:3;;;;;;;;;;;;;;;;;;;;;;;;;4397:8;;4281:41;;-1:-1:-1;4336:46:3;4397:5;;4403:1;;4397:8;;;;;;:::i;:::-;;;;;;;;;;;:30;4488:20;;;;4462:23;;;;454:12:2;;4462:46:3;;;:::i;:::-;4461:58;;;;:::i;:::-;4441:5;4447:1;4441:8;;;;;;;;:::i;:::-;;;;;;;:17;;:78;;;;;;;;;;;4553:5;:14;;;4533:5;4539:1;4533:8;;;;;;;;:::i;:::-;;;;;;;:17;;:34;;;;;;;;;;;4599:5;:12;;;4581:5;4587:1;4581:8;;;;;;;;:::i;:::-;;;;;;;:15;;:30;;;;;;;;;;;4647:5;:16;;;4625:5;4631:1;4625:8;;;;;;;;:::i;:::-;;;;;;;:19;;:38;;;;;;;;;;;4703:5;:20;;;4677:5;4683:1;4677:8;;;;;;;;:::i;:::-;;;;;;;:23;;:46;;;;;;;;;;;4766:5;:23;;;4737:5;4743:1;4737:8;;;;;;;;:::i;:::-;;;;;;;:26;;:52;;;;;;;;;;;4823:5;:14;;;:112;;4912:5;:23;;;4885:50;;:5;:23;;;:50;;;;4823:112;;;4859:5;:23;;;4840:42;;:15;:42;;4823:112;4803:5;4809:1;4803:8;;;;;;;;:::i;:::-;;;;;;;:17;;:132;;;;;;;;;;;4976:5;:20;;;4950:5;4956:1;4950:8;;;;;;;;:::i;:::-;;;;;;;:23;;:46;;;;;5039:5;:23;;;5010:5;5016:1;5010:8;;;;;;;;:::i;:::-;;;;;;;:26;;:52;;;;;;;;;;;5095:7;5076:5;5082:1;5076:8;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;;5076:26:3;;;:16;;;;:26;5179:61;5221:5;5179:24;:61::i;:::-;5117:5;5123:1;5117:8;;;;;;;;:::i;:::-;;;;;;;:27;;5146:5;5152:1;5146:8;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;5116:124;;;;;-1:-1:-1;4263:3:3;;-1:-1:-1;4263:3:3;;;:::i;:::-;;;;4221:1030;;;-1:-1:-1;5267:5:3;4034:1245;-1:-1:-1;;4034:1245:3:o;1530:198:4:-;1137:7;1163:6;-1:-1:-1;;;;;1163:6:4;339:10:1;1303:23:4;1295:68;;;;-1:-1:-1;;;1295:68:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;1618:22:4;::::1;1610:73;;;::::0;-1:-1:-1;;;1610:73:4;;15802:2:6;1610:73:4::1;::::0;::::1;15784:21:6::0;15841:2;15821:18;;;15814:30;15880:34;15860:18;;;15853:62;-1:-1:-1;;;15931:18:6;;;15924:36;15977:19;;1610:73:4::1;15600:402:6::0;1610:73:4::1;1693:28;1712:8;1693:18;:28::i;:::-;1530:198:::0;:::o;1061:552:0:-;1137:7:4;1163:6;-1:-1:-1;;;;;1163:6:4;339:10:1;1303:23:4;1295:68;;;;-1:-1:-1;;;1295:68:4;;;;;;;:::i;:::-;488:1:0::1;1245:7;:19;1224:81;;;::::0;-1:-1:-1;;;1224:81:0;;10412:2:6;1224:81:0::1;::::0;::::1;10394:21:6::0;10451:2;10431:18;;;10424:30;-1:-1:-1;;;10470:18:6;;;10463:45;10525:18;;1224:81:0::1;10210:339:6::0;1224:81:0::1;1352:1;1337:12;:16;;;1316:87;;;::::0;-1:-1:-1;;;1316:87:0;;16209:2:6;1316:87:0::1;::::0;::::1;16191:21:6::0;16248:2;16228:18;;;16221:30;16287:26;16267:18;;;16260:54;16331:18;;1316:87:0::1;16007:348:6::0;1316:87:0::1;1452:1;1435:14;:18;;;1414:91;;;::::0;-1:-1:-1;;;1414:91:0;;16562:2:6;1414:91:0::1;::::0;::::1;16544:21:6::0;16601:2;16581:18;;;16574:30;16640:28;16620:18;;;16613:56;16686:18;;1414:91:0::1;16360:350:6::0;1414:91:0::1;1516:14;::::0;;;:5:::1;:14;::::0;;;;;:38;;::::1;1564:42:::0;;::::1;-1:-1:-1::0;;;1564:42:0::1;-1:-1:-1::0;;1564:42:0;;;1516:38;;;::::1;1564:42:::0;;;;::::1;::::0;;1061:552::o;3417:99:3:-;1137:7:4;1163:6;-1:-1:-1;;;;;1163:6:4;339:10:1;1303:23:4;1295:68;;;;-1:-1:-1;;;1295:68:4;;;;;;;:::i;:::-;3484:16:3::1;:25:::0;;-1:-1:-1;;3484:25:3::1;::::0;::::1;;::::0;;;::::1;::::0;;3417:99::o;9435:264::-;9572:17;9687:5;9660;:16;;;9617:59;;9635:5;:14;;;9617:32;;:7;:32;;;;:::i;:::-;:59;;;;:::i;:::-;:75;;;;:::i;8065:864::-;8193:26;8233:28;8290:6;:15;;;:23;;8309:4;8290:23;;;8286:637;;;8329:24;8356:162;8390:6;:13;;;8421:6;:17;;;8356:162;;8483:6;:21;;;8456:6;:24;;;:48;;;;:::i;:::-;8356:162;;:16;:162::i;:::-;8329:189;;8554:184;8588:6;:13;;;8619:6;:17;;;8554:184;;8654:70;8700:6;8654:24;:70::i;:::-;8554:16;:184::i;:::-;8533:205;-1:-1:-1;8776:37:3;8533:205;8776:16;:37;:::i;:::-;8753:60;;8315:509;8065:864;;;:::o;8286:637::-;-1:-1:-1;8873:1:3;;-1:-1:-1;8873:1:3;8065:864;;;:::o;1882:187:4:-;1955:16;1974:6;;-1:-1:-1;;;;;1990:17:4;;;-1:-1:-1;;;;;;1990:17:4;;;;;;2022:40;;1974:6;;;;;;;2022:40;;1955:16;2022:40;1945:124;1882:187;:::o;9705:255:3:-;9864:14;499:13:2;454:12;509:3;499:13;:::i;:::-;9903:50:3;;9939:3;9927:9;9903:21;9913:11;9903:7;:21;:::i;:::-;:33;;;;:::i;:::-;:39;;;;:::i;:::-;:50;;;;:::i;:::-;9894:59;9705:255;-1:-1:-1;;;;9705:255:3:o;8935:494::-;9050:16;9105:6;:24;;;9086:43;;:15;:43;9082:341;;9183:6;:21;;;9156:6;:24;;;:48;;;;:::i;:::-;9145:59;;;8935:494;-1:-1:-1;;8935:494:3:o;9082:341::-;9272:13;;;;;9266:20;;;;9243;9266;;;:5;:20;;;;;;;;9243:43;;;;;;;;;;;;;;-1:-1:-1;;;9243:43:3;;;;;;;;;;;;-1:-1:-1;;;9243:43:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9311:23;:101;;9411:1;9311:101;;;9371:21;;;;9353:39;;;;:15;:39;:::i;:::-;9300:112;;9229:194;9082:341;8935:494;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:180:6:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:6;;14:180;-1:-1:-1;14:180:6:o;669:173::-;737:20;;-1:-1:-1;;;;;786:31:6;;776:42;;766:70;;832:1;829;822:12;847:186;906:6;959:2;947:9;938:7;934:23;930:32;927:52;;;975:1;972;965:12;927:52;998:29;1017:9;998:29;:::i;1038:165::-;1105:20;;1165:12;1154:24;;1144:35;;1134:63;;1193:1;1190;1183:12;1208:252;1275:6;1283;1336:2;1324:9;1315:7;1311:23;1307:32;1304:52;;;1352:1;1349;1342:12;1304:52;1375:28;1393:9;1375:28;:::i;:::-;1365:38;1450:2;1435:18;;;;1422:32;;-1:-1:-1;;;1208:252:6:o;1822:254::-;1890:6;1898;1951:2;1939:9;1930:7;1926:23;1922:32;1919:52;;;1967:1;1964;1957:12;1919:52;1990:29;2009:9;1990:29;:::i;2081:193::-;2149:20;;-1:-1:-1;;;;;;2198:51:6;;2188:62;;2178:90;;2264:1;2261;2254:12;2279:260;2347:6;2355;2408:2;2396:9;2387:7;2383:23;2379:32;2376:52;;;2424:1;2421;2414:12;2376:52;2447:29;2466:9;2447:29;:::i;:::-;2437:39;;2495:38;2529:2;2518:9;2514:18;2495:38;:::i;:::-;2485:48;;2279:260;;;;;:::o;2645:1374::-;2732:5;2726:12;2721:3;2714:25;2785:4;2778:5;2774:16;2768:23;2800:47;2841:4;2836:3;2832:14;2818:12;2620;2609:24;2597:37;;2544:96;2800:47;;2895:4;2888:5;2884:16;2878:23;2910:47;2951:4;2946:3;2942:14;2926;269:13;262:21;250:34;;199:91;2910:47;;3005:4;2998:5;2994:16;2988:23;3020:49;3063:4;3058:3;3054:14;3038;2620:12;2609:24;2597:37;;2544:96;3020:49;;3117:4;3110:5;3106:16;3100:23;3132:49;3175:4;3170:3;3166:14;3150;2620:12;2609:24;2597:37;;2544:96;3132:49;;3229:4;3222:5;3218:16;3212:23;3244:49;3287:4;3282:3;3278:14;3262;2620:12;2609:24;2597:37;;2544:96;3244:49;;3341:4;3334:5;3330:16;3324:23;3356:49;3399:4;3394:3;3390:14;3374;2620:12;2609:24;2597:37;;2544:96;3356:49;;3453:4;3446:5;3442:16;3436:23;3468:47;3509:4;3504:3;3500:14;3484;269:13;262:21;250:34;;199:91;3468:47;-1:-1:-1;3534:6:6;3576:14;;;3570:21;3556:12;;;3549:43;3611:6;3653:14;;;3647:21;3633:12;;;3626:43;3688:6;3730:14;;;3724:21;3710:12;;;3703:43;3765:6;3808:14;;;3802:21;-1:-1:-1;;;;;;1531:51:6;3867:12;;;1519:64;3899:6;3942:14;;;3936:21;2620:12;2609:24;4000:12;;2597:37;2645:1374::o;4024:269::-;4222:3;4207:19;;4235:52;4211:9;4269:6;4235:52;:::i;4506:186::-;4565:6;4618:2;4606:9;4597:7;4593:23;4589:32;4586:52;;;4634:1;4631;4624:12;4586:52;4657:29;4676:9;4657:29;:::i;5442:118::-;5528:5;5521:13;5514:21;5507:5;5504:32;5494:60;;5550:1;5547;5540:12;5565:241;5621:6;5674:2;5662:9;5653:7;5649:23;5645:32;5642:52;;;5690:1;5687;5680:12;5642:52;5729:9;5716:23;5748:28;5770:5;5748:28;:::i;5811:1070::-;6030:2;6082:21;;;6152:13;;6055:18;;;6174:22;;;6001:4;;6030:2;6215;;6233:18;;;;6274:15;;;6001:4;6317:538;6331:6;6328:1;6325:13;6317:538;;;6390:13;;6467:9;;6426:12;6463:18;;;6451:31;;6526:11;;;6520:18;6516:27;6502:12;;;6495:49;6598:11;;;6592:18;6585:26;6578:34;6564:12;;;6557:56;6636:4;6680:11;;;6674:18;6660:12;;;6653:40;6716:4;6760:11;;;6754:18;6740:12;;;6733:40;6802:4;6793:14;;;;6830:15;;;;6353:1;6346:9;6317:538;;;-1:-1:-1;6872:3:6;;5811:1070;-1:-1:-1;;;;;;;5811:1070:6:o;7646:727::-;7881:2;7933:21;;;8003:13;;7906:18;;;8025:22;;;7852:4;;7881:2;8104:15;;;;8078:2;8063:18;;;7852:4;8147:200;8161:6;8158:1;8155:13;8147:200;;;8210:53;8259:3;8250:6;8244:13;8210:53;:::i;:::-;8322:15;;;;8292:6;8283:16;;;;;8183:1;8176:9;8147:200;;;-1:-1:-1;8364:3:6;;7646:727;-1:-1:-1;;;;;;7646:727:6:o;8378:324::-;8453:6;8461;8469;8522:2;8510:9;8501:7;8497:23;8493:32;8490:52;;;8538:1;8535;8528:12;8490:52;8574:9;8561:23;8551:33;;8603:37;8636:2;8625:9;8621:18;8603:37;:::i;:::-;8593:47;;8659:37;8692:2;8681:9;8677:18;8659:37;:::i;:::-;8649:47;;8378:324;;;;;:::o;8707:356::-;8909:2;8891:21;;;8928:18;;;8921:30;8987:34;8982:2;8967:18;;8960:62;9054:2;9039:18;;8707:356::o;9068:127::-;9129:10;9124:3;9120:20;9117:1;9110:31;9160:4;9157:1;9150:15;9184:4;9181:1;9174:15;9200:125;9240:4;9268:1;9265;9262:8;9259:34;;;9273:18;;:::i;:::-;-1:-1:-1;9310:9:6;;9200:125::o;9609:245::-;9676:6;9729:2;9717:9;9708:7;9704:23;9700:32;9697:52;;;9745:1;9742;9735:12;9697:52;9777:9;9771:16;9796:28;9818:5;9796:28;:::i;10904:184::-;10974:6;11027:2;11015:9;11006:7;11002:23;10998:32;10995:52;;;11043:1;11040;11033:12;10995:52;-1:-1:-1;11066:16:6;;10904:184;-1:-1:-1;10904:184:6:o;11093:401::-;11295:2;11277:21;;;11334:2;11314:18;;;11307:30;11373:34;11368:2;11353:18;;11346:62;-1:-1:-1;;;11439:2:6;11424:18;;11417:35;11484:3;11469:19;;11093:401::o;11854:128::-;11894:3;11925:1;11921:6;11918:1;11915:13;11912:39;;;11931:18;;:::i;:::-;-1:-1:-1;11967:9:6;;11854:128::o;12367:264::-;12406:7;12438:12;12477:2;12474:1;12470:10;12507:2;12504:1;12500:10;12563:3;12559:2;12555:12;12550:3;12547:21;12540:3;12533:11;12526:19;12522:47;12519:73;;;12572:18;;:::i;:::-;12612:13;;12367:264;-1:-1:-1;;;;12367:264:6:o;12636:230::-;12675:3;12703:12;12742:2;12739:1;12735:10;12772:2;12769:1;12765:10;12803:3;12799:2;12795:12;12790:3;12787:21;12784:47;;;12811:18;;:::i;:::-;12847:13;;12636:230;-1:-1:-1;;;;12636:230:6:o;13690:223::-;13729:4;13758:12;13820:10;;;;13790;;13842:12;;;13839:38;;;13857:18;;:::i;:::-;13894:13;;13690:223;-1:-1:-1;;;13690:223:6:o;13918:127::-;13979:10;13974:3;13970:20;13967:1;13960:31;14010:4;14007:1;14000:15;14034:4;14031:1;14024:15;14050:193;14089:1;14115:12;14154:2;14151:1;14147:10;14176:3;14166:37;;14183:18;;:::i;:::-;14221:10;;14217:20;;;;;14050:193;-1:-1:-1;;14050:193:6:o;15196:127::-;15257:10;15252:3;15248:20;15245:1;15238:31;15288:4;15285:1;15278:15;15312:4;15309:1;15302:15;15328:127;15389:10;15384:3;15380:20;15377:1;15370:31;15420:4;15417:1;15410:15;15444:4;15441:1;15434:15;15460:135;15499:3;-1:-1:-1;;15520:17:6;;15517:43;;;15540:18;;:::i;:::-;-1:-1:-1;15587:1:6;15576:13;;15460:135::o;16715:168::-;16755:7;16821:1;16817;16813:6;16809:14;16806:1;16803:21;16798:1;16791:9;16784:17;16780:45;16777:71;;;16828:18;;:::i;:::-;-1:-1:-1;16868:9:6;;16715:168::o;16888:120::-;16928:1;16954;16944:35;;16959:18;;:::i;:::-;-1:-1:-1;16993:9:6;;16888:120::o

Swarm Source

ipfs://658f7aa5807622caf1deccb109aab8132118bf79248610b9294ee4df56d81594

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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