ETH Price: $2,061.62 (-15.75%)

Contract

0xAd5F6f7eb620a1c21Ba234b99bda0D0D8498dF6B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer212434042024-11-22 12:54:59101 days ago1732280099IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0008006315.20060554
Transfer208651632024-09-30 18:07:59154 days ago1727719679IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000993718.87048981
Transfer207278792024-09-11 14:10:47173 days ago1726063847IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000160575.21638711
Transfer207278642024-09-11 14:07:47173 days ago1726063667IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000316036.60019949
Transfer207276012024-09-11 13:15:11173 days ago1726060511IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000194573.69330306
Transfer207200562024-09-10 11:56:11174 days ago1725969371IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0003397111.04455618
Transfer207200562024-09-10 11:56:11174 days ago1725969371IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0003397111.04455618
Transfer207200562024-09-10 11:56:11174 days ago1725969371IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0003397111.04455618
Transfer207200562024-09-10 11:56:11174 days ago1725969371IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0003397111.04455618
Transfer207200562024-09-10 11:56:11174 days ago1725969371IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0003397111.04455618
Transfer207200562024-09-10 11:56:11174 days ago1725969371IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0003397111.04455618
Transfer207200562024-09-10 11:56:11174 days ago1725969371IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0003398511.04455618
Transfer207200462024-09-10 11:54:11174 days ago1725969251IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000268388.72546638
Transfer207200462024-09-10 11:54:11174 days ago1725969251IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000268498.72546638
Transfer207200462024-09-10 11:54:11174 days ago1725969251IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000417598.72546638
Transfer207200462024-09-10 11:54:11174 days ago1725969251IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000268388.72546638
Transfer207200462024-09-10 11:54:11174 days ago1725969251IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000268388.72546638
Transfer207200462024-09-10 11:54:11174 days ago1725969251IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000268388.72546638
Transfer207200462024-09-10 11:54:11174 days ago1725969251IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000268388.72546638
Transfer207200182024-09-10 11:48:23174 days ago1725968903IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000262088.52063978
Transfer207200182024-09-10 11:48:23174 days ago1725968903IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000262188.52063978
Transfer207200182024-09-10 11:48:23174 days ago1725968903IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000262088.52063978
Transfer205347442024-08-15 14:51:59200 days ago1723733519IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000365616.94315774
Transfer203212662024-07-16 19:48:59230 days ago1721159339IN
0xAd5F6f7e...D8498dF6B
0 ETH0.0013721626.05160742
Transfer202612122024-07-08 10:31:35238 days ago1720434695IN
0xAd5F6f7e...D8498dF6B
0 ETH0.000172673.27827649
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:
AlfaCoin

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: AlfaCoin.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "./Ownable.sol";
import "./Stakeable.sol";

/**
 * @notice AlfaCoin is a development token that we use to learn how to code solidity
 * and what BEP-20 interface requires
 */
contract AlfaCoin is Ownable, Stakeable {
    /**
     * @notice Our Tokens required variables that are needed to operate everything
     */
    uint256 private _totalSupply;
    uint8 private _decimals;
    string private _symbol;
    string private _name;

    /**
     * @notice _balances is a mapping that contains a address as KEY
     * and the balance of the address as the value
     */
    mapping(address => uint256) private _balances;
    /**
     * @notice _allowances is used to manage and control allownace
     * An allowance is the right to use another accounts balance, or part of it
     */
    mapping(address => mapping(address => uint256)) private _allowances;

    /**
     * @notice Events are created below.
     * Transfer event is a event that notify the blockchain that a transfer of assets has taken place
     *
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
    /**
     * @notice Approval is emitted when a new Spender is approved to spend Tokens on
     * the Owners account
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @notice constructor will be triggered when we create the Smart contract
     * _name = name of the token
     * _short_symbol = Short Symbol name for the token
     * token_decimals = The decimal precision of the Token, defaults 18
     * _totalSupply is how much Tokens there are totally
     */
    constructor(
        string memory token_name,
        string memory short_symbol,
        uint8 token_decimals,
        uint256 token_totalSupply
    ) {
        _name = token_name;
        _symbol = short_symbol;
        _decimals = token_decimals;
        _totalSupply = token_totalSupply;

        // Add all the tokens created to the creator of the token
        _balances[msg.sender] = _totalSupply;

        // Emit an Transfer event to notify the blockchain that an Transfer has occured
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    /**
     * @notice decimals will return the number of decimal precision the Token is deployed with
     */
    function decimals() external view returns (uint8) {
        return _decimals;
    }

    /**
     * @notice symbol will return the Token's symbol
     */
    function symbol() external view returns (string memory) {
        return _symbol;
    }

    /**
     * @notice name will return the Token's symbol
     */
    function name() external view returns (string memory) {
        return _name;
    }

    /**
     * @notice totalSupply will return the tokens total supply of tokens
     */
    function totalSupply() external view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @notice balanceOf will return the account balance for the given account
     */
    function balanceOf(address account) external view returns (uint256) {
        return _balances[account];
    }

    /**
     * @notice _mint will create tokens on the address inputted and then increase the total supply
     *
     * It will also emit an Transfer event, with sender set to zero address (adress(0))
     *
     * Requires that the address that is recieveing the tokens is not zero address
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "AlfaCoin: cannot mint to zero address");

        // Increase total supply
        _totalSupply = _totalSupply + (amount);
        // Add amount to the account balance using the balance mapping
        _balances[account] = _balances[account] + amount;
        // Emit our event to log the action
        emit Transfer(address(0), account, amount);
    }

    /**
     * @notice _burn will destroy tokens from an address inputted and then decrease total supply
     * An Transfer event will emit with receiever set to zero address
     *
     * Requires
     * - Account cannot be zero
     * - Account balance has to be bigger or equal to amount
     */
    function _burn(address account, uint256 amount) internal {
        require(
            account != address(0),
            "AlfaCoin: cannot burn from zero address"
        );
        require(
            _balances[account] >= amount,
            "AlfaCoin: Cannot burn more than the account owns"
        );

        // Remove the amount from the account balance
        _balances[account] = _balances[account] - amount;
        // Decrease totalSupply
        _totalSupply = _totalSupply - amount;
        // Emit event, use zero address as reciever
        emit Transfer(account, address(0), amount);
    }

    /**
     * @notice burn is used to destroy tokens on an address
     *
     * See {_burn}
     * Requires
     *   - msg.sender must be the token owner
     *
     */
    function burn(address account, uint256 amount)
        public
        onlyOwner
        returns (bool)
    {
        _burn(account, amount);
        return true;
    }

    /**
     * @notice mint is used to create tokens and assign them to msg.sender
     *
     * See {_mint}
     * Requires
     *   - msg.sender must be the token owner
     *
     */
    function mint(address account, uint256 amount)
        public
        onlyOwner
        returns (bool)
    {
        _mint(account, amount);
        return true;
    }

    /**
     * @notice transfer is used to transfer funds from the sender to the recipient
     * This function is only callable from outside the contract. For internal usage see
     * _transfer
     *
     * Requires
     * - Caller cannot be zero
     * - Caller must have a balance = or bigger than amount
     *
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @notice _transfer is used for internal transfers
     *
     * Events
     * - Transfer
     *
     * Requires
     *  - Sender cannot be zero
     *  - recipient cannot be zero
     *  - sender balance most be = or bigger than amount
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(sender != address(0), "AlfaCoin: transfer from zero address");
        require(recipient != address(0), "AlfaCoin: transfer to zero address");
        require(
            _balances[sender] >= amount,
            "AlfaCoin: cant transfer more than your account holds"
        );

        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;

        emit Transfer(sender, recipient, amount);
    }

    /**
     * @notice getOwner just calls Ownables owner function.
     * returns owner of the token
     *
     */
    function getOwner() external view returns (address) {
        return owner();
    }

    /**
     * @notice allowance is used view how much allowance an spender has
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @notice approve will use the senders address and allow the spender to use X amount of tokens on his behalf
     */
    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice _approve is used to add a new Spender to a Owners account
     *
     * Events
     *   - {Approval}
     *
     * Requires
     *   - owner and spender cannot be zero address
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        require(
            owner != address(0),
            "AlfaCoin: approve cannot be done from zero address"
        );
        require(
            spender != address(0),
            "AlfaCoin: approve cannot be to zero address"
        );
        // Set the allowance of the spender address at the Owner mapping over accounts to the amount
        _allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * @notice transferFrom is uesd to transfer Tokens from a Accounts allowance
     * Spender address should be the token holder
     *
     * Requires
     *   - The caller must have a allowance = or bigger than the amount spending
     */
    function transferFrom(
        address spender,
        address recipient,
        uint256 amount
    ) external returns (bool) {
        // Make sure spender is allowed the amount
        require(
            _allowances[spender][msg.sender] >= amount,
            "AlfaCoin: You cannot spend that much on this account"
        );
        // Transfer first
        _transfer(spender, recipient, amount);
        // Reduce current allowance so a user cannot respend
        _approve(
            spender,
            msg.sender,
            _allowances[spender][msg.sender] - amount
        );
        return true;
    }

    /**
     * @notice increaseAllowance
     * Adds allowance to a account from the function caller address
     */
    function increaseAllowance(address spender, uint256 amount)
        public
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender] + amount
        );
        return true;
    }

    /**
     * @notice decreaseAllowance
     * Decrease the allowance on the account inputted from the caller address
     */
    function decreaseAllowance(address spender, uint256 amount)
        public
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender] - amount
        );
        return true;
    }

    /**
     * Add functionality like burn to the _stake afunction
     *
     */
    function stake(uint256 _amount) public {
        // Make sure staker actually is good for it
        require(_totalSupply < 108000000000000000000000000, "AlfaCoin: Cannot stake more");
        require(
            _amount <= _balances[msg.sender],
            "AlfaCoin: Cannot stake more than you own"
        );

        _stake(_amount);
        // Burn the amount of tokens on the sender
        _burn(msg.sender, _amount);
    }

    /**
     * @notice withdrawStake is used to withdraw stakes from the account holder
     */
    function withdrawStake(uint256 amount, uint256 stake_index) public {
        uint256 amount_to_mint = _withdrawStake(amount, stake_index);
        // Return staked tokens to user
        _mint(msg.sender, amount_to_mint);
    }
    function withdrawAll()public  {
        uint256 amount_to_mint = _withdrawAll();
        // Return staked tokens to user
        _mint(msg.sender, amount_to_mint);
    }


    function viewRewardPerHour() external view returns (uint256) {
        return _getRewardValue();
    }

    function setRewardPerHour(uint256 amount) public onlyOwner returns (bool) {
        _setRewardValue(amount);
        return true;
    }

}

