POL Price: $0.218314 (-0.00%)
Gas: 34 GWei
 

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Transfer687306972025-03-06 21:11:0847 days ago1741295468IN
0x5c947eB8...3D0a201d7
0 POL0.0022112943.07500731
Transfer685653772025-03-02 17:51:5051 days ago1740937910IN
0x5c947eB8...3D0a201d7
0 POL0.038339561,300.88111588
Approve667288232025-01-15 13:00:3797 days ago1736946037IN
0x5c947eB8...3D0a201d7
0 POL0.002313750
Approve656263812024-12-18 8:52:28125 days ago1734511948IN
0x5c947eB8...3D0a201d7
0 POL0.02058793442.27582672
Transfer653075462024-12-10 10:12:54133 days ago1733825574IN
0x5c947eB8...3D0a201d7
0 POL0.0032677770.14808507
Approve647187662024-11-25 15:21:30148 days ago1732548090IN
0x5c947eB8...3D0a201d7
0 POL0.01417761304.56750181
Transfer647173582024-11-25 14:31:06148 days ago1732545066IN
0x5c947eB8...3D0a201d7
0 POL0.02287775491.23411857
Permit642311252024-11-13 10:13:43160 days ago1731492823IN
0x5c947eB8...3D0a201d7
0 POL0.0021091438.75388618
Approve633485302024-10-22 10:54:26182 days ago1729594466IN
0x5c947eB8...3D0a201d7
0 POL0.00572966123.08616104
Approve633327692024-10-22 1:35:33183 days ago1729560933IN
0x5c947eB8...3D0a201d7
0 POL0.0008197733.78291618
Transfer622890192024-09-26 6:52:28209 days ago1727333548IN
0x5c947eB8...3D0a201d7
0 POL0.00256850
Approve617517592024-09-12 22:58:40222 days ago1726181920IN
0x5c947eB8...3D0a201d7
0 POL0.001396530.00000002
Approve616262632024-09-09 19:54:43225 days ago1725911683IN
0x5c947eB8...3D0a201d7
0 POL0.002313750
Transfer613797422024-09-03 15:10:14231 days ago1725376214IN
0x5c947eB8...3D0a201d7
0 POL0.0046395890.35577213
Approve607435722024-08-18 14:35:07247 days ago1723991707IN
0x5c947eB8...3D0a201d7
0 POL0.0008007733.00000001
Purchase Utility604240752024-08-10 15:09:35255 days ago1723302575IN
0x5c947eB8...3D0a201d7
0 POL0.0023838630.00000006
Purchase Utility604240552024-08-10 15:08:53255 days ago1723302533IN
0x5c947eB8...3D0a201d7
0 POL0.0034098630.00000007
Purchase Utility603515982024-08-08 19:37:06257 days ago1723145826IN
0x5c947eB8...3D0a201d7
0 POL0.0025522230.00000002
Approve602423082024-08-06 0:45:31260 days ago1722905131IN
0x5c947eB8...3D0a201d7
0 POL0.0014662231.68581535
Purchase Utility593057622024-07-13 10:06:50283 days ago1720865210IN
0x5c947eB8...3D0a201d7
0 POL0.0025518630.00000031
Purchase Utility590920802024-07-08 2:34:53289 days ago1720406093IN
0x5c947eB8...3D0a201d7
0 POL0.0036052152
Purchase Utility590920802024-07-08 2:34:53289 days ago1720406093IN
0x5c947eB8...3D0a201d7
0 POL0.004131452
Purchase Utility577584622024-06-04 13:01:08322 days ago1717506068IN
0x5c947eB8...3D0a201d7
0 POL0.0025522230.00000003
Approve576274432024-06-01 2:51:10326 days ago1717210270IN
0x5c947eB8...3D0a201d7
0 POL0.002327550
Purchase Utility567686152024-05-09 16:46:19348 days ago1715273179IN
0x5c947eB8...3D0a201d7
0 POL0.0034547740.61388844
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SpitToken

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 9999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 4: SpitToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;

import "./ERC20.sol";
import "./FXBaseChildTunnel.sol";
import "./Ownable.sol";

/**
   __ _                                               
  / /| | __ _ _ __ ___   __ _/\   /\___ _ __ ___  ___ 
 / / | |/ _` | '_ ` _ \ / _` \ \ / / _ \ '__/ __|/ _ \
/ /__| | (_| | | | | | | (_| |\ V /  __/ |  \__ \  __/
\____/_|\__,_|_| |_| |_|\__,_| \_/ \___|_|  |___/\___|

**/

/// @title $SPIT Token
/// @author delta devs (https://twitter.com/deltadevelopers)

enum TokenType {
    StaticLlama,
    AnimatedLlama,
    SilverBoost,
    GoldBoost,
    PixletCanvas,
    LlamaDraws
}

contract SpitToken is ERC20, FxBaseChildTunnel, Ownable {
    /*///////////////////////////////////////////////////////////////
                            STORAGE
    /////////////////////////////////////////////////////////////*/

    struct Rewards {
        uint256 staticLlama;
        uint256 animatedLlama;
        uint256 silverEnergy;
        uint256 goldEnergy;
        uint256 pixletCanvas;
        uint256 llamaDraws;
    }

    /// @notice The current reward rates per token type.
    Rewards public rewards;

    /// @notice Keeps track of the staking balances (how much is being staked) of each token type for all holders.
    mapping(address => mapping(uint256 => uint256)) public balances;

    /// @notice Keeps track of the timestamp of when a holder last withdrew their rewards.
    mapping(address => uint256) public lastUpdated;

    /*///////////////////////////////////////////////////////////////
                            CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _fxChild)
        FxBaseChildTunnel(_fxChild)
        ERC20("Spit Token", "SPIT", 18)
    {
        rewards.staticLlama = (uint256(10) * 1e18) / 1 days;
        rewards.animatedLlama = (uint256(30) * 1e18) / 1 days;
        rewards.silverEnergy = (uint256(4) * 1e18) / 1 days;
        rewards.goldEnergy = (uint256(12) * 1e18) / 1 days;
        rewards.llamaDraws = (uint256(1) * 1e18) / 1 days;
        rewards.pixletCanvas = (uint256(1) * 1e18) / 1 days;

        _mint(address(this), 100_000_000 * 1e18);
        uint256 allocation = (30_000_000 + 5_000_000 + 5_000_000 + 2_500_000) *
            1e18;
        balanceOf[address(this)] -= allocation;

        unchecked {
            balanceOf[
                0xcc5cDaB325689Bcd654aB8611c528e60CC8CBe6A
            ] += (30_000_000 * 1e18);
            balanceOf[
                0x58B96f5C8ef1CdD7e12a9b71Bbbe575E7B26b142
            ] += (5_000_000 * 1e18);
            balanceOf[
                0x58caDf06fcC222f573F81B08B6Cc156e420D35d7
            ] += (5_000_000 * 1e18);
            balanceOf[
                0x5D31E4A33470e1a15e54aAdD1d913b613fd0E9ED
            ] += (2_500_000 * 1e18);
        }

        emit Transfer(
            address(this),
            0xcc5cDaB325689Bcd654aB8611c528e60CC8CBe6A,
            30_000_000 * 1e18
        );
        emit Transfer(
            address(this),
            0x58B96f5C8ef1CdD7e12a9b71Bbbe575E7B26b142,
            5_000_000 * 1e18
        );
        emit Transfer(
            address(this),
            0x58caDf06fcC222f573F81B08B6Cc156e420D35d7,
            5_000_000 * 1e18
        );
        emit Transfer(
            address(this),
            0x5D31E4A33470e1a15e54aAdD1d913b613fd0E9ED,
            2_500_000 * 1e18
        );
    }

    /*///////////////////////////////////////////////////////////////
                            STAKING LOGIC
    //////////////////////////////////////////////////////////////*/

    /// @notice Called when withdrawing rewards. $SPIT is transferred to the address, and the lastUpdated field is updated.
    /// @param account The address to mint to.
    modifier updateReward(address account) {
        uint256 amount = earned(account);
        balanceOf[address(this)] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[account] += amount;
        }

        lastUpdated[account] = block.timestamp;
        emit Transfer(address(this), account, amount);
        _;
    }

    /// @notice Internal call to stake an amount of a specific token type.
    /// @param account The address which will be staking.
    /// @param tokenType The token type to stake.
    /// @param amount The amount to stake.
    function processStake(
        address account,
        TokenType tokenType,
        uint256 amount
    ) internal updateReward(account) {
        balances[account][uint256(tokenType)] += amount;
    }

    /// @notice Internal call to unstake an amount of a specific token type.
    /// @param account The address which will be unstaking.
    /// @param tokenType The token type to unstake.
    /// @param amount The amount to unstake.
    function processUnstake(
        address account,
        TokenType tokenType,
        uint256 amount
    ) internal updateReward(account) {
        balances[account][uint256(tokenType)] -= amount;
    }

    /**
     * @notice Process message received from FxChild
     * @param stateId unique state id
     * @param sender root message sender
     * @param message bytes message that was sent from Root Tunnel
     */
    function _processMessageFromRoot(
        uint256 stateId,
        address sender,
        bytes memory message
    ) internal override validateSender(sender) {
        (address from, uint256 token, uint256 count, bool action) = abi.decode(
            message,
            (address, uint256, uint256, bool)
        );
        action
            ? processStake(from, TokenType(token), count)
            : processUnstake(from, TokenType(token), count);
    }

    /*///////////////////////////////////////////////////////////////
                            USER UTILITIES
    //////////////////////////////////////////////////////////////*/

    /// @notice Forwards a user's purchase in SPIT to this contract using EIP-2612
    /// @dev This function exists so that the permit and transfer can be done in a single transaction.
    function purchaseUtility(
        address owner,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public updateReward(owner) {
        permit(owner, msg.sender, value, deadline, v, r, s);
        transferFrom(owner, address(this), value);
    }

    /// @notice Calculates the total amount of rewards accumulated for a staker, for staking all owned token types.
    /// @dev Calculates based on when the staker last withdrew rewards, and compares it with the current block's timestamp.
    /// @param account The account to calculate the accumulated rewards for.
    function earned(address account) public view returns (uint256) {
        return
            spitPerSecond(account) * (block.timestamp - lastUpdated[account]);
    }

    /// @notice Calculates the current balance of the user including the unclaimed rewards.
    /// @dev Unclaimed rewards are withdrawn automatically when a utility purchase is made or an unstake/stake occurs.
    function totalBalance(address account) public view returns (uint256) {
        return balanceOf[account] + earned(account);
    }

    /// @notice Calculates the amount of SPIT earned per second by the given user
    /// @param account The account to calculate the accumulated rewards for.
    function spitPerSecond(address account) public view returns (uint256) {
        return ((balances[account][0] * rewards.staticLlama) +
            (balances[account][1] * rewards.animatedLlama) +
            (min(balances[account][2], balances[account][0]) *
                rewards.silverEnergy) +
            (min(balances[account][3], balances[account][1]) *
                rewards.goldEnergy) +
            (balances[account][4] * rewards.pixletCanvas) +
            (balances[account][5] * rewards.llamaDraws));
    }

    /*///////////////////////////////////////////////////////////////
                            ADMIN UTILITIES
    //////////////////////////////////////////////////////////////*/

    /// @notice Allows the contract owner to burn SPIT owned by the contract.
    function burn(uint256 amount) public onlyOwner {
        _burn(address(this), amount);
    }

    /// @notice Allows the contract owner to airdrop SPIT owned by the contract.
    function airdrop(address[] calldata accounts, uint256[] calldata amounts) public onlyOwner {
        require(accounts.length == amounts.length);
        for(uint i = 0; i < accounts.length; i++) {
            uint amount = amounts[i];
            balanceOf[address(this)] -= amount;

            // Cannot overflow because the sum of all user
            // balances can't exceed the max uint256 value.
            unchecked {
                balanceOf[accounts[i]] += amount;
            }

            emit Transfer(address(this), accounts[i], amount);
        }
    }

    /// @notice Allows the contract owner to mint SPIT to the contract.
    function mint(uint256 amount) public onlyOwner {
        _mint(address(this), amount);
    }

    /// @notice Withdraw  $SPIT being held on this contract to the requested address.
    /// @param recipient The address to withdraw the funds to.
    /// @param amount The amount of SPIT to withdraw
    function withdrawSpit(address recipient, uint256 amount) public onlyOwner {
        balanceOf[address(this)] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[recipient] += amount;
        }

        emit Transfer(address(this), recipient, amount);
    }

    /// @notice Allows the contract deployer to sets the reward rates for each token type.
    /// @param staticLlama The reward rate for staking a static llama.
    /// @param animatedLlama The reward rate for staking an animated llama.
    /// @param silverEnergy The reward rate for staking a silver llama boost.
    /// @param goldEnergy The reward rate for staking a gold llama boost.
    /// @param pixletCanvas The reward rate for staking a pixlet canvas.
    function setRewardRates(
        uint256 staticLlama,
        uint256 animatedLlama,
        uint256 silverEnergy,
        uint256 goldEnergy,
        uint256 pixletCanvas,
        uint256 llamaDraws
    ) public onlyOwner {
        rewards.staticLlama = staticLlama;
        rewards.animatedLlama = animatedLlama;
        rewards.silverEnergy = silverEnergy;
        rewards.goldEnergy = goldEnergy;
        rewards.pixletCanvas = pixletCanvas;
        rewards.llamaDraws = llamaDraws;
    }

    function updateFxRootRunnel(address _fxRootTunnel) external onlyOwner {
        fxRootTunnel = _fxRootTunnel;
    }

    /*///////////////////////////////////////////////////////////////
                                HELPERS
    //////////////////////////////////////////////////////////////*/

    function min(uint256 x, uint256 y) internal pure returns (uint256) {
        return x < y ? x : y;
    }
}

File 2 of 4: ERC20.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*///////////////////////////////////////////////////////////////
                                  EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*///////////////////////////////////////////////////////////////
                             METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*///////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*///////////////////////////////////////////////////////////////
                             EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    bytes32 public constant PERMIT_TYPEHASH =
        keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*///////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*///////////////////////////////////////////////////////////////
                              ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*///////////////////////////////////////////////////////////////
                              EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            bytes32 digest = keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR(),
                    keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
                )
            );

            address recoveredAddress = ecrecover(digest, v, r, s);

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

File 3 of 4: FXBaseChildTunnel.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// IFxMessageProcessor represents interface to process message
interface IFxMessageProcessor {
    function processMessageFromRoot(
        uint256 stateId,
        address rootMessageSender,
        bytes calldata data
    ) external;
}

/**
 * @notice Mock child tunnel contract to receive and send message from L2
 */
abstract contract FxBaseChildTunnel is IFxMessageProcessor {
    // MessageTunnel on L1 will get data from this event
    event MessageSent(bytes message);

    // fx child
    address public fxChild;

    // fx root tunnel
    address public fxRootTunnel;

    constructor(address _fxChild) {
        fxChild = _fxChild;
    }

    // Sender must be fxRootTunnel in case of ERC20 tunnel
    modifier validateSender(address sender) {
        require(sender == fxRootTunnel, "FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT");
        _;
    }

    // set fxRootTunnel if not set already
    function setFxRootTunnel(address _fxRootTunnel) external {
        require(fxRootTunnel == address(0x0), "FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET");
        fxRootTunnel = _fxRootTunnel;
    }

    function processMessageFromRoot(
        uint256 stateId,
        address rootMessageSender,
        bytes calldata data
    ) external override {
        require(msg.sender == fxChild, "FxBaseChildTunnel: INVALID_SENDER");
        _processMessageFromRoot(stateId, rootMessageSender, data);
    }

    /**
     * @notice Emit message that can be received on Root Tunnel
     * @dev Call the internal function when need to emit message
     * @param message bytes message that will be sent to Root Tunnel
     * some message examples -
     *   abi.encode(tokenId);
     *   abi.encode(tokenId, tokenMetadata);
     *   abi.encode(messageType, messageData);
     */
    function _sendMessageToRoot(bytes memory message) internal {
        emit MessageSent(message);
    }

    /**
     * @notice Process message received from Root Tunnel
     * @dev function needs to be implemented to handle message as per requirement
     * This is called by onStateReceive function.
     * Since it is called via a system call, any event will not be emitted during its execution.
     * @param stateId unique state id
     * @param sender root message sender
     * @param message bytes message that was sent from Root Tunnel
     */
    function _processMessageFromRoot(
        uint256 stateId,
        address sender,
        bytes memory message
    ) internal virtual;
}

File 4 of 4: Ownable.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.10;

error NotOwner();