File 2 of 3: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

/**
* @notice Contract is a inheritable smart contract that will add a 
* New modifier called onlyOwner available in the smart contract inherting it
* 
* onlyOwner makes a function only callable from the Token owner
*
*/
contract Ownable {
    // _owner is the owner of the Token
    address private _owner;

    /**
    * Event OwnershipTransferred is used to log that a ownership change of the token has occured
     */
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
    * Modifier
    * We create our own function modifier called onlyOwner, it will Require the current owner to be 
    * the same as msg.sender
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: only owner can call this function");
        // This _; is not a TYPO, It is important for the compiler;
        _;
    }

    constructor() {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }
    /**
    * @notice owner() returns the currently assigned owner of the Token
    * 
     */
    function owner() public view returns(address) {
        return _owner;

    }
    /**
    * @notice renounceOwnership will set the owner to zero address
    * This will make the contract owner less, It will make ALL functions with
    * onlyOwner no longer callable.
    * There is no way of restoring the owner
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
    * @notice transferOwnership will assign the {newOwner} as owner
    *
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }
    /**
    * @notice _transferOwnership will assign the {newOwner} as owner
    *
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }



}

File 3 of 3: Stakeable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

/**
 * @notice Stakeable is a contract who is ment to be inherited by other contract that wants Staking capabilities
 */