// https://github.com/m1guelpf/erc721-drop/blob/main/src/LilOwnable.sol
abstract contract Ownable {
    address internal _owner;

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

    modifier onlyOwner() {
        require(_owner == msg.sender);
        _;
    }

    constructor() {
        _owner = msg.sender;
    }

    function owner() external view returns (address) {
        return _owner;
    }

    function transferOwnership(address _newOwner) external {
        if (msg.sender != _owner) revert NotOwner();

        _owner = _newOwner;
    }

    function renounceOwnership() public {
        if (msg.sender != _owner) revert NotOwner();

        _owner = address(0);
    }

    function supportsInterface(bytes4 interfaceId)
        public
        pure
        virtual
        returns (bool)
    {
        return interfaceId == 0x7f5828d0; // ERC165 Interface ID for ERC173
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_fxChild","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"MessageSent","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fxChild","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fxRootTunnel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastUpdated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stateId","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"purchaseUtility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"uint256","name":"staticLlama","type":"uint256"},{"internalType":"uint256","name":"animatedLlama","type":"uint256"},{"internalType":"uint256","name":"silverEnergy","type":"uint256"},{"internalType":"uint256","name":"goldEnergy","type":"uint256"},{"internalType":"uint256","name":"pixletCanvas","type":"uint256"},{"internalType":"uint256","name":"llamaDraws","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_fxRootTunnel","type":"address"}],"name":"setFxRootTunnel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"staticLlama","type":"uint256"},{"internalType":"uint256","name":"animatedLlama","type":"uint256"},{"internalType":"uint256","name":"silverEnergy","type":"uint256"},{"internalType":"uint256","name":"goldEnergy","type":"uint256"},{"internalType":"uint256","name":"pixletCanvas","type":"uint256"},{"internalType":"uint256","name":"llamaDraws","type":"uint256"}],"name":"setRewardRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"spitPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"_fxRootTunnel","type":"address"}],"name":"updateFxRootRunnel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawSpit","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e06040523480156200001157600080fd5b506040516200264d3803806200264d8339810160408190526200003491620005aa565b604080518082018252600a81526929b834ba102a37b5b2b760b11b60208083019182528351808501909452600484526314d4125560e21b908401528151849391601291620000859160009162000504565b5081516200009b90600190602085019062000504565b5060ff81166080524660a052620000b16200040c565b60c0525050600680546001600160a01b039093166001600160a01b031993841617905550600880549091163317905562015180620000f9600a670de0b6b3a7640000620005f2565b62000105919062000614565b6009556201518062000121601e670de0b6b3a7640000620005f2565b6200012d919062000614565b600a5562015180620001496004670de0b6b3a7640000620005f2565b62000155919062000614565b600b556201518062000171600c670de0b6b3a7640000620005f2565b6200017d919062000614565b600c5562015180620001996001670de0b6b3a7640000620005f2565b620001a5919062000614565b600e5562015180620001c16001670de0b6b3a7640000620005f2565b620001cd919062000614565b600d55620001e7306a52b7d2dcc80cd2e4000000620004a8565b30600090815260036020526040812080546a2327b99dd505733a800000928392916200021590849062000637565b9091555050600360209081527f0551b56a5f263bfefedbcb4bc1f7c3fbf3ef24df3a934bd0a2331ff25e54b83a80546a18d0bf423c03d8de0000009081019091557f68faadd0a6fb6124a1181eb8d65095d91aa37944ca5d44edef8262bb460fe99580546a0422ca8b0a00a4250000009081019091557f42131c8053be2cc290e562a573cc75ca7362ba6caf767be05e3ccdc90cde18b480549091019055735d31e4a33470e1a15e54aadd1d913b613fd0e9ed6000527f74a96a185cc1aa45fb002e8b6ca774581877fb4d0740ce1fbbbf8e07b7f2b7f180546a021165458500521280000001905560405190815273cc5cdab325689bcd654ab8611c528e60cc8cbe6a9130916000805160206200262d833981519152910160405180910390a36040516a0422ca8b0a00a42500000081527358b96f5c8ef1cdd7e12a9b71bbbe575e7b26b1429030906000805160206200262d8339815191529060200160405180910390a36040516a0422ca8b0a00a42500000081527358cadf06fcc222f573f81b08b6cc156e420d35d79030906000805160206200262d8339815191529060200160405180910390a36040516a02116545850052128000008152735d31e4a33470e1a15e54aadd1d913b613fd0e9ed9030906000805160206200262d8339815191529060200160405180910390a350506200074b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200044091906200068d565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060026000828254620004bc919062000730565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481526000805160206200262d833981519152910160405180910390a35050565b828054620005129062000651565b90600052602060002090601f01602090048101928262000536576000855562000581565b82601f106200055157805160ff191683800117855562000581565b8280016001018555821562000581579182015b828111156200058157825182559160200191906001019062000564565b506200058f92915062000593565b5090565b5b808211156200058f576000815560010162000594565b600060208284031215620005bd57600080fd5b81516001600160a01b0381168114620005d557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200060f576200060f620005dc565b500290565b6000826200063257634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156200064c576200064c620005dc565b500390565b600181811c908216806200066657607f821691505b6020821081036200068757634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620006aa57607f831692505b60208084108203620006ca57634e487b7160e01b86526022600452602486fd5b818015620006e15760018114620006f35762000722565b60ff1986168952848901965062000722565b60008a81526020902060005b868110156200071a5781548b820152908501908301620006ff565b505084890196505b509498975050505050505050565b60008219821115620007465762000746620005dc565b500190565b60805160a05160c051611eb26200077b60003960006108800152600061084b0152600061035a0152611eb26000f3fe608060405234801561001057600080fd5b50600436106102255760003560e01c806370e22b8a1161012a5780639a7c4b71116100bd578063cbf1304d1161008c578063d505accf11610071578063d505accf1461057c578063dd62ed3e1461058f578063f2fde38b146105ba57600080fd5b8063cbf1304d1461053e578063cc9b52391461056957600080fd5b80639a7c4b71146104ba5780639ec5a894146104cd578063a0712d6814610518578063a9059cbb1461052b57600080fd5b806388837094116100f9578063888370941461047b5780638afe5fa71461048e5780638da5cb5b146104a157806395d89b41146104b257600080fd5b806370e22b8a1461042d578063715018a6146104405780637ecebe00146104485780637f1e9cb01461046857600080fd5b806330adf81f116101bd578063450d11f01161018c578063672434821161017157806367243482146103e75780636eacd398146103fa57806370a082311461040d57600080fd5b8063450d11f0146103a95780635362f69f146103d457600080fd5b806330adf81f1461032e578063313ce567146103555780633644e5151461038e57806342966c681461039657600080fd5b80630a6f93e6116101f95780630a6f93e6146102dd57806318160ddd146102fd57806323b872dd146103065780632836e4b41461031957600080fd5b80628cc2621461022a57806301ffc9a71461025057806306fdde03146102b5578063095ea7b3146102ca575b600080fd5b61023d6102383660046117e2565b6105cd565b6040519081526020015b60405180910390f35b6102a561025e3660046117ff565b7fffffffff00000000000000000000000000000000000000000000000000000000167f7f5828d0000000000000000000000000000000000000000000000000000000001490565b6040519015158152602001610247565b6102bd610609565b6040516102479190611841565b6102a56102d83660046118b4565b610697565b61023d6102eb3660046117e2565b60106020526000908152604090205481565b61023d60025481565b6102a56103143660046118e0565b610703565b61032c610327366004611921565b610813565b005b61023d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610247565b61023d610847565b61032c6103a4366004611964565b6108a2565b6006546103bc906001600160a01b031681565b6040516001600160a01b039091168152602001610247565b61032c6103e23660046117e2565b6108c6565b61032c6103f53660046119c9565b610917565b61023d6104083660046117e2565b610a76565b61023d61041b3660046117e2565b60036020526000908152604090205481565b61032c61043b3660046118b4565b610aa4565b61032c610b3d565b61023d6104563660046117e2565b60056020526000908152604090205481565b6007546103bc906001600160a01b031681565b61032c6104893660046117e2565b610bab565b61032c61049c366004611a4b565b610c49565b6008546001600160a01b03166103bc565b6102bd610d01565b61032c6104c8366004611aa5565b610d0e565b600954600a54600b54600c54600d54600e546104eb95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610247565b61032c610526366004611964565b610def565b6102a56105393660046118b4565b610e10565b61023d61054c3660046118b4565b600f60209081526000928352604080842090915290825290205481565b61023d6105773660046117e2565b610e88565b61032c61058a366004611b2e565b611009565b61023d61059d366004611b9c565b600460209081526000928352604080842090915290825290205481565b61032c6105c83660046117e2565b6112f4565b6001600160a01b0381166000908152601060205260408120546105f09042611c04565b6105f983610e88565b6106039190611c1b565b92915050565b6000805461061690611c58565b80601f016020809104026020016040519081016040528092919081815260200182805461064290611c58565b801561068f5780601f106106645761010080835404028352916020019161068f565b820191906000526020600020905b81548152906001019060200180831161067257829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f29086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077d576107588382611c04565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107a5908490611c04565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108009087815260200190565b60405180910390a3506001949350505050565b6008546001600160a01b0316331461082a57600080fd5b600995909555600a93909355600b91909155600c55600d55600e55565b60007f0000000000000000000000000000000000000000000000000000000000000000461461087d57610878611372565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6008546001600160a01b031633146108b957600080fd5b6108c3308261140c565b50565b6008546001600160a01b031633146108dd57600080fd5b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461092e57600080fd5b82811461093a57600080fd5b60005b83811015610a6f57600083838381811061095957610959611cab565b9050602002013590508060036000306001600160a01b03166001600160a01b0316815260200190815260200160002060008282546109979190611c04565b90915550819050600360008888868181106109b4576109b4611cab565b90506020020160208101906109c991906117e2565b6001600160a01b031681526020810191909152604001600020805490910190558585838181106109fb576109fb611cab565b9050602002016020810190610a1091906117e2565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a5491815260200190565b60405180910390a35080610a6781611cda565b91505061093d565b5050505050565b6000610a81826105cd565b6001600160a01b0383166000908152600360205260409020546106039190611d12565b6008546001600160a01b03163314610abb57600080fd5b3060009081526003602052604081208054839290610ada908490611c04565b90915550506001600160a01b038216600081815260036020526040908190208054840190555130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b319085815260200190565b60405180910390a35050565b6008546001600160a01b03163314610b81576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6007546001600160a01b0316156108dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4678426173654368696c6454756e6e656c3a20524f4f545f54554e4e454c5f4160448201527f4c52454144595f5345540000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b856000610c55826105cd565b30600090815260036020526040812080549293508392909190610c79908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb88338989898989611009565b610cf6883089610703565b505050505050505050565b6001805461061690611c58565b6006546001600160a01b03163314610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f52000000000000000000000000000000000000000000000000000000000000006064820152608401610c40565b610de9848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148092505050565b50505050565b6008546001600160a01b03163314610e0657600080fd5b6108c3308261158d565b33600090815260036020526040812080548391908390610e31908490611c04565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106f29086815260200190565b600e546001600160a01b0382166000908152600f60209081526040808320600584529091528120549091610ebb91611c1b565b600d546001600160a01b0384166000908152600f6020908152604080832060048452909152902054610eed9190611c1b565b600c546001600160a01b0385166000908152600f60209081526040808320600384529091528082205460018352912054610f2791906115f1565b610f319190611c1b565b600b546001600160a01b0386166000908152600f602090815260408083206002845290915280822054828052912054610f6a91906115f1565b610f749190611c1b565b600a546001600160a01b0387166000908152600f6020908152604080832060018452909152902054610fa69190611c1b565b6009546001600160a01b0388166000908152600f60209081526040808320838052909152902054610fd79190611c1b565b610fe19190611d12565b610feb9190611d12565b610ff59190611d12565b610fff9190611d12565b6106039190611d12565b42841015611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610c40565b600061107d610847565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156111cf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906112235750886001600160a01b0316816001600160a01b0316145b611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610c40565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6008546001600160a01b03163314611338576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516113a49190611d2a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821660009081526003602052604081208054839290611434908490611c04565b90915550506002805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b31565b60075482906001600160a01b0380831691161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f525f46524f4d5f524f4f540000000000000000000000000000000000000000006064820152608401610c40565b600080600080858060200190518101906115399190611dfc565b935093509350935080611567576115628484600581111561155c5761155c611e4d565b84611609565b611583565b6115838484600581111561157d5761157d611e4d565b846116f1565b5050505050505050565b806002600082825461159f9190611d12565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610b31565b60008183106116005781611602565b825b9392505050565b826000611615826105cd565b30600090815260036020526040812080549293508392909190611639908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156116c8576116c8611e4d565b815260200190815260200160002060008282546116e59190611c04565b90915550505050505050565b8260006116fd826105cd565b30600090815260036020526040812080549293508392909190611721908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156117b0576117b0611e4d565b815260200190815260200160002060008282546116e59190611d12565b6001600160a01b03811681146108c357600080fd5b6000602082840312156117f457600080fd5b8135611602816117cd565b60006020828403121561181157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461160257600080fd5b600060208083528351808285015260005b8181101561186e57858101830151858201604001528201611852565b81811115611880576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600080604083850312156118c757600080fd5b82356118d2816117cd565b946020939093013593505050565b6000806000606084860312156118f557600080fd5b8335611900816117cd565b92506020840135611910816117cd565b929592945050506040919091013590565b60008060008060008060c0878903121561193a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561197657600080fd5b5035919050565b60008083601f84011261198f57600080fd5b50813567ffffffffffffffff8111156119a757600080fd5b6020830191508360208260051b85010111156119c257600080fd5b9250929050565b600080600080604085870312156119df57600080fd5b843567ffffffffffffffff808211156119f757600080fd5b611a038883890161197d565b90965094506020870135915080821115611a1c57600080fd5b50611a298782880161197d565b95989497509550505050565b803560ff81168114611a4657600080fd5b919050565b60008060008060008060c08789031215611a6457600080fd5b8635611a6f816117cd565b95506020870135945060408701359350611a8b60608801611a35565b92506080870135915060a087013590509295509295509295565b60008060008060608587031215611abb57600080fd5b843593506020850135611acd816117cd565b9250604085013567ffffffffffffffff80821115611aea57600080fd5b818701915087601f830112611afe57600080fd5b813581811115611b0d57600080fd5b886020828501011115611b1f57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611b4957600080fd5b8735611b54816117cd565b96506020880135611b64816117cd565b95506040880135945060608801359350611b8060808901611a35565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611baf57600080fd5b8235611bba816117cd565b91506020830135611bca816117cd565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c1657611c16611bd5565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c5357611c53611bd5565b500290565b600181811c90821680611c6c57607f821691505b602082108103611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d0b57611d0b611bd5565b5060010190565b60008219821115611d2557611d25611bd5565b500190565b600080835481600182811c915080831680611d4657607f831692505b60208084108203611d7e577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015611d925760018114611dc157611dee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650611dee565b60008a81526020902060005b86811015611de65781548b820152908501908301611dcd565b505084890196505b509498975050505050505050565b60008060008060808587031215611e1257600080fd5b8451611e1d816117cd565b80945050602085015192506040850151915060608501518015158114611e4257600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212206cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa64736f6c634300080d0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000008397259c983751daf40400790063935a11afa28a

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102255760003560e01c806370e22b8a1161012a5780639a7c4b71116100bd578063cbf1304d1161008c578063d505accf11610071578063d505accf1461057c578063dd62ed3e1461058f578063f2fde38b146105ba57600080fd5b8063cbf1304d1461053e578063cc9b52391461056957600080fd5b80639a7c4b71146104ba5780639ec5a894146104cd578063a0712d6814610518578063a9059cbb1461052b57600080fd5b806388837094116100f9578063888370941461047b5780638afe5fa71461048e5780638da5cb5b146104a157806395d89b41146104b257600080fd5b806370e22b8a1461042d578063715018a6146104405780637ecebe00146104485780637f1e9cb01461046857600080fd5b806330adf81f116101bd578063450d11f01161018c578063672434821161017157806367243482146103e75780636eacd398146103fa57806370a082311461040d57600080fd5b8063450d11f0146103a95780635362f69f146103d457600080fd5b806330adf81f1461032e578063313ce567146103555780633644e5151461038e57806342966c681461039657600080fd5b80630a6f93e6116101f95780630a6f93e6146102dd57806318160ddd146102fd57806323b872dd146103065780632836e4b41461031957600080fd5b80628cc2621461022a57806301ffc9a71461025057806306fdde03146102b5578063095ea7b3146102ca575b600080fd5b61023d6102383660046117e2565b6105cd565b6040519081526020015b60405180910390f35b6102a561025e3660046117ff565b7fffffffff00000000000000000000000000000000000000000000000000000000167f7f5828d0000000000000000000000000000000000000000000000000000000001490565b6040519015158152602001610247565b6102bd610609565b6040516102479190611841565b6102a56102d83660046118b4565b610697565b61023d6102eb3660046117e2565b60106020526000908152604090205481565b61023d60025481565b6102a56103143660046118e0565b610703565b61032c610327366004611921565b610813565b005b61023d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61037c7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff9091168152602001610247565b61023d610847565b61032c6103a4366004611964565b6108a2565b6006546103bc906001600160a01b031681565b6040516001600160a01b039091168152602001610247565b61032c6103e23660046117e2565b6108c6565b61032c6103f53660046119c9565b610917565b61023d6104083660046117e2565b610a76565b61023d61041b3660046117e2565b60036020526000908152604090205481565b61032c61043b3660046118b4565b610aa4565b61032c610b3d565b61023d6104563660046117e2565b60056020526000908152604090205481565b6007546103bc906001600160a01b031681565b61032c6104893660046117e2565b610bab565b61032c61049c366004611a4b565b610c49565b6008546001600160a01b03166103bc565b6102bd610d01565b61032c6104c8366004611aa5565b610d0e565b600954600a54600b54600c54600d54600e546104eb95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610247565b61032c610526366004611964565b610def565b6102a56105393660046118b4565b610e10565b61023d61054c3660046118b4565b600f60209081526000928352604080842090915290825290205481565b61023d6105773660046117e2565b610e88565b61032c61058a366004611b2e565b611009565b61023d61059d366004611b9c565b600460209081526000928352604080842090915290825290205481565b61032c6105c83660046117e2565b6112f4565b6001600160a01b0381166000908152601060205260408120546105f09042611c04565b6105f983610e88565b6106039190611c1b565b92915050565b6000805461061690611c58565b80601f016020809104026020016040519081016040528092919081815260200182805461064290611c58565b801561068f5780601f106106645761010080835404028352916020019161068f565b820191906000526020600020905b81548152906001019060200180831161067257829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f29086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077d576107588382611c04565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107a5908490611c04565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108009087815260200190565b60405180910390a3506001949350505050565b6008546001600160a01b0316331461082a57600080fd5b600995909555600a93909355600b91909155600c55600d55600e55565b60007f0000000000000000000000000000000000000000000000000000000000000089461461087d57610878611372565b905090565b507fce0ccd319046c79e1db11e8e30bb37f98eb3f6882895139ea6ce54c5bad5f6fe90565b6008546001600160a01b031633146108b957600080fd5b6108c3308261140c565b50565b6008546001600160a01b031633146108dd57600080fd5b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461092e57600080fd5b82811461093a57600080fd5b60005b83811015610a6f57600083838381811061095957610959611cab565b9050602002013590508060036000306001600160a01b03166001600160a01b0316815260200190815260200160002060008282546109979190611c04565b90915550819050600360008888868181106109b4576109b4611cab565b90506020020160208101906109c991906117e2565b6001600160a01b031681526020810191909152604001600020805490910190558585838181106109fb576109fb611cab565b9050602002016020810190610a1091906117e2565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a5491815260200190565b60405180910390a35080610a6781611cda565b91505061093d565b5050505050565b6000610a81826105cd565b6001600160a01b0383166000908152600360205260409020546106039190611d12565b6008546001600160a01b03163314610abb57600080fd5b3060009081526003602052604081208054839290610ada908490611c04565b90915550506001600160a01b038216600081815260036020526040908190208054840190555130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b319085815260200190565b60405180910390a35050565b6008546001600160a01b03163314610b81576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6007546001600160a01b0316156108dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4678426173654368696c6454756e6e656c3a20524f4f545f54554e4e454c5f4160448201527f4c52454144595f5345540000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b856000610c55826105cd565b30600090815260036020526040812080549293508392909190610c79908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb88338989898989611009565b610cf6883089610703565b505050505050505050565b6001805461061690611c58565b6006546001600160a01b03163314610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f52000000000000000000000000000000000000000000000000000000000000006064820152608401610c40565b610de9848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148092505050565b50505050565b6008546001600160a01b03163314610e0657600080fd5b6108c3308261158d565b33600090815260036020526040812080548391908390610e31908490611c04565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106f29086815260200190565b600e546001600160a01b0382166000908152600f60209081526040808320600584529091528120549091610ebb91611c1b565b600d546001600160a01b0384166000908152600f6020908152604080832060048452909152902054610eed9190611c1b565b600c546001600160a01b0385166000908152600f60209081526040808320600384529091528082205460018352912054610f2791906115f1565b610f319190611c1b565b600b546001600160a01b0386166000908152600f602090815260408083206002845290915280822054828052912054610f6a91906115f1565b610f749190611c1b565b600a546001600160a01b0387166000908152600f6020908152604080832060018452909152902054610fa69190611c1b565b6009546001600160a01b0388166000908152600f60209081526040808320838052909152902054610fd79190611c1b565b610fe19190611d12565b610feb9190611d12565b610ff59190611d12565b610fff9190611d12565b6106039190611d12565b42841015611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610c40565b600061107d610847565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156111cf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906112235750886001600160a01b0316816001600160a01b0316145b611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610c40565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6008546001600160a01b03163314611338576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516113a49190611d2a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821660009081526003602052604081208054839290611434908490611c04565b90915550506002805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b31565b60075482906001600160a01b0380831691161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f525f46524f4d5f524f4f540000000000000000000000000000000000000000006064820152608401610c40565b600080600080858060200190518101906115399190611dfc565b935093509350935080611567576115628484600581111561155c5761155c611e4d565b84611609565b611583565b6115838484600581111561157d5761157d611e4d565b846116f1565b5050505050505050565b806002600082825461159f9190611d12565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610b31565b60008183106116005781611602565b825b9392505050565b826000611615826105cd565b30600090815260036020526040812080549293508392909190611639908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156116c8576116c8611e4d565b815260200190815260200160002060008282546116e59190611c04565b90915550505050505050565b8260006116fd826105cd565b30600090815260036020526040812080549293508392909190611721908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156117b0576117b0611e4d565b815260200190815260200160002060008282546116e59190611d12565b6001600160a01b03811681146108c357600080fd5b6000602082840312156117f457600080fd5b8135611602816117cd565b60006020828403121561181157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461160257600080fd5b600060208083528351808285015260005b8181101561186e57858101830151858201604001528201611852565b81811115611880576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600080604083850312156118c757600080fd5b82356118d2816117cd565b946020939093013593505050565b6000806000606084860312156118f557600080fd5b8335611900816117cd565b92506020840135611910816117cd565b929592945050506040919091013590565b60008060008060008060c0878903121561193a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561197657600080fd5b5035919050565b60008083601f84011261198f57600080fd5b50813567ffffffffffffffff8111156119a757600080fd5b6020830191508360208260051b85010111156119c257600080fd5b9250929050565b600080600080604085870312156119df57600080fd5b843567ffffffffffffffff808211156119f757600080fd5b611a038883890161197d565b90965094506020870135915080821115611a1c57600080fd5b50611a298782880161197d565b95989497509550505050565b803560ff81168114611a4657600080fd5b919050565b60008060008060008060c08789031215611a6457600080fd5b8635611a6f816117cd565b95506020870135945060408701359350611a8b60608801611a35565b92506080870135915060a087013590509295509295509295565b60008060008060608587031215611abb57600080fd5b843593506020850135611acd816117cd565b9250604085013567ffffffffffffffff80821115611aea57600080fd5b818701915087601f830112611afe57600080fd5b813581811115611b0d57600080fd5b886020828501011115611b1f57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611b4957600080fd5b8735611b54816117cd565b96506020880135611b64816117cd565b95506040880135945060608801359350611b8060808901611a35565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611baf57600080fd5b8235611bba816117cd565b91506020830135611bca816117cd565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c1657611c16611bd5565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c5357611c53611bd5565b500290565b600181811c90821680611c6c57607f821691505b602082108103611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d0b57611d0b611bd5565b5060010190565b60008219821115611d2557611d25611bd5565b500190565b600080835481600182811c915080831680611d4657607f831692505b60208084108203611d7e577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015611d925760018114611dc157611dee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650611dee565b60008a81526020902060005b86811015611de65781548b820152908501908301611dcd565b505084890196505b509498975050505050505050565b60008060008060808587031215611e1257600080fd5b8451611e1d816117cd565b80945050602085015192506040850151915060608501518015158114611e4257600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212206cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa64736f6c634300080d0033

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

0000000000000000000000008397259c983751daf40400790063935a11afa28a

-----Decoded View---------------
Arg [0] : _fxChild (address): 0x8397259c983751DAf40400790063935a11afa28a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008397259c983751daf40400790063935a11afa28a


Deployed Bytecode Sourcemap

630:10492:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6786:164;;;;;;:::i;:::-;;:::i;:::-;;;571:25:4;;;559:2;544:18;6786:164:3;;;;;;;;840:201:2;;;;;;:::i;:::-;975:25;;;;;840:201;;;;1109:14:4;;1102:22;1084:41;;1072:2;1057:18;840:201:2;944:187:4;1032:18:0;;;:::i;:::-;;;;;;;:::i;2618:211::-;;;;;;:::i;:::-;;:::i;1433:46:3:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1306:26:0;;;;;;3214:592;;;;;;:::i;:::-;;:::i;10217:492:3:-;;;;;;:::i;:::-;;:::i;:::-;;1647:145:0;;1697:95;1647:145;;1084:31;;;;;;;;3460:4:4;3448:17;;;3430:36;;3418:2;3403:18;1084:31:0;3288:184:4;4996:177:0;;;:::i;8252:92:3:-;;;;;;:::i;:::-;;:::i;555:22:1:-;;;;;-1:-1:-1;;;;;555:22:1;;;;;;-1:-1:-1;;;;;3826:55:4;;;3808:74;;3796:2;3781:18;555:22:1;3662:226:4;10715:115:3;;;;;;:::i;:::-;;:::i;8431:570::-;;;;;;:::i;:::-;;:::i;7167:129::-;;;;;;:::i;:::-;;:::i;1339:44:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;9379:369:3;;;;;;:::i;:::-;;:::i;708:126:2:-;;;:::i;1907:41:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;606:27:1;;;;;-1:-1:-1;;;;;606:27:1;;;965:195;;;;;;:::i;:::-;;:::i;6159:304:3:-;;;;;;:::i;:::-;;:::i;473:79:2:-;539:6;;-1:-1:-1;;;;;539:6:2;473:79;;1057:20:0;;;:::i;1166:296:1:-;;;;;;:::i;:::-;;:::i;1128:22:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;6887:25:4;;;6943:2;6928:18;;6921:34;;;;6971:18;;;6964:34;;;;7029:2;7014:18;;7007:34;7072:3;7057:19;;7050:35;7116:3;7101:19;;7094:35;6874:3;6859:19;1128:22:3;6600:535:4;9079:92:3;;;;;;:::i;:::-;;:::i;2835:373:0:-;;;;;;:::i;:::-;;:::i;1272:63:3:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7461:523;;;;;;:::i;:::-;;:::i;3997:993:0:-;;;;;;:::i;:::-;;:::i;1390:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;558:144:2;;;;;;:::i;:::-;;:::i;6786:164:3:-;-1:-1:-1;;;;;6922:20:3;;6840:7;6922:20;;;:11;:20;;;;;;6904:38;;:15;:38;:::i;:::-;6878:22;6892:7;6878:13;:22::i;:::-;:65;;;;:::i;:::-;6859:84;6786:164;-1:-1:-1;;6786:164:3:o;1032:18:0:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2618:211::-;2718:10;2692:4;2708:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2708:30:0;;;;;;;;;;:39;;;2763:37;2692:4;;2708:30;;2763:37;;;;2741:6;571:25:4;;559:2;544:18;;425:177;2763:37:0;;;;;;;;-1:-1:-1;2818:4:0;2618:211;;;;:::o;3214:592::-;-1:-1:-1;;;;;3366:15:0;;3332:4;3366:15;;;:9;:15;;;;;;;;3382:10;3366:27;;;;;;;;3455:17;3444:28;;3440:80;;3504:16;3514:6;3504:7;:16;:::i;:::-;-1:-1:-1;;;;;3474:15:0;;;;;;:9;:15;;;;;;;;3490:10;3474:27;;;;;;;:46;3440:80;-1:-1:-1;;;;;3531:15:0;;;;;;:9;:15;;;;;:25;;3550:6;;3531:15;:25;;3550:6;;3531:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3702:13:0;;;;;;;:9;:13;;;;;;;:23;;;;;;3751:26;3702:13;;3751:26;;;;;;;3719:6;571:25:4;;559:2;544:18;;425:177;3751:26:0;;;;;;;;-1:-1:-1;3795:4:0;;3214:592;-1:-1:-1;;;;3214:592:0:o;10217:492:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;10450:7:3::1;:33:::0;;;;10493:21;:37;;;;10540:20;:35;;;;10585:18;:31;10626:20;:35;10671:18;:31;10217:492::o;4996:177:0:-;5053:7;5096:16;5079:13;:33;:87;;5142:24;:22;:24::i;:::-;5072:94;;4996:177;:::o;5079:87::-;-1:-1:-1;5115:24:0;;4996:177::o;8252:92:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;8309:28:3::1;8323:4;8330:6;8309:5;:28::i;:::-;8252:92:::0;:::o;10715:115::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;10795:12:3::1;:28:::0;;;::::1;-1:-1:-1::0;;;;;10795:28:3;;;::::1;::::0;;;::::1;::::0;;10715:115::o;8431:570::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;8540:33:3;;::::1;8532:42;;;::::0;::::1;;8588:6;8584:411;8600:19:::0;;::::1;8584:411;;;8640:11;8654:7;;8662:1;8654:10;;;;;;;:::i;:::-;;;;;;;8640:24;;8706:6;8678:9;:24;8696:4;-1:-1:-1::0;;;;;8678:24:3::1;-1:-1:-1::0;;;;;8678:24:3::1;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;8900:6:3;;-1:-1:-1;8874:9:3::1;:22;8884:8:::0;;8893:1;8884:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8874:22:3::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8874:22:3;:32;;;;::::1;::::0;;8964:8;;8973:1;8964:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8940:44:3::1;8957:4;-1:-1:-1::0;;;;;8940:44:3::1;;8977:6;8940:44;;;;571:25:4::0;;559:2;544:18;;425:177;8940:44:3::1;;;;;;;;-1:-1:-1::0;8621:3:3;::::1;::::0;::::1;:::i;:::-;;;;8584:411;;;;8431:570:::0;;;;:::o;7167:129::-;7227:7;7274:15;7281:7;7274:6;:15::i;:::-;-1:-1:-1;;;;;7253:18:3;;;;;;:9;:18;;;;;;:36;;;;:::i;9379:369::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;9481:4:3::1;9463:24;::::0;;;:9:::1;:24;::::0;;;;:34;;9491:6;;9463:24;:34:::1;::::0;9491:6;;9463:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;9643:20:3;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;:30;;;::::1;::::0;;9699:42;9716:4:::1;::::0;9699:42:::1;::::0;::::1;::::0;9667:6;571:25:4;;559:2;544:18;;425:177;9699:42:3::1;;;;;;;;9379:369:::0;;:::o;708:126:2:-;772:6;;-1:-1:-1;;;;;772:6:2;758:10;:20;754:43;;787:10;;;;;;;;;;;;;;754:43;808:6;:19;;;;;;708:126::o;965:195:1:-;1040:12;;-1:-1:-1;;;;;1040:12:1;:28;1032:83;;;;;;;9990:2:4;1032:83:1;;;9972:21:4;10029:2;10009:18;;;10002:30;10068:34;10048:18;;;10041:62;10139:12;10119:18;;;10112:40;10169:19;;1032:83:1;;;;;;;;6159:304:3;6337:5;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;6354:51:::1;6361:5;6368:10;6380:5;6387:8;6397:1;6400;6403;6354:6;:51::i;:::-;6415:41;6428:5;6443:4;6450:5;6415:12;:41::i;:::-;;3837:392:::0;6159:304;;;;;;;:::o;1057:20:0:-;;;;;;;:::i;1166:296:1:-;1343:7;;-1:-1:-1;;;;;1343:7:1;1329:10;:21;1321:67;;;;;;;10401:2:4;1321:67:1;;;10383:21:4;10440:2;10420:18;;;10413:30;10479:34;10459:18;;;10452:62;10550:3;10530:18;;;10523:31;10571:19;;1321:67:1;10199:397:4;1321:67:1;1398:57;1422:7;1431:17;1450:4;;1398:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1398:23:1;;-1:-1:-1;;;1398:57:1:i;:::-;1166:296;;;;:::o;9079:92:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;9136:28:3::1;9150:4;9157:6;9136:5;:28::i;2835:373:0:-:0;2931:10;2905:4;2921:21;;;:9;:21;;;;;:31;;2946:6;;2921:21;2905:4;;2921:31;;2946:6;;2921:31;:::i;:::-;;;;-1:-1:-1;;;;;;;3098:13:0;;;;;;:9;:13;;;;;;;:23;;;;;;3147:32;3156:10;;3147:32;;;;3115:6;571:25:4;;559:2;544:18;;425:177;7461:523:3;7957:18;;-1:-1:-1;;;;;7934:17:3;;7522:7;7934:17;;;:8;:17;;;;;;;;7957:18;7934:20;;;;;;;;7522:7;;7934:41;;;:::i;:::-;7897:20;;-1:-1:-1;;;;;7874:17:3;;;;;;:8;:17;;;;;;;;7897:20;7874;;;;;;;;:43;;7897:20;7874:43;:::i;:::-;7839:18;;-1:-1:-1;;;;;7777:17:3;;;;;;:8;:17;;;;;;;;7839:18;7777:20;;;;;;;;;7817:1;7799:20;;;;;7773:47;;7777:20;7773:3;:47::i;:::-;:84;;;;:::i;:::-;7736:20;;-1:-1:-1;;;;;7674:17:3;;;;;;:8;:17;;;;;;;;7736:20;7674;;;;;;;;;7696;;;;;;7670:47;;7674:20;7670:3;:47::i;:::-;:86;;;;:::i;:::-;7632:21;;-1:-1:-1;;;;;7609:17:3;;;;;;:8;:17;;;;;;;;7632:21;7609:20;;;;;;;;:44;;7632:21;7609:44;:::i;:::-;7573:7;:19;-1:-1:-1;;;;;7550:17:3;;7573:19;7550:17;;;:8;:17;;;;;;;;:20;;;;;;;;;:42;;7573:19;7550:42;:::i;:::-;7549:105;;;;:::i;:::-;:208;;;;:::i;:::-;:309;;;;:::i;:::-;:369;;;;:::i;:::-;:427;;;;:::i;3997:993:0:-;4216:15;4204:8;:27;;4196:63;;;;;;;10803:2:4;4196:63:0;;;10785:21:4;10842:2;10822:18;;;10815:30;10881:25;10861:18;;;10854:53;10924:18;;4196:63:0;10601:347:4;4196:63:0;4424:14;4538:18;:16;:18::i;:::-;-1:-1:-1;;;;;4639:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4588:77;;1697:95;4588:77;;;11240:25:4;11342:18;;;11335:43;;;;11414:15;;;11394:18;;;11387:43;11446:18;;;11439:34;;;11489:19;;;11482:35;;;;11533:19;;;;11526:35;;;4588:77:0;;;;;;;;;;11212:19:4;;;4588:77:0;;;4578:88;;;;;;;;11842:66:4;4468:216:0;;;11830:79:4;11925:11;;;11918:27;;;;11961:12;;;11954:28;;;;11998:12;;4468:216:0;;;;;;;;;;;;;4441:257;;4468:216;4441:257;;;;4713:24;4740:26;;;;;;;;;12248:25:4;;;12321:4;12309:17;;12289:18;;;12282:45;;;;12343:18;;;12336:34;;;12386:18;;;12379:34;;;4441:257:0;;-1:-1:-1;4713:24:0;4740:26;;12220:19:4;;4740:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4740:26:0;;;;;;-1:-1:-1;;;;;;;4789:30:0;;;;;;:59;;;4843:5;-1:-1:-1;;;;;4823:25:0;:16;-1:-1:-1;;;;;4823:25:0;;4789:59;4781:86;;;;;;;12626:2:4;4781:86:0;;;12608:21:4;12665:2;12645:18;;;12638:30;12704:16;12684:18;;;12677:44;12738:18;;4781:86:0;12424:338:4;4781:86:0;-1:-1:-1;;;;;4882:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;4952:31;571:25:4;;;4882:36:0;;-1:-1:-1;4952:31:0;;;;;;544:18:4;4952:31:0;;;;;;;3997:993;;;;;;;:::o;558:144:2:-;641:6;;-1:-1:-1;;;;;641:6:2;627:10;:20;623:43;;656:10;;;;;;;;;;;;;;623:43;677:6;:18;;;;-1:-1:-1;;;;;677:18:2;;;;;;;;;;558:144::o;5179:446:0:-;5244:7;5341:95;5474:4;5458:22;;;;;;:::i;:::-;;;;;;;;;;5309:295;;;14379:25:4;;;;14420:18;;14413:34;;;;5502:14:0;14463:18:4;;;14456:34;5538:13:0;14506:18:4;;;14499:34;5581:4:0;14549:19:4;;;14542:84;14351:19;;5309:295:0;;;;;;;;;;;;5282:336;;;;;;5263:355;;5179:446;:::o;6150:328::-;-1:-1:-1;;;;;6222:15:0;;;;;;:9;:15;;;;;:25;;6241:6;;6222:15;:25;;6241:6;;6222:25;:::i;:::-;;;;-1:-1:-1;;6390:11:0;:21;;;;;;;6437:34;;571:25:4;;;-1:-1:-1;;;;;;;6437:34:0;;;;;559:2:4;544:18;6437:34:0;425:177:4;5326:458:3;838:12:1;;5477:6:3;;-1:-1:-1;;;;;828:22:1;;;838:12;;828:22;820:78;;;;;;;14839:2:4;820:78:1;;;14821:21:4;14878:2;14858:18;;;14851:30;14917:34;14897:18;;;14890:62;14988:13;14968:18;;;14961:41;15019:19;;820:78:1;14637:407:4;820:78:1;5496:12:3::1;5510:13:::0;5525::::1;5540:11:::0;5579:7:::1;5555:88;;;;;;;;;;;;:::i;:::-;5495:148;;;;;;;;5653:6;:124;;5732:45;5747:4;5763:5;5753:16;;;;;;;;:::i;:::-;5771:5;5732:14;:45::i;:::-;5653:124;;;5674:43;5687:4;5703:5;5693:16;;;;;;;;:::i;:::-;5711:5;5674:12;:43::i;:::-;5485:299;;;;5326:458:::0;;;;:::o;5819:325:0:-;5904:6;5889:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6056:13:0;;;;;;:9;:13;;;;;;;;:23;;;;;;6105:32;571:25:4;;;6105:32:0;;544:18:4;6105:32:0;425:177:4;11016:104:3;11074:7;11104:1;11100;:5;:13;;11112:1;11100:13;;;11108:1;11100:13;11093:20;11016:104;-1:-1:-1;;;11016:104:3:o;4902:203::-;5032:7;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;-1:-1:-1;;;;;5051:17:3;::::1;;::::0;;;:8:::1;:17;::::0;;;;5092:6;;5077:9;5069:18:::1;::::0;::::1;;;;;;:::i;:::-;5051:37;;;;;;;;;;;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;4902:203:3:o;4461:201::-;4589:7;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;-1:-1:-1;;;;;4608:17:3;::::1;;::::0;;;:8:::1;:17;::::0;;;;4649:6;;4634:9;4626:18:::1;::::0;::::1;;;;;;:::i;:::-;4608:37;;;;;;;;;;;;:47;;;;;;;:::i;14:154:4:-:0;-1:-1:-1;;;;;93:5:4;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:247;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;607:332::-;665:6;718:2;706:9;697:7;693:23;689:32;686:52;;;734:1;731;724:12;686:52;773:9;760:23;823:66;816:5;812:78;805:5;802:89;792:117;;905:1;902;895:12;1136:656;1248:4;1277:2;1306;1295:9;1288:21;1338:6;1332:13;1381:6;1376:2;1365:9;1361:18;1354:34;1406:1;1416:140;1430:6;1427:1;1424:13;1416:140;;;1525:14;;;1521:23;;1515:30;1491:17;;;1510:2;1487:26;1480:66;1445:10;;1416:140;;;1574:6;1571:1;1568:13;1565:91;;;1644:1;1639:2;1630:6;1619:9;1615:22;1611:31;1604:42;1565:91;-1:-1:-1;1708:2:4;1696:15;1713:66;1692:88;1677:104;;;;1783:2;1673:113;;1136:656;-1:-1:-1;;;1136:656:4:o;1797:315::-;1865:6;1873;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1981:9;1968:23;2000:31;2025:5;2000:31;:::i;:::-;2050:5;2102:2;2087:18;;;;2074:32;;-1:-1:-1;;;1797:315:4:o;2117:456::-;2194:6;2202;2210;2263:2;2251:9;2242:7;2238:23;2234:32;2231:52;;;2279:1;2276;2269:12;2231:52;2318:9;2305:23;2337:31;2362:5;2337:31;:::i;:::-;2387:5;-1:-1:-1;2444:2:4;2429:18;;2416:32;2457:33;2416:32;2457:33;:::i;:::-;2117:456;;2509:7;;-1:-1:-1;;;2563:2:4;2548:18;;;;2535:32;;2117:456::o;2578:523::-;2682:6;2690;2698;2706;2714;2722;2775:3;2763:9;2754:7;2750:23;2746:33;2743:53;;;2792:1;2789;2782:12;2743:53;-1:-1:-1;;2815:23:4;;;2885:2;2870:18;;2857:32;;-1:-1:-1;2936:2:4;2921:18;;2908:32;;2987:2;2972:18;;2959:32;;-1:-1:-1;3038:3:4;3023:19;;3010:33;;-1:-1:-1;3090:3:4;3075:19;3062:33;;-1:-1:-1;2578:523:4;-1:-1:-1;2578:523:4:o;3477:180::-;3536:6;3589:2;3577:9;3568:7;3564:23;3560:32;3557:52;;;3605:1;3602;3595:12;3557:52;-1:-1:-1;3628:23:4;;3477:180;-1:-1:-1;3477:180:4:o;3893:367::-;3956:8;3966:6;4020:3;4013:4;4005:6;4001:17;3997:27;3987:55;;4038:1;4035;4028:12;3987:55;-1:-1:-1;4061:20:4;;4104:18;4093:30;;4090:50;;;4136:1;4133;4126:12;4090:50;4173:4;4165:6;4161:17;4149:29;;4233:3;4226:4;4216:6;4213:1;4209:14;4201:6;4197:27;4193:38;4190:47;4187:67;;;4250:1;4247;4240:12;4187:67;3893:367;;;;;:::o;4265:773::-;4387:6;4395;4403;4411;4464:2;4452:9;4443:7;4439:23;4435:32;4432:52;;;4480:1;4477;4470:12;4432:52;4520:9;4507:23;4549:18;4590:2;4582:6;4579:14;4576:34;;;4606:1;4603;4596:12;4576:34;4645:70;4707:7;4698:6;4687:9;4683:22;4645:70;:::i;:::-;4734:8;;-1:-1:-1;4619:96:4;-1:-1:-1;4822:2:4;4807:18;;4794:32;;-1:-1:-1;4838:16:4;;;4835:36;;;4867:1;4864;4857:12;4835:36;;4906:72;4970:7;4959:8;4948:9;4944:24;4906:72;:::i;:::-;4265:773;;;;-1:-1:-1;4997:8:4;-1:-1:-1;;;;4265:773:4:o;5043:156::-;5109:20;;5169:4;5158:16;;5148:27;;5138:55;;5189:1;5186;5179:12;5138:55;5043:156;;;:::o;5204:592::-;5306:6;5314;5322;5330;5338;5346;5399:3;5387:9;5378:7;5374:23;5370:33;5367:53;;;5416:1;5413;5406:12;5367:53;5455:9;5442:23;5474:31;5499:5;5474:31;:::i;:::-;5524:5;-1:-1:-1;5576:2:4;5561:18;;5548:32;;-1:-1:-1;5627:2:4;5612:18;;5599:32;;-1:-1:-1;5650:36:4;5682:2;5667:18;;5650:36;:::i;:::-;5640:46;;5733:3;5722:9;5718:19;5705:33;5695:43;;5785:3;5774:9;5770:19;5757:33;5747:43;;5204:592;;;;;;;;:::o;5801:794::-;5889:6;5897;5905;5913;5966:2;5954:9;5945:7;5941:23;5937:32;5934:52;;;5982:1;5979;5972:12;5934:52;6018:9;6005:23;5995:33;;6078:2;6067:9;6063:18;6050:32;6091:31;6116:5;6091:31;:::i;:::-;6141:5;-1:-1:-1;6197:2:4;6182:18;;6169:32;6220:18;6250:14;;;6247:34;;;6277:1;6274;6267:12;6247:34;6315:6;6304:9;6300:22;6290:32;;6360:7;6353:4;6349:2;6345:13;6341:27;6331:55;;6382:1;6379;6372:12;6331:55;6422:2;6409:16;6448:2;6440:6;6437:14;6434:34;;;6464:1;6461;6454:12;6434:34;6509:7;6504:2;6495:6;6491:2;6487:15;6483:24;6480:37;6477:57;;;6530:1;6527;6520:12;6477:57;5801:794;;;;-1:-1:-1;;6561:2:4;6553:11;;-1:-1:-1;;;5801:794:4:o;7140:734::-;7251:6;7259;7267;7275;7283;7291;7299;7352:3;7340:9;7331:7;7327:23;7323:33;7320:53;;;7369:1;7366;7359:12;7320:53;7408:9;7395:23;7427:31;7452:5;7427:31;:::i;:::-;7477:5;-1:-1:-1;7534:2:4;7519:18;;7506:32;7547:33;7506:32;7547:33;:::i;:::-;7599:7;-1:-1:-1;7653:2:4;7638:18;;7625:32;;-1:-1:-1;7704:2:4;7689:18;;7676:32;;-1:-1:-1;7727:37:4;7759:3;7744:19;;7727:37;:::i;:::-;7717:47;;7811:3;7800:9;7796:19;7783:33;7773:43;;7863:3;7852:9;7848:19;7835:33;7825:43;;7140:734;;;;;;;;;;:::o;7879:388::-;7947:6;7955;8008:2;7996:9;7987:7;7983:23;7979:32;7976:52;;;8024:1;8021;8014:12;7976:52;8063:9;8050:23;8082:31;8107:5;8082:31;:::i;:::-;8132:5;-1:-1:-1;8189:2:4;8174:18;;8161:32;8202:33;8161:32;8202:33;:::i;:::-;8254:7;8244:17;;;7879:388;;;;;:::o;8272:184::-;8324:77;8321:1;8314:88;8421:4;8418:1;8411:15;8445:4;8442:1;8435:15;8461:125;8501:4;8529:1;8526;8523:8;8520:34;;;8534:18;;:::i;:::-;-1:-1:-1;8571:9:4;;8461:125::o;8591:228::-;8631:7;8757:1;8689:66;8685:74;8682:1;8679:81;8674:1;8667:9;8660:17;8656:105;8653:131;;;8764:18;;:::i;:::-;-1:-1:-1;8804:9:4;;8591:228::o;8824:437::-;8903:1;8899:12;;;;8946;;;8967:61;;9021:4;9013:6;9009:17;8999:27;;8967:61;9074:2;9066:6;9063:14;9043:18;9040:38;9037:218;;9111:77;9108:1;9101:88;9212:4;9209:1;9202:15;9240:4;9237:1;9230:15;9037:218;;8824:437;;;:::o;9266:184::-;9318:77;9315:1;9308:88;9415:4;9412:1;9405:15;9439:4;9436:1;9429:15;9455:195;9494:3;9525:66;9518:5;9515:77;9512:103;;9595:18;;:::i;:::-;-1:-1:-1;9642:1:4;9631:13;;9455:195::o;9655:128::-;9695:3;9726:1;9722:6;9719:1;9716:13;9713:39;;;9732:18;;:::i;:::-;-1:-1:-1;9768:9:4;;9655:128::o;12896:1219::-;13026:3;13055:1;13088:6;13082:13;13118:3;13140:1;13168:9;13164:2;13160:18;13150:28;;13228:2;13217:9;13213:18;13250;13240:61;;13294:4;13286:6;13282:17;13272:27;;13240:61;13320:2;13368;13360:6;13357:14;13337:18;13334:38;13331:222;;13407:77;13402:3;13395:90;13508:4;13505:1;13498:15;13538:4;13533:3;13526:17;13331:222;13569:18;13596:162;;;;13772:1;13767:323;;;;13562:528;;13596:162;13644:66;13633:9;13629:82;13624:3;13617:95;13741:6;13736:3;13732:16;13725:23;;13596:162;;13767:323;12843:1;12836:14;;;12880:4;12867:18;;13865:1;13879:165;13893:6;13890:1;13887:13;13879:165;;;13971:14;;13958:11;;;13951:35;14014:16;;;;13908:10;;13879:165;;;13883:3;;14073:6;14068:3;14064:16;14057:23;;13562:528;-1:-1:-1;14106:3:4;;12896:1219;-1:-1:-1;;;;;;;;12896:1219:4:o;15049:544::-;15151:6;15159;15167;15175;15228:3;15216:9;15207:7;15203:23;15199:33;15196:53;;;15245:1;15242;15235:12;15196:53;15277:9;15271:16;15296:31;15321:5;15296:31;:::i;:::-;15346:5;15336:15;;;15391:2;15380:9;15376:18;15370:25;15360:35;;15435:2;15424:9;15420:18;15414:25;15404:35;;15484:2;15473:9;15469:18;15463:25;15533:7;15526:15;15519:23;15510:7;15507:36;15497:64;;15557:1;15554;15547:12;15497:64;15049:544;;;;-1:-1:-1;15049:544:4;;-1:-1:-1;;15049:544:4:o;15598:184::-;15650:77;15647:1;15640:88;15747:4;15744:1;15737:15;15771:4;15768:1;15761:15

Swarm Source

ipfs://6cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa

Block Transaction 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
[ 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.