contract Stakeable {
    /**
     * @notice Constructor since this contract is not ment to be used without inheritance
     * push once to stakeholders for it to work proplerly
     */
    constructor() {
        // This push is needed so we avoid index 0 causing bug of index-1
        stakeholders.push();
        //Se calcula el _rewardPerHour por (100*8760)/x
        //Donde 100 son los tokens, 8760 es un año en horas y x es el APR deseado
        _rewardPerHour = 109500;
    }

    uint256 private _rewardPerHour;

    /**
     * @notice
     * A stake struct is used to represent the way we store stakes,
     * A Stake will contain the users address, the amount staked and a timestamp,
     * Since which is when the stake was made
     */
    struct Stake {
        address user;
        uint256 amount;
        uint256 since;
        // This claimable field is new and used to tell how big of a reward is currently available
        uint256 claimable;
    }
    /**
     * @notice Stakeholder is a staker that has active stakes
     */
    struct Stakeholder {
        address user;
        Stake[] address_stakes;
    }
    /**
     * @notice
     * StakingSummary is a struct that is used to contain all stakes performed by a certain account
     */
    struct StakingSummary {
        uint256 total_amount;
        Stake[] stakes;
    }

    /**
     * @notice
     *   This is a array where we store all Stakes that are performed on the Contract
     *   The stakes for each address are stored at a certain index, the index can be found using the stakes mapping
     */
    Stakeholder[] internal stakeholders;
    /**
     * @notice
     * stakes is used to keep track of the INDEX for the stakers in the stakes array
     */
    mapping(address => uint256) internal stakes;
    /**
     * @notice Staked event is triggered whenever a user stakes tokens, address is indexed to make it filterable
     */
    event Staked(
        address indexed user,
        uint256 amount,
        uint256 index,
        uint256 timestamp
    );

    /**
     * @notice
      _rewardPerHour is 1000 because it is used to represent 0.001, since we only use integer numbers
      This will give users 0.1% reward for each staked token / H
     */

    /**
     * @notice _addStakeholder takes care of adding a stakeholder to the stakeholders array
     */
    function _addStakeholder(address staker) internal returns (uint256) {
        // Push a empty item to the Array to make space for our new stakeholder
        stakeholders.push();
        // Calculate the index of the last item in the array by Len-1
        uint256 userIndex = stakeholders.length - 1;
        // Assign the address to the new index
        stakeholders[userIndex].user = staker;
        // Add index to the stakeHolders
        stakes[staker] = userIndex;
        return userIndex;
    }

    /**
     * @notice
     * _Stake is used to make a stake for an sender. It will remove the amount staked from the stakers account and place those tokens inside a stake container
     * StakeID
     */
    function _stake(uint256 _amount) internal {
        // Simple check so that user does not stake 0
        
        require(_amount > 0, "Cannot stake nothing");

        // Mappings in solidity creates all values, but empty, so we can just check the address
        uint256 index = stakes[msg.sender];
        // block.timestamp = timestamp of the current block in seconds since the epoch
        uint256 timestamp = block.timestamp;
        // See if the staker already has a staked index or if its the first time
        if (index == 0) {
            // This stakeholder stakes for the first time
            // We need to add him to the stakeHolders and also map it into the Index of the stakes
            // The index returned will be the index of the stakeholder in the stakeholders array
            index = _addStakeholder(msg.sender);
        }

        // Use the index to push a new Stake
        // push a newly created Stake with the current block timestamp.
        stakeholders[index].address_stakes.push(
            Stake(msg.sender, _amount, timestamp, 0)
        );
        // Emit an event that the stake has occured
        emit Staked(msg.sender, _amount, index, timestamp);
    }

    /**
     * @notice
     * calculateStakeReward is used to calculate how much a user should be rewarded for their stakes
     * and the duration the stake has been active
     */
    function calculateStakeReward(Stake memory _current_stake)
        internal
        view
        returns (uint256)
    {
        // First calculate how long the stake has been active
        // Use current seconds since epoch - the seconds since epoch the stake was made
        // The output will be duration in SECONDS ,
        // We will reward the user 0.1% per Hour So thats 0.1% per 3600 seconds
        // the alghoritm is  seconds = block.timestamp - stake seconds (block.timestap - _stake.since)
        // hours = Seconds / 3600 (seconds /3600) 3600 is an variable in Solidity names hours
        // we then multiply each token by the hours staked , then divide by the _rewardPerHour rate
        return
            (((block.timestamp - _current_stake.since) / 1 hours) *
                _current_stake.amount) / _rewardPerHour;
    }

    /**
     * @notice
     * withdrawStake takes in an amount and a index of the stake and will remove tokens from that stake
     * Notice index of the stake is the users stake counter, starting at 0 for the first stake
     * Will return the amount to MINT onto the acount
     * Will also calculateStakeReward and reset timer
     */
    function _withdrawStake(uint256 amount, uint256 index)
        internal
        returns (uint256)
    {
        // Grab user_index which is the index to use to grab the Stake[]
        uint256 user_index = stakes[msg.sender];
        Stake memory current_stake = stakeholders[user_index].address_stakes[
            index
        ];
        require(
            current_stake.amount >= amount,
            "Staking: Cannot withdraw more than you have staked"
        );

        // Calculate available Reward first before we start modifying data
        uint256 reward = calculateStakeReward(current_stake);
        // Remove by subtracting the money unstaked
        current_stake.amount = current_stake.amount - amount;
        // If stake is empty, 0, then remove it from the array of stakes
        if (current_stake.amount == 0) {
            delete stakeholders[user_index].address_stakes[index];
        } else {
            // If not empty then replace the value of it
            stakeholders[user_index]
                .address_stakes[index]
                .amount = current_stake.amount;
            // Reset timer of stake
            stakeholders[user_index].address_stakes[index].since = block
                .timestamp;
        }

        return amount + reward;
    }

    /**
     * @notice
     * hasStake is used to check if a account has stakes and the total amount along with all the seperate stakes
     */
    function hasStake(address _staker)
        public
        view
        returns (StakingSummary memory)
    {
        // totalStakeAmount is used to count total staked amount of the address
        uint256 totalStakeAmount;
        // Keep a summary in memory since we need to calculate this
        StakingSummary memory summary = StakingSummary(
            0,
            stakeholders[stakes[_staker]].address_stakes
        );
        // Itterate all stakes and grab amount of stakes
        for (uint256 s = 0; s < summary.stakes.length; s += 1) {
            uint256 availableReward = calculateStakeReward(summary.stakes[s]);
            summary.stakes[s].claimable = availableReward;
            totalStakeAmount = totalStakeAmount + summary.stakes[s].amount;
        }
        // Assign calculate amount to summary
        summary.total_amount = totalStakeAmount;
        return summary;
    }

    function viewAll(address _staker) public view returns (uint256) {
        uint256 totalAmount;
        uint256 user_index = stakes[_staker];

        StakingSummary memory summary = StakingSummary(
            0,
            stakeholders[stakes[_staker]].address_stakes
        );

        // Itterate all stakes and grab amount of stakes
        for (uint256 s = 0; s < summary.stakes.length; s += 1) {
            Stake memory current_stake = stakeholders[user_index]
                .address_stakes[s];
            uint256 availableReward = calculateStakeReward(current_stake);
            totalAmount = current_stake.amount + availableReward;
        }

        return totalAmount;
    }

    function _withdrawAll() internal returns (uint256) {
        uint256 totalWithdraw;
        uint256 user_index = stakes[msg.sender];

        StakingSummary memory summary = StakingSummary(
            0,
            stakeholders[stakes[msg.sender]].address_stakes
        );

        // Itterate all stakes and grab amount of stakes
        for (uint256 s = 0; s < summary.stakes.length; s += 1) {
            Stake memory current_stake = stakeholders[user_index]
                .address_stakes[s];
            uint256 availableReward = calculateStakeReward(current_stake);
            totalWithdraw = current_stake.amount + availableReward;
            delete stakeholders[user_index].address_stakes[s];
        }

        return totalWithdraw;
    }

    function _getRewardValue() internal view returns (uint256) {
        return _rewardPerHour;
    }

    function _setRewardValue(uint256 amount) internal {
        require(amount > 0, "Cannot be 0%");
        _rewardPerHour = amount;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"token_name","type":"string"},{"internalType":"string","name":"short_symbol","type":"string"},{"internalType":"uint8","name":"token_decimals","type":"uint8"},{"internalType":"uint256","name":"token_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"hasStake","outputs":[{"components":[{"internalType":"uint256","name":"total_amount","type":"uint256"},{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"since","type":"uint256"},{"internalType":"uint256","name":"claimable","type":"uint256"}],"internalType":"struct Stakeable.Stake[]","name":"stakes","type":"tuple[]"}],"internalType":"struct Stakeable.StakingSummary","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setRewardPerHour","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"viewAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewRewardPerHour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stake_index","type":"uint256"}],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162003e8538038062003e85833981810160405281019062000037919062000426565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36002600181600181540180825580915050039060005260206000209050506201abbc60018190555083600790816200012b919062000717565b5082600690816200013d919062000717565b5081600560006101000a81548160ff021916908360ff16021790555080600481905550600454600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200020891906200080f565b60405180910390a3505050506200082c565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002838262000238565b810181811067ffffffffffffffff82111715620002a557620002a462000249565b5b80604052505050565b6000620002ba6200021a565b9050620002c8828262000278565b919050565b600067ffffffffffffffff821115620002eb57620002ea62000249565b5b620002f68262000238565b9050602081019050919050565b60005b838110156200032357808201518184015260208101905062000306565b60008484015250505050565b6000620003466200034084620002cd565b620002ae565b90508281526020810184848401111562000365576200036462000233565b5b6200037284828562000303565b509392505050565b600082601f8301126200039257620003916200022e565b5b8151620003a48482602086016200032f565b91505092915050565b600060ff82169050919050565b620003c581620003ad565b8114620003d157600080fd5b50565b600081519050620003e581620003ba565b92915050565b6000819050919050565b6200040081620003eb565b81146200040c57600080fd5b50565b6000815190506200042081620003f5565b92915050565b6000806000806080858703121562000443576200044262000224565b5b600085015167ffffffffffffffff81111562000464576200046362000229565b5b62000472878288016200037a565b945050602085015167ffffffffffffffff81111562000496576200049562000229565b5b620004a4878288016200037a565b9350506040620004b787828801620003d4565b9250506060620004ca878288016200040f565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200052957607f821691505b6020821081036200053f576200053e620004e1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005a97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200056a565b620005b586836200056a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620005f8620005f2620005ec84620003eb565b620005cd565b620003eb565b9050919050565b6000819050919050565b6200061483620005d7565b6200062c6200062382620005ff565b84845462000577565b825550505050565b600090565b6200064362000634565b6200065081848462000609565b505050565b5b8181101562000678576200066c60008262000639565b60018101905062000656565b5050565b601f821115620006c757620006918162000545565b6200069c846200055a565b81016020851015620006ac578190505b620006c4620006bb856200055a565b83018262000655565b50505b505050565b600082821c905092915050565b6000620006ec60001984600802620006cc565b1980831691505092915050565b6000620007078383620006d9565b9150826002028217905092915050565b6200072282620004d6565b67ffffffffffffffff8111156200073e576200073d62000249565b5b6200074a825462000510565b620007578282856200067c565b600060209050601f8311600181146200078f57600084156200077a578287015190505b620007868582620006f9565b865550620007f6565b601f1984166200079f8662000545565b60005b82811015620007c957848901518255600182019150602085019450602081019050620007a2565b86831015620007e95784890151620007e5601f891682620006d9565b8355505b6001600288020188555050505b505050505050565b6200080981620003eb565b82525050565b6000602082019050620008266000830184620007fe565b92915050565b613649806200083c6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063893d20e8116100c3578063a694fc3a1161007c578063a694fc3a146103f3578063a9059cbb1461040f578063dd62ed3e1461043f578063e73e14bf1461046f578063f1fdf4691461049f578063f2fde38b146104bb57610158565b8063893d20e8146103095780638da5cb5b1461032757806393eb26da1461034557806395d89b41146103755780639dc29fac14610393578063a457c2d7146103c357610158565b806340c10f191161011557806340c10f19146102475780634f9a9caa1461027757806370a0823114610295578063715018a6146102c5578063853828b6146102cf5780638761dc5f146102d957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b6101656104d7565b60405161017291906126fc565b60405180910390f35b610195600480360381019061019091906127b7565b610569565b6040516101a29190612812565b60405180910390f35b6101b3610580565b6040516101c0919061283c565b60405180910390f35b6101e360048036038101906101de9190612857565b61058a565b6040516101f09190612812565b60405180910390f35b6102016106f3565b60405161020e91906128c6565b60405180910390f35b610231600480360381019061022c91906127b7565b61070a565b60405161023e9190612812565b60405180910390f35b610261600480360381019061025c91906127b7565b6107a8565b60405161026e9190612812565b60405180910390f35b61027f61084c565b60405161028c919061283c565b60405180910390f35b6102af60048036038101906102aa91906128e1565b61085b565b6040516102bc919061283c565b60405180910390f35b6102cd6108a4565b005b6102d76109f0565b005b6102f360048036038101906102ee919061290e565b610a09565b6040516103009190612812565b60405180910390f35b610311610aab565b60405161031e919061294a565b60405180910390f35b61032f610aba565b60405161033c919061294a565b60405180910390f35b61035f600480360381019061035a91906128e1565b610ae3565b60405161036c919061283c565b60405180910390f35b61037d610d8a565b60405161038a91906126fc565b60405180910390f35b6103ad60048036038101906103a891906127b7565b610e1c565b6040516103ba9190612812565b60405180910390f35b6103dd60048036038101906103d891906127b7565b610ec0565b6040516103ea9190612812565b60405180910390f35b61040d6004803603810190610408919061290e565b610f5e565b005b610429600480360381019061042491906127b7565b611045565b6040516104369190612812565b60405180910390f35b61045960048036038101906104549190612965565b61105c565b604051610466919061283c565b60405180910390f35b610489600480360381019061048491906128e1565b6110e3565b6040516104969190612b04565b60405180910390f35b6104b960048036038101906104b49190612b26565b6112f0565b005b6104d560048036038101906104d091906128e1565b61130d565b005b6060600780546104e690612b95565b80601f016020809104026020016040519081016040528092919081815260200182805461051290612b95565b801561055f5780601f106105345761010080835404028352916020019161055f565b820191906000526020600020905b81548152906001019060200180831161054257829003601f168201915b5050505050905090565b60006105763384846113a7565b6001905092915050565b6000600454905090565b600081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064290612c38565b60405180910390fd5b610656848484611570565b6106e8843384600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e39190612c87565b6113a7565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061079e338484600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107999190612cbb565b6113a7565b6001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90612d61565b60405180910390fd5b6108428383611856565b6001905092915050565b60006108566119d1565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990612d61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006109fa6119db565b9050610a063382611856565b50565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090612d61565b60405180910390fd5b610aa282611d07565b60019050919050565b6000610ab5610aba565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006040518060400160405280600081526020016002600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610b9157610b90612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b82821015610c6857838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190610bc2565b50505050815250905060005b816020015151811015610d7e57600060028481548110610c9757610c96612d81565b5b90600052602060002090600202016001018281548110610cba57610cb9612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000610d5482611d54565b9050808260200151610d669190612cbb565b95505050600181610d779190612cbb565b9050610c74565b50829350505050919050565b606060068054610d9990612b95565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc590612b95565b8015610e125780601f10610de757610100808354040283529160200191610e12565b820191906000526020600020905b815481529060010190602001808311610df557829003601f168201915b5050505050905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390612d61565b60405180910390fd5b610eb68383611d96565b6001905092915050565b6000610f54338484600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4f9190612c87565b6113a7565b6001905092915050565b6a5955e3bb3e743fec00000060045410610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490612dfc565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690612e8e565b60405180910390fd5b61103881611f93565b6110423382611d96565b50565b6000611052338484611570565b6001905092915050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110eb612652565b6000806040518060400160405280600081526020016002600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061115357611152612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b8282101561122a57838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611184565b50505050815250905060005b8160200151518110156112db57600061126c8360200151838151811061125f5761125e612d81565b5b6020026020010151611d54565b9050808360200151838151811061128657611285612d81565b5b60200260200101516060018181525050826020015182815181106112ad576112ac612d81565b5b602002602001015160200151846112c49190612cbb565b9350506001816112d49190612cbb565b9050611236565b50818160000181815250508092505050919050565b60006112fc8383612177565b90506113083382611856565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290612d61565b60405180910390fd5b6113a48161243f565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90612f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612fb2565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611563919061283c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690613044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611645906130d6565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613168565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171b9190612c87565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117a99190612cbb565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611849919061283c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc906131fa565b60405180910390fd5b806004546118d39190612cbb565b60048190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119249190612cbb565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119c5919061283c565b60405180910390a35050565b6000600154905090565b6000806000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006040518060400160405280600081526020016002600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611a8957611a88612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b82821015611b6057838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611aba565b50505050815250905060005b816020015151811015611cfd57600060028481548110611b8f57611b8e612d81565b5b90600052602060002090600202016001018281548110611bb257611bb1612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000611c4c82611d54565b9050808260200151611c5e9190612cbb565b955060028581548110611c7457611c73612d81565b5b90600052602060002090600202016001018381548110611c9757611c96612d81565b5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905550505050600181611cf69190612cbb565b9050611b6c565b5082935050505090565b60008111611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4190613266565b60405180910390fd5b8060018190555050565b60006001548260200151610e10846040015142611d719190612c87565b611d7b91906132b5565b611d8591906132e6565b611d8f91906132b5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9061339a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e9061342c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed29190612c87565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600454611f239190612c87565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f87919061283c565b60405180910390a35050565b60008111611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90613498565b60405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905060008203612033576120303361256b565b91505b6002828154811061204757612046612d81565b5b906000526020600020906002020160010160405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015550503373ffffffffffffffffffffffffffffffffffffffff167fb4caaf29adda3eefee3ad552a8e85058589bf834c7466cae4ee58787f70589ed84848460405161216a939291906134b8565b60405180910390a2505050565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600282815481106121d2576121d1612d81565b5b906000526020600020906002020160010184815481106121f5576121f4612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481525050905084816020015110156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613561565b60405180910390fd5b60006122d682611d54565b90508582602001516122e89190612c87565b8260200181815250506000826020015103612389576002838154811061231157612310612d81565b5b9060005260206000209060020201600101858154811061233457612333612d81565b5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905560038201600090555050612428565b8160200151600284815481106123a2576123a1612d81565b5b906000526020600020906002020160010186815481106123c5576123c4612d81565b5b90600052602060002090600402016001018190555042600284815481106123ef576123ee612d81565b5b9060005260206000209060020201600101868154811061241257612411612d81565b5b9060005260206000209060040201600201819055505b80866124349190612cbb565b935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a5906135f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002600181600181540180825580915050039060005260206000209050506000600160028054905061259f9190612c87565b905082600282815481106125b6576125b5612d81565b5b906000526020600020906002020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080915050919050565b604051806040016040528060008152602001606081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156126a657808201518184015260208101905061268b565b60008484015250505050565b6000601f19601f8301169050919050565b60006126ce8261266c565b6126d88185612677565b93506126e8818560208601612688565b6126f1816126b2565b840191505092915050565b6000602082019050818103600083015261271681846126c3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061274e82612723565b9050919050565b61275e81612743565b811461276957600080fd5b50565b60008135905061277b81612755565b92915050565b6000819050919050565b61279481612781565b811461279f57600080fd5b50565b6000813590506127b18161278b565b92915050565b600080604083850312156127ce576127cd61271e565b5b60006127dc8582860161276c565b92505060206127ed858286016127a2565b9150509250929050565b60008115159050919050565b61280c816127f7565b82525050565b60006020820190506128276000830184612803565b92915050565b61283681612781565b82525050565b6000602082019050612851600083018461282d565b92915050565b6000806000606084860312156128705761286f61271e565b5b600061287e8682870161276c565b935050602061288f8682870161276c565b92505060406128a0868287016127a2565b9150509250925092565b600060ff82169050919050565b6128c0816128aa565b82525050565b60006020820190506128db60008301846128b7565b92915050565b6000602082840312156128f7576128f661271e565b5b60006129058482850161276c565b91505092915050565b6000602082840312156129245761292361271e565b5b6000612932848285016127a2565b91505092915050565b61294481612743565b82525050565b600060208201905061295f600083018461293b565b92915050565b6000806040838503121561297c5761297b61271e565b5b600061298a8582860161276c565b925050602061299b8582860161276c565b9150509250929050565b6129ae81612781565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6129e981612743565b82525050565b608082016000820151612a0560008501826129e0565b506020820151612a1860208501826129a5565b506040820151612a2b60408501826129a5565b506060820151612a3e60608501826129a5565b50505050565b6000612a5083836129ef565b60808301905092915050565b6000602082019050919050565b6000612a74826129b4565b612a7e81856129bf565b9350612a89836129d0565b8060005b83811015612aba578151612aa18882612a44565b9750612aac83612a5c565b925050600181019050612a8d565b5085935050505092915050565b6000604083016000830151612adf60008601826129a5565b5060208301518482036020860152612af78282612a69565b9150508091505092915050565b60006020820190508181036000830152612b1e8184612ac7565b905092915050565b60008060408385031215612b3d57612b3c61271e565b5b6000612b4b858286016127a2565b9250506020612b5c858286016127a2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bad57607f821691505b602082108103612bc057612bbf612b66565b5b50919050565b7f416c6661436f696e3a20596f752063616e6e6f74207370656e6420746861742060008201527f6d756368206f6e2074686973206163636f756e74000000000000000000000000602082015250565b6000612c22603483612677565b9150612c2d82612bc6565b604082019050919050565b60006020820190508181036000830152612c5181612c15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c9282612781565b9150612c9d83612781565b9250828203905081811115612cb557612cb4612c58565b5b92915050565b6000612cc682612781565b9150612cd183612781565b9250828201905080821115612ce957612ce8612c58565b5b92915050565b7f4f776e61626c653a206f6e6c79206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000612d4b602a83612677565b9150612d5682612cef565b604082019050919050565b60006020820190508181036000830152612d7a81612d3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f416c6661436f696e3a2043616e6e6f74207374616b65206d6f72650000000000600082015250565b6000612de6601b83612677565b9150612df182612db0565b602082019050919050565b60006020820190508181036000830152612e1581612dd9565b9050919050565b7f416c6661436f696e3a2043616e6e6f74207374616b65206d6f7265207468616e60008201527f20796f75206f776e000000000000000000000000000000000000000000000000602082015250565b6000612e78602883612677565b9150612e8382612e1c565b604082019050919050565b60006020820190508181036000830152612ea781612e6b565b9050919050565b7f416c6661436f696e3a20617070726f76652063616e6e6f7420626520646f6e6560008201527f2066726f6d207a65726f20616464726573730000000000000000000000000000602082015250565b6000612f0a603283612677565b9150612f1582612eae565b604082019050919050565b60006020820190508181036000830152612f3981612efd565b9050919050565b7f416c6661436f696e3a20617070726f76652063616e6e6f7420626520746f207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612f9c602b83612677565b9150612fa782612f40565b604082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f416c6661436f696e3a207472616e736665722066726f6d207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061302e602483612677565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f416c6661436f696e3a207472616e7366657220746f207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c0602283612677565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f416c6661436f696e3a2063616e74207472616e73666572206d6f72652074686160008201527f6e20796f7572206163636f756e7420686f6c6473000000000000000000000000602082015250565b6000613152603483612677565b915061315d826130f6565b604082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f416c6661436f696e3a2063616e6e6f74206d696e7420746f207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e4602583612677565b91506131ef82613188565b604082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b7f43616e6e6f742062652030250000000000000000000000000000000000000000600082015250565b6000613250600c83612677565b915061325b8261321a565b602082019050919050565b6000602082019050818103600083015261327f81613243565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132c082612781565b91506132cb83612781565b9250826132db576132da613286565b5b828204905092915050565b60006132f182612781565b91506132fc83612781565b925082820261330a81612781565b9150828204841483151761332157613320612c58565b5b5092915050565b7f416c6661436f696e3a2063616e6e6f74206275726e2066726f6d207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613384602783612677565b915061338f82613328565b604082019050919050565b600060208201905081810360008301526133b381613377565b9050919050565b7f416c6661436f696e3a2043616e6e6f74206275726e206d6f7265207468616e2060008201527f746865206163636f756e74206f776e7300000000000000000000000000000000602082015250565b6000613416603083612677565b9150613421826133ba565b604082019050919050565b6000602082019050818103600083015261344581613409565b9050919050565b7f43616e6e6f74207374616b65206e6f7468696e67000000000000000000000000600082015250565b6000613482601483612677565b915061348d8261344c565b602082019050919050565b600060208201905081810360008301526134b181613475565b9050919050565b60006060820190506134cd600083018661282d565b6134da602083018561282d565b6134e7604083018461282d565b949350505050565b7f5374616b696e673a2043616e6e6f74207769746864726177206d6f726520746860008201527f616e20796f752068617665207374616b65640000000000000000000000000000602082015250565b600061354b603283612677565b9150613556826134ef565b604082019050919050565b6000602082019050818103600083015261357a8161353e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135dd602683612677565b91506135e882613581565b604082019050919050565b6000602082019050818103600083015261360c816135d0565b905091905056fea264697066735822122099d9160d23a2d29b6f374a1654f7cbfb96697bf44b733fe25e160221371c569664736f6c63430008110033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000d3c21bcecceda100000000000000000000000000000000000000000000000000000000000000000000009416c666120436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004416c666100000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063893d20e8116100c3578063a694fc3a1161007c578063a694fc3a146103f3578063a9059cbb1461040f578063dd62ed3e1461043f578063e73e14bf1461046f578063f1fdf4691461049f578063f2fde38b146104bb57610158565b8063893d20e8146103095780638da5cb5b1461032757806393eb26da1461034557806395d89b41146103755780639dc29fac14610393578063a457c2d7146103c357610158565b806340c10f191161011557806340c10f19146102475780634f9a9caa1461027757806370a0823114610295578063715018a6146102c5578063853828b6146102cf5780638761dc5f146102d957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b6101656104d7565b60405161017291906126fc565b60405180910390f35b610195600480360381019061019091906127b7565b610569565b6040516101a29190612812565b60405180910390f35b6101b3610580565b6040516101c0919061283c565b60405180910390f35b6101e360048036038101906101de9190612857565b61058a565b6040516101f09190612812565b60405180910390f35b6102016106f3565b60405161020e91906128c6565b60405180910390f35b610231600480360381019061022c91906127b7565b61070a565b60405161023e9190612812565b60405180910390f35b610261600480360381019061025c91906127b7565b6107a8565b60405161026e9190612812565b60405180910390f35b61027f61084c565b60405161028c919061283c565b60405180910390f35b6102af60048036038101906102aa91906128e1565b61085b565b6040516102bc919061283c565b60405180910390f35b6102cd6108a4565b005b6102d76109f0565b005b6102f360048036038101906102ee919061290e565b610a09565b6040516103009190612812565b60405180910390f35b610311610aab565b60405161031e919061294a565b60405180910390f35b61032f610aba565b60405161033c919061294a565b60405180910390f35b61035f600480360381019061035a91906128e1565b610ae3565b60405161036c919061283c565b60405180910390f35b61037d610d8a565b60405161038a91906126fc565b60405180910390f35b6103ad60048036038101906103a891906127b7565b610e1c565b6040516103ba9190612812565b60405180910390f35b6103dd60048036038101906103d891906127b7565b610ec0565b6040516103ea9190612812565b60405180910390f35b61040d6004803603810190610408919061290e565b610f5e565b005b610429600480360381019061042491906127b7565b611045565b6040516104369190612812565b60405180910390f35b61045960048036038101906104549190612965565b61105c565b604051610466919061283c565b60405180910390f35b610489600480360381019061048491906128e1565b6110e3565b6040516104969190612b04565b60405180910390f35b6104b960048036038101906104b49190612b26565b6112f0565b005b6104d560048036038101906104d091906128e1565b61130d565b005b6060600780546104e690612b95565b80601f016020809104026020016040519081016040528092919081815260200182805461051290612b95565b801561055f5780601f106105345761010080835404028352916020019161055f565b820191906000526020600020905b81548152906001019060200180831161054257829003601f168201915b5050505050905090565b60006105763384846113a7565b6001905092915050565b6000600454905090565b600081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064290612c38565b60405180910390fd5b610656848484611570565b6106e8843384600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e39190612c87565b6113a7565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061079e338484600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107999190612cbb565b6113a7565b6001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90612d61565b60405180910390fd5b6108428383611856565b6001905092915050565b60006108566119d1565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990612d61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006109fa6119db565b9050610a063382611856565b50565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090612d61565b60405180910390fd5b610aa282611d07565b60019050919050565b6000610ab5610aba565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006040518060400160405280600081526020016002600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610b9157610b90612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b82821015610c6857838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190610bc2565b50505050815250905060005b816020015151811015610d7e57600060028481548110610c9757610c96612d81565b5b90600052602060002090600202016001018281548110610cba57610cb9612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000610d5482611d54565b9050808260200151610d669190612cbb565b95505050600181610d779190612cbb565b9050610c74565b50829350505050919050565b606060068054610d9990612b95565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc590612b95565b8015610e125780601f10610de757610100808354040283529160200191610e12565b820191906000526020600020905b815481529060010190602001808311610df557829003601f168201915b5050505050905090565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390612d61565b60405180910390fd5b610eb68383611d96565b6001905092915050565b6000610f54338484600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4f9190612c87565b6113a7565b6001905092915050565b6a5955e3bb3e743fec00000060045410610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490612dfc565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690612e8e565b60405180910390fd5b61103881611f93565b6110423382611d96565b50565b6000611052338484611570565b6001905092915050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110eb612652565b6000806040518060400160405280600081526020016002600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061115357611152612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b8282101561122a57838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611184565b50505050815250905060005b8160200151518110156112db57600061126c8360200151838151811061125f5761125e612d81565b5b6020026020010151611d54565b9050808360200151838151811061128657611285612d81565b5b60200260200101516060018181525050826020015182815181106112ad576112ac612d81565b5b602002602001015160200151846112c49190612cbb565b9350506001816112d49190612cbb565b9050611236565b50818160000181815250508092505050919050565b60006112fc8383612177565b90506113083382611856565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290612d61565b60405180910390fd5b6113a48161243f565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90612f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612fb2565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611563919061283c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690613044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611645906130d6565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613168565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171b9190612c87565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117a99190612cbb565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611849919061283c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc906131fa565b60405180910390fd5b806004546118d39190612cbb565b60048190555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119249190612cbb565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119c5919061283c565b60405180910390a35050565b6000600154905090565b6000806000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006040518060400160405280600081526020016002600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611a8957611a88612d81565b5b9060005260206000209060020201600101805480602002602001604051908101604052809291908181526020016000905b82821015611b6057838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505081526020019060010190611aba565b50505050815250905060005b816020015151811015611cfd57600060028481548110611b8f57611b8e612d81565b5b90600052602060002090600202016001018281548110611bb257611bb1612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152505090506000611c4c82611d54565b9050808260200151611c5e9190612cbb565b955060028581548110611c7457611c73612d81565b5b90600052602060002090600202016001018381548110611c9757611c96612d81565b5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905550505050600181611cf69190612cbb565b9050611b6c565b5082935050505090565b60008111611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4190613266565b60405180910390fd5b8060018190555050565b60006001548260200151610e10846040015142611d719190612c87565b611d7b91906132b5565b611d8591906132e6565b611d8f91906132b5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9061339a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e9061342c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed29190612c87565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600454611f239190612c87565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f87919061283c565b60405180910390a35050565b60008111611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90613498565b60405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905060008203612033576120303361256b565b91505b6002828154811061204757612046612d81565b5b906000526020600020906002020160010160405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015550503373ffffffffffffffffffffffffffffffffffffffff167fb4caaf29adda3eefee3ad552a8e85058589bf834c7466cae4ee58787f70589ed84848460405161216a939291906134b8565b60405180910390a2505050565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600282815481106121d2576121d1612d81565b5b906000526020600020906002020160010184815481106121f5576121f4612d81565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481525050905084816020015110156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290613561565b60405180910390fd5b60006122d682611d54565b90508582602001516122e89190612c87565b8260200181815250506000826020015103612389576002838154811061231157612310612d81565b5b9060005260206000209060020201600101858154811061233457612333612d81565b5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905560038201600090555050612428565b8160200151600284815481106123a2576123a1612d81565b5b906000526020600020906002020160010186815481106123c5576123c4612d81565b5b90600052602060002090600402016001018190555042600284815481106123ef576123ee612d81565b5b9060005260206000209060020201600101868154811061241257612411612d81565b5b9060005260206000209060040201600201819055505b80866124349190612cbb565b935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a5906135f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002600181600181540180825580915050039060005260206000209050506000600160028054905061259f9190612c87565b905082600282815481106125b6576125b5612d81565b5b906000526020600020906002020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080915050919050565b604051806040016040528060008152602001606081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156126a657808201518184015260208101905061268b565b60008484015250505050565b6000601f19601f8301169050919050565b60006126ce8261266c565b6126d88185612677565b93506126e8818560208601612688565b6126f1816126b2565b840191505092915050565b6000602082019050818103600083015261271681846126c3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061274e82612723565b9050919050565b61275e81612743565b811461276957600080fd5b50565b60008135905061277b81612755565b92915050565b6000819050919050565b61279481612781565b811461279f57600080fd5b50565b6000813590506127b18161278b565b92915050565b600080604083850312156127ce576127cd61271e565b5b60006127dc8582860161276c565b92505060206127ed858286016127a2565b9150509250929050565b60008115159050919050565b61280c816127f7565b82525050565b60006020820190506128276000830184612803565b92915050565b61283681612781565b82525050565b6000602082019050612851600083018461282d565b92915050565b6000806000606084860312156128705761286f61271e565b5b600061287e8682870161276c565b935050602061288f8682870161276c565b92505060406128a0868287016127a2565b9150509250925092565b600060ff82169050919050565b6128c0816128aa565b82525050565b60006020820190506128db60008301846128b7565b92915050565b6000602082840312156128f7576128f661271e565b5b60006129058482850161276c565b91505092915050565b6000602082840312156129245761292361271e565b5b6000612932848285016127a2565b91505092915050565b61294481612743565b82525050565b600060208201905061295f600083018461293b565b92915050565b6000806040838503121561297c5761297b61271e565b5b600061298a8582860161276c565b925050602061299b8582860161276c565b9150509250929050565b6129ae81612781565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6129e981612743565b82525050565b608082016000820151612a0560008501826129e0565b506020820151612a1860208501826129a5565b506040820151612a2b60408501826129a5565b506060820151612a3e60608501826129a5565b50505050565b6000612a5083836129ef565b60808301905092915050565b6000602082019050919050565b6000612a74826129b4565b612a7e81856129bf565b9350612a89836129d0565b8060005b83811015612aba578151612aa18882612a44565b9750612aac83612a5c565b925050600181019050612a8d565b5085935050505092915050565b6000604083016000830151612adf60008601826129a5565b5060208301518482036020860152612af78282612a69565b9150508091505092915050565b60006020820190508181036000830152612b1e8184612ac7565b905092915050565b60008060408385031215612b3d57612b3c61271e565b5b6000612b4b858286016127a2565b9250506020612b5c858286016127a2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bad57607f821691505b602082108103612bc057612bbf612b66565b5b50919050565b7f416c6661436f696e3a20596f752063616e6e6f74207370656e6420746861742060008201527f6d756368206f6e2074686973206163636f756e74000000000000000000000000602082015250565b6000612c22603483612677565b9150612c2d82612bc6565b604082019050919050565b60006020820190508181036000830152612c5181612c15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c9282612781565b9150612c9d83612781565b9250828203905081811115612cb557612cb4612c58565b5b92915050565b6000612cc682612781565b9150612cd183612781565b9250828201905080821115612ce957612ce8612c58565b5b92915050565b7f4f776e61626c653a206f6e6c79206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000612d4b602a83612677565b9150612d5682612cef565b604082019050919050565b60006020820190508181036000830152612d7a81612d3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f416c6661436f696e3a2043616e6e6f74207374616b65206d6f72650000000000600082015250565b6000612de6601b83612677565b9150612df182612db0565b602082019050919050565b60006020820190508181036000830152612e1581612dd9565b9050919050565b7f416c6661436f696e3a2043616e6e6f74207374616b65206d6f7265207468616e60008201527f20796f75206f776e000000000000000000000000000000000000000000000000602082015250565b6000612e78602883612677565b9150612e8382612e1c565b604082019050919050565b60006020820190508181036000830152612ea781612e6b565b9050919050565b7f416c6661436f696e3a20617070726f76652063616e6e6f7420626520646f6e6560008201527f2066726f6d207a65726f20616464726573730000000000000000000000000000602082015250565b6000612f0a603283612677565b9150612f1582612eae565b604082019050919050565b60006020820190508181036000830152612f3981612efd565b9050919050565b7f416c6661436f696e3a20617070726f76652063616e6e6f7420626520746f207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612f9c602b83612677565b9150612fa782612f40565b604082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f416c6661436f696e3a207472616e736665722066726f6d207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061302e602483612677565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f416c6661436f696e3a207472616e7366657220746f207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130c0602283612677565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f416c6661436f696e3a2063616e74207472616e73666572206d6f72652074686160008201527f6e20796f7572206163636f756e7420686f6c6473000000000000000000000000602082015250565b6000613152603483612677565b915061315d826130f6565b604082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f416c6661436f696e3a2063616e6e6f74206d696e7420746f207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e4602583612677565b91506131ef82613188565b604082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b7f43616e6e6f742062652030250000000000000000000000000000000000000000600082015250565b6000613250600c83612677565b915061325b8261321a565b602082019050919050565b6000602082019050818103600083015261327f81613243565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132c082612781565b91506132cb83612781565b9250826132db576132da613286565b5b828204905092915050565b60006132f182612781565b91506132fc83612781565b925082820261330a81612781565b9150828204841483151761332157613320612c58565b5b5092915050565b7f416c6661436f696e3a2063616e6e6f74206275726e2066726f6d207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613384602783612677565b915061338f82613328565b604082019050919050565b600060208201905081810360008301526133b381613377565b9050919050565b7f416c6661436f696e3a2043616e6e6f74206275726e206d6f7265207468616e2060008201527f746865206163636f756e74206f776e7300000000000000000000000000000000602082015250565b6000613416603083612677565b9150613421826133ba565b604082019050919050565b6000602082019050818103600083015261344581613409565b9050919050565b7f43616e6e6f74207374616b65206e6f7468696e67000000000000000000000000600082015250565b6000613482601483612677565b915061348d8261344c565b602082019050919050565b600060208201905081810360008301526134b181613475565b9050919050565b60006060820190506134cd600083018661282d565b6134da602083018561282d565b6134e7604083018461282d565b949350505050565b7f5374616b696e673a2043616e6e6f74207769746864726177206d6f726520746860008201527f616e20796f752068617665207374616b65640000000000000000000000000000602082015250565b600061354b603283612677565b9150613556826134ef565b604082019050919050565b6000602082019050818103600083015261357a8161353e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135dd602683612677565b91506135e882613581565b604082019050919050565b6000602082019050818103600083015261360c816135d0565b905091905056fea264697066735822122099d9160d23a2d29b6f374a1654f7cbfb96697bf44b733fe25e160221371c569664736f6c63430008110033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000d3c21bcecceda100000000000000000000000000000000000000000000000000000000000000000000009416c666120436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004416c666100000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : token_name (string): Alfa Coin
Arg [1] : short_symbol (string): Alfa
Arg [2] : token_decimals (uint8): 18
Arg [3] : token_totalSupply (uint256): 16000000000000000000000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000d3c21bcecceda10000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [5] : 416c666120436f696e0000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 416c666100000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

249:11502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2806:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7776:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2991:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8989:639;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2474:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9757:268;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5581:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11496:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3190:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1509:140:1;;;:::i;:::-;;11313:173:0;;;:::i;:::-;;11608:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7283:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1175:80:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8389:709:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2639:89:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5205:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10164:268;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10526:443;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6098:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7467:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7460:921:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11076:231:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1751:109:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2806:85:0;2845:13;2878:5;2871:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2806:85;:::o;7776:152::-;7844:4;7861:37;7870:10;7882:7;7891:6;7861:8;:37::i;:::-;7916:4;7909:11;;7776:152;;;;:::o;2991:93::-;3037:7;3064:12;;3057:19;;2991:93;:::o;8989:639::-;9115:4;9242:6;9206:11;:20;9218:7;9206:20;;;;;;;;;;;;;;;:32;9227:10;9206:32;;;;;;;;;;;;;;;;:42;;9184:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;9366:37;9376:7;9385:9;9396:6;9366:9;:37::i;:::-;9476:122;9499:7;9521:10;9581:6;9546:11;:20;9558:7;9546:20;;;;;;;;;;;;;;;:32;9567:10;9546:32;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;9476:8;:122::i;:::-;9616:4;9609:11;;8989:639;;;;;:::o;2474:85::-;2517:5;2542:9;;;;;;;;;;;2535:16;;2474:85;:::o;9757:268::-;9851:4;9873:122;9896:10;9921:7;9978:6;9943:11;:23;9955:10;9943:23;;;;;;;;;;;;;;;:32;9967:7;9943:32;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;9873:8;:122::i;:::-;10013:4;10006:11;;9757:268;;;;:::o;5581:174::-;5681:4;808:10:1;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;5703:22:0::1;5709:7;5718:6;5703:5;:22::i;:::-;5743:4;5736:11;;5581:174:::0;;;;:::o;11496:104::-;11548:7;11575:17;:15;:17::i;:::-;11568:24;;11496:104;:::o;3190:112::-;3249:7;3276:9;:18;3286:7;3276:18;;;;;;;;;;;;;;;;3269:25;;3190:112;;;:::o;1509:140:1:-;808:10;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;1608:1:::1;1571:40;;1592:6;::::0;::::1;;;;;;;;1571:40;;;;;;;;;;;;1639:1;1622:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1509:140::o:0;11313:173:0:-;11354:22;11379:14;:12;:14::i;:::-;11354:39;;11445:33;11451:10;11463:14;11445:5;:33::i;:::-;11343:143;11313:173::o;11608:138::-;11676:4;808:10:1;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11693:23:0::1;11709:6;11693:15;:23::i;:::-;11734:4;11727:11;;11608:138:::0;;;:::o;7283:85::-;7326:7;7353;:5;:7::i;:::-;7346:14;;7283:85;:::o;1175:80:1:-;1212:7;1239:6;;;;;;;;;;;1232:13;;1175:80;:::o;8389:709:2:-;8444:7;8464:19;8494:18;8515:6;:15;8522:7;8515:15;;;;;;;;;;;;;;;;8494:36;;8543:29;8575:100;;;;;;;;8604:1;8575:100;;;;8620:12;8633:6;:15;8640:7;8633:15;;;;;;;;;;;;;;;;8620:29;;;;;;;;:::i;:::-;;;;;;;;;;;;:44;;8575:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8543:132;;8751:9;8746:314;8770:7;:14;;;:21;8766:1;:25;8746:314;;;8816:26;8845:12;8858:10;8845:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:57;;8903:1;8845:60;;;;;;;;:::i;:::-;;;;;;;;;;;;8816:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8920:23;8946:35;8967:13;8946:20;:35::i;:::-;8920:61;;9033:15;9010:13;:20;;;:38;;;;:::i;:::-;8996:52;;8801:259;;8798:1;8793:6;;;;;:::i;:::-;;;8746:314;;;;9079:11;9072:18;;;;;8389:709;;;:::o;2639:89:0:-;2680:13;2713:7;2706:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2639:89;:::o;5205:174::-;5305:4;808:10:1;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;5327:22:0::1;5333:7;5342:6;5327:5;:22::i;:::-;5367:4;5360:11;;5205:174:::0;;;;:::o;10164:268::-;10258:4;10280:122;10303:10;10328:7;10385:6;10350:11;:23;10362:10;10350:23;;;;;;;;;;;;;;;:32;10374:7;10350:32;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;10280:8;:122::i;:::-;10420:4;10413:11;;10164:268;;;;:::o;10526:443::-;10652:27;10637:12;;:42;10629:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10755:9;:21;10765:10;10755:21;;;;;;;;;;;;;;;;10744:7;:32;;10722:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;10857:15;10864:7;10857:6;:15::i;:::-;10935:26;10941:10;10953:7;10935:5;:26::i;:::-;10526:443;:::o;6098:181::-;6187:4;6209:40;6219:10;6231:9;6242:6;6209:9;:40::i;:::-;6267:4;6260:11;;6098:181;;;;:::o;7467:168::-;7568:7;7600:11;:18;7612:5;7600:18;;;;;;;;;;;;;;;:27;7619:7;7600:27;;;;;;;;;;;;;;;;7593:34;;7467:168;;;;:::o;7460:921:2:-;7543:21;;:::i;:::-;7663:24;7767:29;7799:100;;;;;;;;7828:1;7799:100;;;;7844:12;7857:6;:15;7864:7;7857:15;;;;;;;;;;;;;;;;7844:29;;;;;;;;:::i;:::-;;;;;;;;;;;;:44;;7799:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7767:132;;7973:9;7968:284;7992:7;:14;;;:21;7988:1;:25;7968:284;;;8038:23;8064:39;8085:7;:14;;;8100:1;8085:17;;;;;;;;:::i;:::-;;;;;;;;8064:20;:39::i;:::-;8038:65;;8148:15;8118:7;:14;;;8133:1;8118:17;;;;;;;;:::i;:::-;;;;;;;;:27;;:45;;;;;8216:7;:14;;;8231:1;8216:17;;;;;;;;:::i;:::-;;;;;;;;:24;;;8197:16;:43;;;;:::i;:::-;8178:62;;8023:229;8020:1;8015:6;;;;;:::i;:::-;;;7968:284;;;;8332:16;8309:7;:20;;:39;;;;;8366:7;8359:14;;;;7460:921;;;:::o;11076:231:0:-;11154:22;11179:35;11194:6;11202:11;11179:14;:35::i;:::-;11154:60;;11266:33;11272:10;11284:14;11266:5;:33::i;:::-;11143:164;11076:231;;:::o;1751:109:1:-;808:10;798:20;;:6;;;;;;;;;;:20;;;790:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;1824:28:::1;1843:8;1824:18;:28::i;:::-;1751:109:::0;:::o;8152:571:0:-;8311:1;8294:19;;:5;:19;;;8272:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;8443:1;8424:21;;:7;:21;;;8402:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8659:6;8629:11;:18;8641:5;8629:18;;;;;;;;;;;;;;;:27;8648:7;8629:27;;;;;;;;;;;;;;;:36;;;;8699:7;8683:32;;8692:5;8683:32;;;8708:6;8683:32;;;;;;:::i;:::-;;;;;;;;8152:571;;;:::o;6556:597::-;6706:1;6688:20;;:6;:20;;;6680:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;6789:1;6768:23;;:9;:23;;;6760:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6884:6;6863:9;:17;6873:6;6863:17;;;;;;;;;;;;;;;;:27;;6841:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;7023:6;7003:9;:17;7013:6;7003:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;6983:9;:17;6993:6;6983:17;;;;;;;;;;;;;;;:46;;;;7086:6;7063:9;:20;7073:9;7063:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;7040:9;:20;7050:9;7040:20;;;;;;;;;;;;;;;:52;;;;7127:9;7110:35;;7119:6;7110:35;;;7138:6;7110:35;;;;;;:::i;:::-;;;;;;;;6556:597;;;:::o;3617:461::-;3712:1;3693:21;;:7;:21;;;3685:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;3834:6;3818:12;;:23;;;;:::i;:::-;3803:12;:38;;;;3966:6;3945:9;:18;3955:7;3945:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;3924:9;:18;3934:7;3924:18;;;;;;;;;;;;;;;:48;;;;4054:7;4033:37;;4050:1;4033:37;;;4063:6;4033:37;;;;;;:::i;:::-;;;;;;;;3617:461;;:::o;9886:99:2:-;9936:7;9963:14;;9956:21;;9886:99;:::o;9106:772::-;9148:7;9168:21;9200:18;9221:6;:18;9228:10;9221:18;;;;;;;;;;;;;;;;9200:39;;9252:29;9284:103;;;;;;;;9313:1;9284:103;;;;9329:12;9342:6;:18;9349:10;9342:18;;;;;;;;;;;;;;;;9329:32;;;;;;;;:::i;:::-;;;;;;;;;;;;:47;;9284:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9252:135;;9463:9;9458:380;9482:7;:14;;;:21;9478:1;:25;9458:380;;;9528:26;9557:12;9570:10;9557:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:57;;9615:1;9557:60;;;;;;;;:::i;:::-;;;;;;;;;;;;9528:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9632:23;9658:35;9679:13;9658:20;:35::i;:::-;9632:61;;9747:15;9724:13;:20;;;:38;;;;:::i;:::-;9708:54;;9784:12;9797:10;9784:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:39;;9824:1;9784:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;9777:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9513:325;;9510:1;9505:6;;;;;:::i;:::-;;;9458:380;;;;9857:13;9850:20;;;;;9106:772;:::o;9993:138::-;10071:1;10062:6;:10;10054:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;10117:6;10100:14;:23;;;;9993:138;:::o;4773:860::-;4882:7;5611:14;;5586;:21;;;5558:7;5534:14;:20;;;5516:15;:38;;;;:::i;:::-;5515:50;;;;:::i;:::-;5514:93;;;;:::i;:::-;5513:112;;;;:::i;:::-;5493:132;;4773:860;;;:::o;4393:625:0:-;4502:1;4483:21;;:7;:21;;;4461:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4626:6;4604:9;:18;4614:7;4604:18;;;;;;;;;;;;;;;;:28;;4582:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;4818:6;4797:9;:18;4807:7;4797:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;4776:9;:18;4786:7;4776:18;;;;;;;;;;;;;;;:48;;;;4898:6;4883:12;;:21;;;;:::i;:::-;4868:12;:36;;;;4999:1;4973:37;;4982:7;4973:37;;;5003:6;4973:37;;;;;;:::i;:::-;;;;;;;;4393:625;;:::o;3352:1226:2:-;3488:1;3478:7;:11;3470:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;3624:13;3640:6;:18;3647:10;3640:18;;;;;;;;;;;;;;;;3624:34;;3757:17;3777:15;3757:35;;3898:1;3889:5;:10;3885:335;;4181:27;4197:10;4181:15;:27::i;:::-;4173:35;;3885:335;4351:12;4364:5;4351:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:34;;4405:40;;;;;;;;4411:10;4405:40;;;;;;4423:7;4405:40;;;;4432:9;4405:40;;;;4443:1;4405:40;;;4351:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4532:10;4525:45;;;4544:7;4553:5;4560:9;4525:45;;;;;;;;:::i;:::-;;;;;;;;3394:1184;;3352:1226;:::o;5986:1318::-;6077:7;6176:18;6197:6;:18;6204:10;6197:18;;;;;;;;;;;;;;;;6176:39;;6226:26;6255:12;6268:10;6255:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:39;;6309:5;6255:70;;;;;;;;:::i;:::-;;;;;;;;;;;;6226:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6382:6;6358:13;:20;;;:30;;6336:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;6555:14;6572:35;6593:13;6572:20;:35::i;:::-;6555:52;;6717:6;6694:13;:20;;;:29;;;;:::i;:::-;6671:13;:20;;:52;;;;;6836:1;6812:13;:20;;;:25;6808:454;;6861:12;6874:10;6861:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:39;;6901:5;6861:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;6854:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6808:454;;;7090:13;:20;;;6998:12;7011:10;6998:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:57;;7056:5;6998:64;;;;;;;;:::i;:::-;;;;;;;;;;;;:89;;:112;;;;7217:33;7162:12;7175:10;7162:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:39;;7202:5;7162:46;;;;;;;;:::i;:::-;;;;;;;;;;;;:52;;:88;;;;6808:454;7290:6;7281;:15;;;;:::i;:::-;7274:22;;;;;5986:1318;;;;:::o;1961:229:1:-;2055:1;2035:22;;:8;:22;;;2027:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2145:8;2116:38;;2137:6;;;;;;;;;;2116:38;;;;;;;;;;;;2174:8;2165:6;;:17;;;;;;;;;;;;;;;;;;1961:229;:::o;2620:514:2:-;2679:7;2780:12;:19;;;;;;;;;;;;;;;;;;;;;;;2881:17;2923:1;2901:12;:19;;;;:23;;;;:::i;:::-;2881:43;;3014:6;2983:12;2996:9;2983:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;:37;;;;;;;;;;;;;;;;;;3090:9;3073:6;:14;3080:6;3073:14;;;;;;;;;;;;;;;:26;;;;3117:9;3110:16;;;2620:514;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;7:99:3:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:108::-;6432:24;6450:5;6432:24;:::i;:::-;6427:3;6420:37;6355:108;;:::o;6469:136::-;6558:6;6592:5;6586:12;6576:22;;6469:136;;;:::o;6611:196::-;6722:11;6756:6;6751:3;6744:19;6796:4;6791:3;6787:14;6772:29;;6611:196;;;;:::o;6813:154::-;6902:4;6925:3;6917:11;;6955:4;6950:3;6946:14;6938:22;;6813:154;;;:::o;6973:108::-;7050:24;7068:5;7050:24;:::i;:::-;7045:3;7038:37;6973:108;;:::o;7143:847::-;7274:4;7269:3;7265:14;7361:4;7354:5;7350:16;7344:23;7380:63;7437:4;7432:3;7428:14;7414:12;7380:63;:::i;:::-;7289:164;7537:4;7530:5;7526:16;7520:23;7556:63;7613:4;7608:3;7604:14;7590:12;7556:63;:::i;:::-;7463:166;7712:4;7705:5;7701:16;7695:23;7731:63;7788:4;7783:3;7779:14;7765:12;7731:63;:::i;:::-;7639:165;7891:4;7884:5;7880:16;7874:23;7910:63;7967:4;7962:3;7958:14;7944:12;7910:63;:::i;:::-;7814:169;7243:747;7143:847;;:::o;7996:267::-;8109:10;8130:90;8216:3;8208:6;8130:90;:::i;:::-;8252:4;8247:3;8243:14;8229:28;;7996:267;;;;:::o;8269:135::-;8361:4;8393;8388:3;8384:14;8376:22;;8269:135;;;:::o;8470:888::-;8623:3;8652:76;8722:5;8652:76;:::i;:::-;8744:98;8835:6;8830:3;8744:98;:::i;:::-;8737:105;;8866:78;8938:5;8866:78;:::i;:::-;8967:7;8998:1;8983:350;9008:6;9005:1;9002:13;8983:350;;;9084:6;9078:13;9111:107;9214:3;9199:13;9111:107;:::i;:::-;9104:114;;9241:82;9316:6;9241:82;:::i;:::-;9231:92;;9043:290;9030:1;9027;9023:9;9018:14;;8983:350;;;8987:14;9349:3;9342:10;;8628:730;;;8470:888;;;;:::o;9438:702::-;9569:3;9605:4;9600:3;9596:14;9700:4;9693:5;9689:16;9683:23;9719:63;9776:4;9771:3;9767:14;9753:12;9719:63;:::i;:::-;9620:172;9876:4;9869:5;9865:16;9859:23;9929:3;9923:4;9919:14;9912:4;9907:3;9903:14;9896:38;9955:147;10097:4;10083:12;9955:147;:::i;:::-;9947:155;;9802:311;10130:4;10123:11;;9574:566;9438:702;;;;:::o;10146:397::-;10301:4;10339:2;10328:9;10324:18;10316:26;;10388:9;10382:4;10378:20;10374:1;10363:9;10359:17;10352:47;10416:120;10531:4;10522:6;10416:120;:::i;:::-;10408:128;;10146:397;;;;:::o;10549:474::-;10617:6;10625;10674:2;10662:9;10653:7;10649:23;10645:32;10642:119;;;10680:79;;:::i;:::-;10642:119;10800:1;10825:53;10870:7;10861:6;10850:9;10846:22;10825:53;:::i;:::-;10815:63;;10771:117;10927:2;10953:53;10998:7;10989:6;10978:9;10974:22;10953:53;:::i;:::-;10943:63;;10898:118;10549:474;;;;;:::o;11029:180::-;11077:77;11074:1;11067:88;11174:4;11171:1;11164:15;11198:4;11195:1;11188:15;11215:320;11259:6;11296:1;11290:4;11286:12;11276:22;;11343:1;11337:4;11333:12;11364:18;11354:81;;11420:4;11412:6;11408:17;11398:27;;11354:81;11482:2;11474:6;11471:14;11451:18;11448:38;11445:84;;11501:18;;:::i;:::-;11445:84;11266:269;11215:320;;;:::o;11541:239::-;11681:34;11677:1;11669:6;11665:14;11658:58;11750:22;11745:2;11737:6;11733:15;11726:47;11541:239;:::o;11786:366::-;11928:3;11949:67;12013:2;12008:3;11949:67;:::i;:::-;11942:74;;12025:93;12114:3;12025:93;:::i;:::-;12143:2;12138:3;12134:12;12127:19;;11786:366;;;:::o;12158:419::-;12324:4;12362:2;12351:9;12347:18;12339:26;;12411:9;12405:4;12401:20;12397:1;12386:9;12382:17;12375:47;12439:131;12565:4;12439:131;:::i;:::-;12431:139;;12158:419;;;:::o;12583:180::-;12631:77;12628:1;12621:88;12728:4;12725:1;12718:15;12752:4;12749:1;12742:15;12769:194;12809:4;12829:20;12847:1;12829:20;:::i;:::-;12824:25;;12863:20;12881:1;12863:20;:::i;:::-;12858:25;;12907:1;12904;12900:9;12892:17;;12931:1;12925:4;12922:11;12919:37;;;12936:18;;:::i;:::-;12919:37;12769:194;;;;:::o;12969:191::-;13009:3;13028:20;13046:1;13028:20;:::i;:::-;13023:25;;13062:20;13080:1;13062:20;:::i;:::-;13057:25;;13105:1;13102;13098:9;13091:16;;13126:3;13123:1;13120:10;13117:36;;;13133:18;;:::i;:::-;13117:36;12969:191;;;;:::o;13166:229::-;13306:34;13302:1;13294:6;13290:14;13283:58;13375:12;13370:2;13362:6;13358:15;13351:37;13166:229;:::o;13401:366::-;13543:3;13564:67;13628:2;13623:3;13564:67;:::i;:::-;13557:74;;13640:93;13729:3;13640:93;:::i;:::-;13758:2;13753:3;13749:12;13742:19;;13401:366;;;:::o;13773:419::-;13939:4;13977:2;13966:9;13962:18;13954:26;;14026:9;14020:4;14016:20;14012:1;14001:9;13997:17;13990:47;14054:131;14180:4;14054:131;:::i;:::-;14046:139;;13773:419;;;:::o;14198:180::-;14246:77;14243:1;14236:88;14343:4;14340:1;14333:15;14367:4;14364:1;14357:15;14384:177;14524:29;14520:1;14512:6;14508:14;14501:53;14384:177;:::o;14567:366::-;14709:3;14730:67;14794:2;14789:3;14730:67;:::i;:::-;14723:74;;14806:93;14895:3;14806:93;:::i;:::-;14924:2;14919:3;14915:12;14908:19;;14567:366;;;:::o;14939:419::-;15105:4;15143:2;15132:9;15128:18;15120:26;;15192:9;15186:4;15182:20;15178:1;15167:9;15163:17;15156:47;15220:131;15346:4;15220:131;:::i;:::-;15212:139;;14939:419;;;:::o;15364:227::-;15504:34;15500:1;15492:6;15488:14;15481:58;15573:10;15568:2;15560:6;15556:15;15549:35;15364:227;:::o;15597:366::-;15739:3;15760:67;15824:2;15819:3;15760:67;:::i;:::-;15753:74;;15836:93;15925:3;15836:93;:::i;:::-;15954:2;15949:3;15945:12;15938:19;;15597:366;;;:::o;15969:419::-;16135:4;16173:2;16162:9;16158:18;16150:26;;16222:9;16216:4;16212:20;16208:1;16197:9;16193:17;16186:47;16250:131;16376:4;16250:131;:::i;:::-;16242:139;;15969:419;;;:::o;16394:237::-;16534:34;16530:1;16522:6;16518:14;16511:58;16603:20;16598:2;16590:6;16586:15;16579:45;16394:237;:::o;16637:366::-;16779:3;16800:67;16864:2;16859:3;16800:67;:::i;:::-;16793:74;;16876:93;16965:3;16876:93;:::i;:::-;16994:2;16989:3;16985:12;16978:19;;16637:366;;;:::o;17009:419::-;17175:4;17213:2;17202:9;17198:18;17190:26;;17262:9;17256:4;17252:20;17248:1;17237:9;17233:17;17226:47;17290:131;17416:4;17290:131;:::i;:::-;17282:139;;17009:419;;;:::o;17434:230::-;17574:34;17570:1;17562:6;17558:14;17551:58;17643:13;17638:2;17630:6;17626:15;17619:38;17434:230;:::o;17670:366::-;17812:3;17833:67;17897:2;17892:3;17833:67;:::i;:::-;17826:74;;17909:93;17998:3;17909:93;:::i;:::-;18027:2;18022:3;18018:12;18011:19;;17670:366;;;:::o;18042:419::-;18208:4;18246:2;18235:9;18231:18;18223:26;;18295:9;18289:4;18285:20;18281:1;18270:9;18266:17;18259:47;18323:131;18449:4;18323:131;:::i;:::-;18315:139;;18042:419;;;:::o;18467:223::-;18607:34;18603:1;18595:6;18591:14;18584:58;18676:6;18671:2;18663:6;18659:15;18652:31;18467:223;:::o;18696:366::-;18838:3;18859:67;18923:2;18918:3;18859:67;:::i;:::-;18852:74;;18935:93;19024:3;18935:93;:::i;:::-;19053:2;19048:3;19044:12;19037:19;;18696:366;;;:::o;19068:419::-;19234:4;19272:2;19261:9;19257:18;19249:26;;19321:9;19315:4;19311:20;19307:1;19296:9;19292:17;19285:47;19349:131;19475:4;19349:131;:::i;:::-;19341:139;;19068:419;;;:::o;19493:221::-;19633:34;19629:1;19621:6;19617:14;19610:58;19702:4;19697:2;19689:6;19685:15;19678:29;19493:221;:::o;19720:366::-;19862:3;19883:67;19947:2;19942:3;19883:67;:::i;:::-;19876:74;;19959:93;20048:3;19959:93;:::i;:::-;20077:2;20072:3;20068:12;20061:19;;19720:366;;;:::o;20092:419::-;20258:4;20296:2;20285:9;20281:18;20273:26;;20345:9;20339:4;20335:20;20331:1;20320:9;20316:17;20309:47;20373:131;20499:4;20373:131;:::i;:::-;20365:139;;20092:419;;;:::o;20517:239::-;20657:34;20653:1;20645:6;20641:14;20634:58;20726:22;20721:2;20713:6;20709:15;20702:47;20517:239;:::o;20762:366::-;20904:3;20925:67;20989:2;20984:3;20925:67;:::i;:::-;20918:74;;21001:93;21090:3;21001:93;:::i;:::-;21119:2;21114:3;21110:12;21103:19;;20762:366;;;:::o;21134:419::-;21300:4;21338:2;21327:9;21323:18;21315:26;;21387:9;21381:4;21377:20;21373:1;21362:9;21358:17;21351:47;21415:131;21541:4;21415:131;:::i;:::-;21407:139;;21134:419;;;:::o;21559:224::-;21699:34;21695:1;21687:6;21683:14;21676:58;21768:7;21763:2;21755:6;21751:15;21744:32;21559:224;:::o;21789:366::-;21931:3;21952:67;22016:2;22011:3;21952:67;:::i;:::-;21945:74;;22028:93;22117:3;22028:93;:::i;:::-;22146:2;22141:3;22137:12;22130:19;;21789:366;;;:::o;22161:419::-;22327:4;22365:2;22354:9;22350:18;22342:26;;22414:9;22408:4;22404:20;22400:1;22389:9;22385:17;22378:47;22442:131;22568:4;22442:131;:::i;:::-;22434:139;;22161:419;;;:::o;22586:162::-;22726:14;22722:1;22714:6;22710:14;22703:38;22586:162;:::o;22754:366::-;22896:3;22917:67;22981:2;22976:3;22917:67;:::i;:::-;22910:74;;22993:93;23082:3;22993:93;:::i;:::-;23111:2;23106:3;23102:12;23095:19;;22754:366;;;:::o;23126:419::-;23292:4;23330:2;23319:9;23315:18;23307:26;;23379:9;23373:4;23369:20;23365:1;23354:9;23350:17;23343:47;23407:131;23533:4;23407:131;:::i;:::-;23399:139;;23126:419;;;:::o;23551:180::-;23599:77;23596:1;23589:88;23696:4;23693:1;23686:15;23720:4;23717:1;23710:15;23737:185;23777:1;23794:20;23812:1;23794:20;:::i;:::-;23789:25;;23828:20;23846:1;23828:20;:::i;:::-;23823:25;;23867:1;23857:35;;23872:18;;:::i;:::-;23857:35;23914:1;23911;23907:9;23902:14;;23737:185;;;;:::o;23928:410::-;23968:7;23991:20;24009:1;23991:20;:::i;:::-;23986:25;;24025:20;24043:1;24025:20;:::i;:::-;24020:25;;24080:1;24077;24073:9;24102:30;24120:11;24102:30;:::i;:::-;24091:41;;24281:1;24272:7;24268:15;24265:1;24262:22;24242:1;24235:9;24215:83;24192:139;;24311:18;;:::i;:::-;24192:139;23976:362;23928:410;;;;:::o;24344:226::-;24484:34;24480:1;24472:6;24468:14;24461:58;24553:9;24548:2;24540:6;24536:15;24529:34;24344:226;:::o;24576:366::-;24718:3;24739:67;24803:2;24798:3;24739:67;:::i;:::-;24732:74;;24815:93;24904:3;24815:93;:::i;:::-;24933:2;24928:3;24924:12;24917:19;;24576:366;;;:::o;24948:419::-;25114:4;25152:2;25141:9;25137:18;25129:26;;25201:9;25195:4;25191:20;25187:1;25176:9;25172:17;25165:47;25229:131;25355:4;25229:131;:::i;:::-;25221:139;;24948:419;;;:::o;25373:235::-;25513:34;25509:1;25501:6;25497:14;25490:58;25582:18;25577:2;25569:6;25565:15;25558:43;25373:235;:::o;25614:366::-;25756:3;25777:67;25841:2;25836:3;25777:67;:::i;:::-;25770:74;;25853:93;25942:3;25853:93;:::i;:::-;25971:2;25966:3;25962:12;25955:19;;25614:366;;;:::o;25986:419::-;26152:4;26190:2;26179:9;26175:18;26167:26;;26239:9;26233:4;26229:20;26225:1;26214:9;26210:17;26203:47;26267:131;26393:4;26267:131;:::i;:::-;26259:139;;25986:419;;;:::o;26411:170::-;26551:22;26547:1;26539:6;26535:14;26528:46;26411:170;:::o;26587:366::-;26729:3;26750:67;26814:2;26809:3;26750:67;:::i;:::-;26743:74;;26826:93;26915:3;26826:93;:::i;:::-;26944:2;26939:3;26935:12;26928:19;;26587:366;;;:::o;26959:419::-;27125:4;27163:2;27152:9;27148:18;27140:26;;27212:9;27206:4;27202:20;27198:1;27187:9;27183:17;27176:47;27240:131;27366:4;27240:131;:::i;:::-;27232:139;;26959:419;;;:::o;27384:442::-;27533:4;27571:2;27560:9;27556:18;27548:26;;27584:71;27652:1;27641:9;27637:17;27628:6;27584:71;:::i;:::-;27665:72;27733:2;27722:9;27718:18;27709:6;27665:72;:::i;:::-;27747;27815:2;27804:9;27800:18;27791:6;27747:72;:::i;:::-;27384:442;;;;;;:::o;27832:237::-;27972:34;27968:1;27960:6;27956:14;27949:58;28041:20;28036:2;28028:6;28024:15;28017:45;27832:237;:::o;28075:366::-;28217:3;28238:67;28302:2;28297:3;28238:67;:::i;:::-;28231:74;;28314:93;28403:3;28314:93;:::i;:::-;28432:2;28427:3;28423:12;28416:19;;28075:366;;;:::o;28447:419::-;28613:4;28651:2;28640:9;28636:18;28628:26;;28700:9;28694:4;28690:20;28686:1;28675:9;28671:17;28664:47;28728:131;28854:4;28728:131;:::i;:::-;28720:139;;28447:419;;;:::o;28872:225::-;29012:34;29008:1;29000:6;28996:14;28989:58;29081:8;29076:2;29068:6;29064:15;29057:33;28872:225;:::o;29103:366::-;29245:3;29266:67;29330:2;29325:3;29266:67;:::i;:::-;29259:74;;29342:93;29431:3;29342:93;:::i;:::-;29460:2;29455:3;29451:12;29444:19;;29103:366;;;:::o;29475:419::-;29641:4;29679:2;29668:9;29664:18;29656:26;;29728:9;29722:4;29718:20;29714:1;29703:9;29699:17;29692:47;29756:131;29882:4;29756:131;:::i;:::-;29748:139;;29475:419;;;:::o

Swarm Source

ipfs://99d9160d23a2d29b6f374a1654f7cbfb96697bf44b733fe25e160221371c5696

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.