ETH Price: $2,571.79 (+1.50%)

Token

Staked Miner (SMINER)
 

Overview

Max Total Supply

86,278,353.922469266802956374 SMINER

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
304,135.859148281839215477 SMINER

Value
$0.00
0x7584d87855f32e7455428b198fa96c3e053f6866
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MAXIMiner

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-29
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.14;

interface IERC20 {

    function totalSupply() external view returns (uint256);
    
    function symbol() external view returns(string memory);
    
    function name() external view returns(string memory);

    function balanceOf(address account) external view returns (uint256);
    
    function decimals() external view returns (uint8);

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

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

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

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

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

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @title Owner
 * @dev Set & change owner
 */
contract Ownable {

    address private owner;
    
    // event for EVM logging
    event OwnerSet(address indexed oldOwner, address indexed newOwner);
    
    // modifier to check if caller is owner
    modifier onlyOwner() {
        // If the first argument of 'require' evaluates to 'false', execution terminates and all
        // changes to the state and to Ether balances are reverted.
        // This used to consume all gas in old EVM versions, but not anymore.
        // It is often a good idea to use 'require' to check if functions are called correctly.
        // As a second argument, you can also provide an explanation about what went wrong.
        require(msg.sender == owner, "Caller is not owner");
        _;
    }
    
    /**
     * @dev Set contract deployer as owner
     */
    constructor() {
        owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
        emit OwnerSet(address(0), owner);
    }

    /**
     * @dev Change owner
     * @param newOwner address of new owner
     */
    function changeOwner(address newOwner) public onlyOwner {
        emit OwnerSet(owner, newOwner);
        owner = newOwner;
    }

    /**
     * @dev Return owner address 
     * @return address of owner
     */
    function getOwner() external view returns (address) {
        return owner;
    }
}
/**
    Miner Staking Contract
    Auto Compounding Staking Protocol
    Inspired by xSurgeDeFi
    Developed By DeFi Mark
 */
contract MAXIMiner is Ownable, IERC20 {

    using SafeMath for uint256;

    // Staking Token
    IERC20 public immutable token;

    // Staking Protocol Token Info
    string private _name;
    string private _symbol;
    uint8 private immutable _decimals;

    // Trackable User Info
    struct UserInfo {
        uint256 balance;
        uint256 unlockBlock;
        uint256 totalStaked;
        uint256 totalWithdrawn;
    }
    // User -> UserInfo
    mapping ( address => UserInfo ) public userInfo;

    // Unstake Early Fee
    uint256 public leaveEarlyFee;

    // Timer For Leave Early Fee
    uint256 public leaveEarlyFeeTimer;

    // total supply of MAXI
    uint256 private _totalShares;

    // Swapper To Purchase Token From ETH
    address public tokenSwapper;

    // precision factor
    uint256 private constant precision = 10**18;

    // Reentrancy Guard
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    modifier nonReentrant() {
        require(_status != _ENTERED, "Reentrancy Guard call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }

    // Events
    event PriceChange(uint256 previous, uint256 current, uint256 totalMAXISupply);
    event Deposit(address depositor, uint256 amountToken);
    event Withdraw(address withdrawer, uint256 amountToken);

    constructor(
        string memory name_, 
        string memory symbol_,
        address token_,
        address tokenSwapper_,
        uint256 leaveEarlyFee_,
        uint256 leaveEarlyFeeTimer_
    ) {

        require(token_ != address(0), 'Zero Address');
        require(tokenSwapper_ != address(0), 'Zero Address');
        require(leaveEarlyFee_ <= 100, 'Fee Too High');
        require(leaveEarlyFeeTimer_ <= 10**7, 'Fee Timer Too Long');

        // pair token data
        _name = name_;
        _symbol = symbol_;
        _decimals = IERC20(token_).decimals();

        // staking data
        leaveEarlyFee = leaveEarlyFee_;
        leaveEarlyFeeTimer = leaveEarlyFeeTimer_;
        tokenSwapper = tokenSwapper_;

        // pair staking token
        token = IERC20(token_);

        // set reentrancy
        _status = _NOT_ENTERED;
        
        // emit transfer so bscscan registers contract as token
        emit Transfer(address(0), msg.sender, 0);
    }

    function name() external view override returns (string memory) {
        return _name;
    }
    function symbol() external view override returns (string memory) {
        return _symbol;
    }
    function decimals() external view override returns (uint8) {
        return _decimals;
    }
    function totalSupply() external view override returns (uint256) {
        return token.balanceOf(address(this));
    }

    /** Shows The Value Of Users' Staked Token */
    function balanceOf(address account) public view override returns (uint256) {
        return ReflectionsFromContractBalance(userInfo[account].balance);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        if (recipient == msg.sender) {
            withdraw(amount);
        }
        return true;
    }
    function transferFrom(address, address recipient, uint256 amount) external override returns (bool) {
        if (recipient == msg.sender) {
            withdraw(amount);
        }        
        return true;
    }

    function setLeaveEarlyFee(uint256 newLeaveEarlyFee) external onlyOwner {
        require(
            newLeaveEarlyFee <= 100,
            'Early Fee Too High'
        );
        leaveEarlyFee = newLeaveEarlyFee;
    }
    function setLeaveEarlyFeeTimer(uint256 newLeaveEarlyFeeTimer) external onlyOwner {
        require(
            newLeaveEarlyFeeTimer <= 10**7,
            'Fee Timer Too High'
        );
        leaveEarlyFeeTimer = newLeaveEarlyFeeTimer;
    }
    function setTokenSwapper(address newTokenSwapper) external onlyOwner {
        require(
            newTokenSwapper != address(0),
            'Zero Address'
        );
        tokenSwapper = newTokenSwapper;
    }

    function withdrawETH() external onlyOwner {
        (bool s,) = payable(msg.sender).call{value: address(this).balance}("");
        require(s, 'Error On ETH Withdrawal');
    }

    function recoverForeignToken(IERC20 _token) external onlyOwner {
        require(
            address(_token) != address(token),
            'Cannot Withdraw Staking Tokens'
        );
        require(
            _token.transfer(msg.sender, _token.balanceOf(address(this))),
            'Error Withdrawing Foreign Token'
        );
    }

    /** 
        ETH Sent To Contract Will Buy And Stake Token
     */
    receive() external payable {
        _deposit(msg.value, true);
    }

    /**
        Transfers in `amount` of Token From Sender
        And Locks In Contract, Minting MAXI Tokens
     */
    function deposit(uint256 amount) external {
        _deposit(amount, false);
    }

    /**
        Redeems `amount` of Underlying Tokens, As Seen From BalanceOf()
     */
    function withdraw(uint256 amount) public nonReentrant returns (uint256) {

        // track price change
        uint oldPrice = _calculatePrice();

        // Token Amount Into Contract Balance Amount
        uint MAXI_Amount = amount == balanceOf(msg.sender) ? userInfo[msg.sender].balance : TokenToContractBalance(amount);

        require(
            userInfo[msg.sender].balance > 0 &&
            userInfo[msg.sender].balance >= MAXI_Amount &&
            balanceOf(msg.sender) >= amount &&
            amount > 0 &&
            MAXI_Amount > 0,
            'Insufficient Funds'
        );

        // burn MAXI Tokens From Sender
        _burn(msg.sender, MAXI_Amount, amount);

        // increment total withdrawn
        userInfo[msg.sender].totalWithdrawn += amount;

        // Take Fee If Withdrawn Before Timer
        uint fee = remainingLockTime(msg.sender) == 0 ? 100 : amount.mul(leaveEarlyFee).div(1000);

        // send amount less fee
        uint256 sendAmount = amount.sub(fee);
        require(
            token.transfer(msg.sender, sendAmount),
            'Error On Token Transfer'
        );
        // require price rises
        _requirePriceRises(oldPrice);
        emit Withdraw(msg.sender, sendAmount);
        return sendAmount;
    }

    function donate() external payable nonReentrant {

        // track price change
        uint oldPrice = _calculatePrice();

        // buy staking token
        _buyToken(address(this).balance);

        // require price rises
        _requirePriceRises(oldPrice);
    }

    /**
        Handles Deposits Internally
     */
    function _deposit(uint256 amount, bool wETH) internal nonReentrant {

        // Ensure Positive Transfer Amount
        require(
            amount > 0,
            'Zero Amount'
        );

        // Track Balance Before Deposit
        uint previousBalance = token.balanceOf(address(this));

        if (_totalShares == 0 || previousBalance == 0) {
            uint receivedFirst = wETH ? _buyToken(amount) : _transferIn(amount);
            _registerFirstPurchase(receivedFirst);
        } else {
            // track price change
            uint oldPrice = _calculatePrice();
        
            // Transfer In Token
            uint received = wETH ? _buyToken(amount) : _transferIn(amount);

            // mints correct token amount to sender given data
            _mintTo(msg.sender, received, previousBalance, oldPrice);
        }
    }

    /**
        Registers the First Stake
     */
    function _registerFirstPurchase(uint received) internal {
        
        // increment total staked
        userInfo[msg.sender].totalStaked += received;

        // mint MAXI Tokens To Sender
        _mint(msg.sender, received, received);

        emit Deposit(msg.sender, received);
    }

    function _mintTo(address sender, uint256 received, uint256 previousBalance, uint256 oldPrice) internal {
        // Number Of Maxi Tokens To Mint
        uint nToMint = (_totalShares.mul(received).div(previousBalance)).sub(100);
        require(
            nToMint > 0,
            'Zero To Mint'
        );

        // increment total staked
        userInfo[sender].totalStaked += received;

        // mint MAXI Tokens To Sender
        _mint(sender, nToMint, received);

        // require price rises
        _requirePriceRises(oldPrice);

        emit Deposit(sender, received);
    }

    function _buyToken(uint amount) internal returns (uint256) {
        require(
            amount > 0,
            'Zero Amount'
        );
        uint before = token.balanceOf(address(this));
        (bool s,) = payable(tokenSwapper).call{value: amount}("");
        require(s, 'Failure On Token Purchase');
        uint received = token.balanceOf(address(this)).sub(before);
        require(received > 0, 'Zero Received');
        return received;
    }

    function _requirePriceRises(uint256 oldPrice) internal {
        // fetch new price
        uint256 newPrice = _calculatePrice();
        // require price rises
        require(
            newPrice >= oldPrice,
            'Price Must Rise'
        );
        // emit event
        emit PriceChange(oldPrice, newPrice, _totalShares);
    }


    function _transferIn(uint256 amount) internal returns (uint256) {
        uint before = token.balanceOf(address(this));
        require(
            token.transferFrom(msg.sender, address(this), amount),
            'Failure On TransferFrom'
        );
        uint received = token.balanceOf(address(this)).sub(before);
        require(
            received <= amount && received > 0,
            'Error On Transfer In'
        );
        return received;
    }

    /**
     * Burns `amount` of Contract Balance Token
     */
    function _burn(address from, uint256 amount, uint256 amountToken) private {
        userInfo[from].balance = userInfo[from].balance.sub(amount);
        _totalShares = _totalShares.sub(amount);
        emit Transfer(from, address(0), amountToken);
    }

    /**
     * Mints `amount` of Contract Balance Token
     */
    function _mint(address to, uint256 amount, uint256 underlyingValue) private {
        // allocate
        userInfo[to].balance = userInfo[to].balance.add(amount);
        _totalShares = _totalShares.add(amount);
        // update locker info
        userInfo[msg.sender].unlockBlock = block.number + leaveEarlyFeeTimer;
        emit Transfer(address(0), to, underlyingValue);
    }


    /**
        Converts A Staking Token Amount Into A MAXI Amount
     */
    function TokenToContractBalance(uint256 amount) public view returns (uint256) {
        return amount.mul(precision).div(_calculatePrice());
    }

    /**
        Converts A MAXI Amount Into A Token Amount
     */
    function ReflectionsFromContractBalance(uint256 amount) public view returns (uint256) {
        return amount.mul(_calculatePrice()).div(precision);
    }

    /** Conversion Ratio For MAXI -> Token */
    function calculatePrice() external view returns (uint256) {
        return _calculatePrice();
    }

    /**
        Lock Time Remaining For Stakers
     */
    function remainingLockTime(address user) public view returns (uint256) {
        return userInfo[user].unlockBlock < block.number ? 0 : userInfo[user].unlockBlock - block.number;
    }

    /** Returns Total Profit for User In Token From MAXI */
    function getTotalProfits(address user) external view returns (uint256) {
        return balanceOf(user) + userInfo[user].totalWithdrawn - userInfo[user].totalStaked;
    }
    
    /** Conversion Ratio For MAXI -> Token */
    function _calculatePrice() internal view returns (uint256) {
        uint256 backingValue = token.balanceOf(address(this));
        return (backingValue.mul(precision)).div(_totalShares);
    }

    /** function has no use in contract */
    function allowance(address, address) external pure override returns (uint256) { 
        return 0;
    }
    /** function has no use in contract */
    function approve(address spender, uint256) public override returns (bool) {
        emit Approval(msg.sender, spender, 0);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"tokenSwapper_","type":"address"},{"internalType":"uint256","name":"leaveEarlyFee_","type":"uint256"},{"internalType":"uint256","name":"leaveEarlyFeeTimer_","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":false,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previous","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"current","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalMAXISupply","type":"uint256"}],"name":"PriceChange","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"withdrawer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReflectionsFromContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenToContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"","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":[],"name":"calculatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getTotalProfits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leaveEarlyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leaveEarlyFeeTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"recoverForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"remainingLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLeaveEarlyFee","type":"uint256"}],"name":"setLeaveEarlyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLeaveEarlyFeeTimer","type":"uint256"}],"name":"setLeaveEarlyFeeTimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTokenSwapper","type":"address"}],"name":"setTokenSwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSwapper","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"","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":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"unlockBlock","type":"uint256"},{"internalType":"uint256","name":"totalStaked","type":"uint256"},{"internalType":"uint256","name":"totalWithdrawn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b506040516200437738038062004377833981810160405281019062000037919062000704565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000164576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015b906200083f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001cd906200083f565b60405180910390fd5b60648211156200021d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021490620008b1565b60405180910390fd5b6298968081111562000266576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025d9062000923565b60405180910390fd5b85600190805190602001906200027e92919062000417565b5084600290805190602001906200029792919062000417565b508373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000983565b60ff1660a08160ff1681525050816004819055508060058190555082600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060016008819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600060405162000403919062000a02565b60405180910390a350505050505062000a83565b828054620004259062000a4e565b90600052602060002090601f01602090048101928262000449576000855562000495565b82601f106200046457805160ff191683800117855562000495565b8280016001018555821562000495579182015b828111156200049457825182559160200191906001019062000477565b5b509050620004a49190620004a8565b5090565b5b80821115620004c3576000816000905550600101620004a9565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200053082620004e5565b810181811067ffffffffffffffff82111715620005525762000551620004f6565b5b80604052505050565b600062000567620004c7565b905062000575828262000525565b919050565b600067ffffffffffffffff821115620005985762000597620004f6565b5b620005a382620004e5565b9050602081019050919050565b60005b83811015620005d0578082015181840152602081019050620005b3565b83811115620005e0576000848401525b50505050565b6000620005fd620005f7846200057a565b6200055b565b9050828152602081018484840111156200061c576200061b620004e0565b5b62000629848285620005b0565b509392505050565b600082601f830112620006495762000648620004db565b5b81516200065b848260208601620005e6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006918262000664565b9050919050565b620006a38162000684565b8114620006af57600080fd5b50565b600081519050620006c38162000698565b92915050565b6000819050919050565b620006de81620006c9565b8114620006ea57600080fd5b50565b600081519050620006fe81620006d3565b92915050565b60008060008060008060c08789031215620007245762000723620004d1565b5b600087015167ffffffffffffffff811115620007455762000744620004d6565b5b6200075389828a0162000631565b965050602087015167ffffffffffffffff811115620007775762000776620004d6565b5b6200078589828a0162000631565b95505060406200079889828a01620006b2565b9450506060620007ab89828a01620006b2565b9350506080620007be89828a01620006ed565b92505060a0620007d189828a01620006ed565b9150509295509295509295565b600082825260208201905092915050565b7f5a65726f20416464726573730000000000000000000000000000000000000000600082015250565b600062000827600c83620007de565b91506200083482620007ef565b602082019050919050565b600060208201905081810360008301526200085a8162000818565b9050919050565b7f46656520546f6f20486967680000000000000000000000000000000000000000600082015250565b600062000899600c83620007de565b9150620008a68262000861565b602082019050919050565b60006020820190508181036000830152620008cc816200088a565b9050919050565b7f4665652054696d657220546f6f204c6f6e670000000000000000000000000000600082015250565b60006200090b601283620007de565b91506200091882620008d3565b602082019050919050565b600060208201905081810360008301526200093e81620008fc565b9050919050565b600060ff82169050919050565b6200095d8162000945565b81146200096957600080fd5b50565b6000815190506200097d8162000952565b92915050565b6000602082840312156200099c576200099b620004d1565b5b6000620009ac848285016200096c565b91505092915050565b6000819050919050565b6000819050919050565b6000620009ea620009e4620009de84620009b5565b620009bf565b620006c9565b9050919050565b620009fc81620009c9565b82525050565b600060208201905062000a196000830184620009f1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a6757607f821691505b60208210810362000a7d5762000a7c62000a1f565b5b50919050565b60805160a05161388862000aef60003960006110a30152600081816107d801528181610a4601528181610f6e0152818161184e01528181611ac901528181611af001528181611b8c01528181611c7101528181611dba01528181611f2a01526120c501526138886000f3fe6080604052600436106101c65760003560e01c806378c84798116100f7578063d348b40911610095578063ec5bfc8c11610064578063ec5bfc8c146106a9578063ed88c68e146106d2578063f0c112c6146106dc578063fc0c546a14610719576101d8565b8063d348b409146105ed578063dd62ed3e14610618578063e086e5ec14610655578063e0a4c2ff1461066c576101d8565b806395d89b41116100d157806395d89b4114610533578063a6f9dae11461055e578063a9059cbb14610587578063b6b55f25146105c4576101d8565b806378c84798146104b4578063893d20e8146104df5780638beceeea1461050a576101d8565b80631fee624811610164578063313ce5671161013e578063313ce567146103f8578063491dd70a1461042357806358d9e6851461044c57806370a0823114610477576101d8565b80631fee62481461035357806323b872dd1461037e5780632e1a7d4d146103bb576101d8565b806318160ddd116101a057806318160ddd146102825780631959a002146102ad5780631ab733a3146102ed5780631fe1bd741461032a576101d8565b806306fdde03146101dd578063095ea7b314610208578063098729db14610245576101d8565b366101d8576101d6346001610744565b005b600080fd5b3480156101e957600080fd5b506101f2610901565b6040516101ff91906128b4565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061296f565b610993565b60405161023c91906129ca565b60405180910390f35b34801561025157600080fd5b5061026c600480360381019061026791906129e5565b610a05565b6040516102799190612a21565b60405180910390f35b34801561028e57600080fd5b50610297610a42565b6040516102a49190612a21565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612a3c565b610ae3565b6040516102e49493929190612a69565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190612a3c565b610b13565b6040516103219190612a21565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906129e5565b610bbf565b005b34801561035f57600080fd5b50610368610c9d565b6040516103759190612a21565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190612aae565b610ca3565b6040516103b291906129ca565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd91906129e5565b610cee565b6040516103ef9190612a21565b60405180910390f35b34801561040457600080fd5b5061040d61109f565b60405161041a9190612b1d565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190612a3c565b6110c7565b005b34801561045857600080fd5b50610461611208565b60405161046e9190612a21565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190612a3c565b61120e565b6040516104ab9190612a21565b60405180910390f35b3480156104c057600080fd5b506104c9611262565b6040516104d69190612b47565b60405180910390f35b3480156104eb57600080fd5b506104f4611288565b6040516105019190612b47565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c91906129e5565b6112b1565b005b34801561053f57600080fd5b5061054861138d565b60405161055591906128b4565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612a3c565b61141f565b005b34801561059357600080fd5b506105ae60048036038101906105a9919061296f565b61156a565b6040516105bb91906129ca565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e691906129e5565b6115b4565b005b3480156105f957600080fd5b506106026115c2565b60405161060f9190612a21565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190612b62565b6115d1565b60405161064c9190612a21565b60405180910390f35b34801561066157600080fd5b5061066a6115d9565b005b34801561067857600080fd5b50610693600480360381019061068e9190612a3c565b611716565b6040516106a09190612a21565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190612be0565b6117be565b005b6106da611a13565b005b3480156106e857600080fd5b5061070360048036038101906106fe91906129e5565b611a8a565b6040516107109190612a21565b60405180910390f35b34801561072557600080fd5b5061072e611ac7565b60405161073b9190612c6c565b60405180910390f35b600260085403610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078090612cd3565b60405180910390fd5b6002600881905550600082116107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90612d3f565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161082f9190612b47565b602060405180830381865afa15801561084c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108709190612d74565b9050600060065414806108835750600081145b156108b85760008261089d5761089884611aeb565b6108a7565b6108a684611d72565b5b90506108b281612020565b506108f4565b60006108c26120c0565b90506000836108d9576108d485611aeb565b6108e3565b6108e285611d72565b5b90506108f133828585612194565b50505b5060016008819055505050565b60606001805461091090612dd0565b80601f016020809104026020016040519081016040528092919081815260200182805461093c90612dd0565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60008273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560006040516109f39190612e3c565b60405180910390a36001905092915050565b6000610a3b670de0b6b3a7640000610a2d610a1e6120c0565b856122c290919063ffffffff16565b61233c90919063ffffffff16565b9050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a9d9190612b47565b602060405180830381865afa158015610aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ade9190612d74565b905090565b60036020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154610ba48461120e565b610bae9190612e86565b610bb89190612edc565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612f5c565b60405180910390fd5b62989680811115610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a90612fc8565b60405180910390fd5b8060058190555050565b60055481565b60003373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce357610ce182610cee565b505b600190509392505050565b6000600260085403610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612cd3565b60405180910390fd5b60026008819055506000610d476120c0565b90506000610d543361120e565b8414610d6857610d6384611a8a565b610dac565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001545b90506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154118015610e42575080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410155b8015610e56575083610e533361120e565b10155b8015610e625750600084115b8015610e6e5750600081115b610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490613034565b60405180910390fd5b610eb8338286612386565b83600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003016000828254610f0a9190612e86565b92505081905550600080610f1d33611716565b14610f5057610f4b6103e8610f3d600454886122c290919063ffffffff16565b61233c90919063ffffffff16565b610f53565b60645b90506000610f6a82876124a790919063ffffffff16565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fc7929190613054565b6020604051808303816000875af1158015610fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100a91906130a9565b611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090613122565b60405180910390fd5b611052846124f1565b7f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243643382604051611083929190613054565b60405180910390a1809450505050506001600881905550919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c90612f5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb9061318e565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b600061125b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610a05565b9050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612f5c565b60405180910390fd5b6064811115611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a906131fa565b60405180910390fd5b8060048190555050565b60606002805461139c90612dd0565b80601f01602080910402602001604051908101604052809291908181526020018280546113c890612dd0565b80156114155780601f106113ea57610100808354040283529160200191611415565b820191906000526020600020905b8154815290600101906020018083116113f857829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a490612f5c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115aa576115a882610cee565b505b6001905092915050565b6115bf816000610744565b50565b60006115cc6120c0565b905090565b600092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612f5c565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161168d9061324b565b60006040518083038185875af1925050503d80600081146116ca576040519150601f19603f3d011682016040523d82523d6000602084013e6116cf565b606091505b5050905080611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a906132ac565b60405180910390fd5b50565b600043600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154106117b45743600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546117af9190612edc565b6117b7565b60005b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390612f5c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190613318565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119309190612b47565b602060405180830381865afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190612d74565b6040518363ffffffff1660e01b815260040161198e929190613054565b6020604051808303816000875af11580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d191906130a9565b611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790613384565b60405180910390fd5b50565b600260085403611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90612cd3565b60405180910390fd5b60026008819055506000611a6a6120c0565b9050611a7547611d72565b50611a7f816124f1565b506001600881905550565b6000611ac0611a976120c0565b611ab2670de0b6b3a7640000856122c290919063ffffffff16565b61233c90919063ffffffff16565b9050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b479190612b47565b602060405180830381865afa158015611b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b889190612d74565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401611be7939291906133a4565b6020604051808303816000875af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2a91906130a9565b611c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6090613427565b60405180910390fd5b6000611d17827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cc89190612b47565b602060405180830381865afa158015611ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d099190612d74565b6124a790919063ffffffff16565b9050838111158015611d295750600081115b611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90613493565b60405180910390fd5b8092505050919050565b6000808211611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad90612d3f565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e119190612b47565b602060405180830381865afa158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e529190612d74565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051611e9c9061324b565b60006040518083038185875af1925050503d8060008114611ed9576040519150601f19603f3d011682016040523d82523d6000602084013e611ede565b606091505b5050905080611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f19906134ff565b60405180910390fd5b6000611fd0837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f819190612b47565b602060405180830381865afa158015611f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc29190612d74565b6124a790919063ffffffff16565b905060008111612015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200c9061356b565b60405180910390fd5b809350505050919050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546120729190612e86565b92505081905550612084338283612581565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c33826040516120b5929190613054565b60405180910390a150565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161211c9190612b47565b602060405180830381865afa158015612139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215d9190612d74565b905061218e600654612180670de0b6b3a7640000846122c290919063ffffffff16565b61233c90919063ffffffff16565b91505090565b60006121d060646121c2856121b4886006546122c290919063ffffffff16565b61233c90919063ffffffff16565b6124a790919063ffffffff16565b905060008111612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c906135d7565b60405180910390fd5b83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546122679190612e86565b92505081905550612279858286612581565b612282826124f1565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c85856040516122b3929190613054565b60405180910390a15050505050565b60008083036122d45760009050612336565b600082846122e291906135f7565b90508284826122f19190613680565b14612331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232890613723565b60405180910390fd5b809150505b92915050565b600061237e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126f6565b905092915050565b6123db82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124a790919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612436826006546124a790919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161249a9190612a21565b60405180910390a3505050565b60006124e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612759565b905092915050565b60006124fb6120c0565b905081811015612540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125379061378f565b60405180910390fd5b7f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed18282600654604051612575939291906137af565b60405180910390a15050565b6125d682600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546127bd90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612631826006546127bd90919063ffffffff16565b600681905550600554436126459190612e86565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126e99190612a21565b60405180910390a3505050565b6000808311829061273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273491906128b4565b60405180910390fd5b506000838561274c9190613680565b9050809150509392505050565b60008383111582906127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279891906128b4565b60405180910390fd5b50600083856127b09190612edc565b9050809150509392505050565b60008082846127cc9190612e86565b905083811015612811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280890613832565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285557808201518184015260208101905061283a565b83811115612864576000848401525b50505050565b6000601f19601f8301169050919050565b60006128868261281b565b6128908185612826565b93506128a0818560208601612837565b6128a98161286a565b840191505092915050565b600060208201905081810360008301526128ce818461287b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612906826128db565b9050919050565b612916816128fb565b811461292157600080fd5b50565b6000813590506129338161290d565b92915050565b6000819050919050565b61294c81612939565b811461295757600080fd5b50565b60008135905061296981612943565b92915050565b60008060408385031215612986576129856128d6565b5b600061299485828601612924565b92505060206129a58582860161295a565b9150509250929050565b60008115159050919050565b6129c4816129af565b82525050565b60006020820190506129df60008301846129bb565b92915050565b6000602082840312156129fb576129fa6128d6565b5b6000612a098482850161295a565b91505092915050565b612a1b81612939565b82525050565b6000602082019050612a366000830184612a12565b92915050565b600060208284031215612a5257612a516128d6565b5b6000612a6084828501612924565b91505092915050565b6000608082019050612a7e6000830187612a12565b612a8b6020830186612a12565b612a986040830185612a12565b612aa56060830184612a12565b95945050505050565b600080600060608486031215612ac757612ac66128d6565b5b6000612ad586828701612924565b9350506020612ae686828701612924565b9250506040612af78682870161295a565b9150509250925092565b600060ff82169050919050565b612b1781612b01565b82525050565b6000602082019050612b326000830184612b0e565b92915050565b612b41816128fb565b82525050565b6000602082019050612b5c6000830184612b38565b92915050565b60008060408385031215612b7957612b786128d6565b5b6000612b8785828601612924565b9250506020612b9885828601612924565b9150509250929050565b6000612bad826128fb565b9050919050565b612bbd81612ba2565b8114612bc857600080fd5b50565b600081359050612bda81612bb4565b92915050565b600060208284031215612bf657612bf56128d6565b5b6000612c0484828501612bcb565b91505092915050565b6000819050919050565b6000612c32612c2d612c28846128db565b612c0d565b6128db565b9050919050565b6000612c4482612c17565b9050919050565b6000612c5682612c39565b9050919050565b612c6681612c4b565b82525050565b6000602082019050612c816000830184612c5d565b92915050565b7f5265656e7472616e63792047756172642063616c6c0000000000000000000000600082015250565b6000612cbd601583612826565b9150612cc882612c87565b602082019050919050565b60006020820190508181036000830152612cec81612cb0565b9050919050565b7f5a65726f20416d6f756e74000000000000000000000000000000000000000000600082015250565b6000612d29600b83612826565b9150612d3482612cf3565b602082019050919050565b60006020820190508181036000830152612d5881612d1c565b9050919050565b600081519050612d6e81612943565b92915050565b600060208284031215612d8a57612d896128d6565b5b6000612d9884828501612d5f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612de857607f821691505b602082108103612dfb57612dfa612da1565b5b50919050565b6000819050919050565b6000612e26612e21612e1c84612e01565b612c0d565b612939565b9050919050565b612e3681612e0b565b82525050565b6000602082019050612e516000830184612e2d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e9182612939565b9150612e9c83612939565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ed157612ed0612e57565b5b828201905092915050565b6000612ee782612939565b9150612ef283612939565b925082821015612f0557612f04612e57565b5b828203905092915050565b7f43616c6c6572206973206e6f74206f776e657200000000000000000000000000600082015250565b6000612f46601383612826565b9150612f5182612f10565b602082019050919050565b60006020820190508181036000830152612f7581612f39565b9050919050565b7f4665652054696d657220546f6f20486967680000000000000000000000000000600082015250565b6000612fb2601283612826565b9150612fbd82612f7c565b602082019050919050565b60006020820190508181036000830152612fe181612fa5565b9050919050565b7f496e73756666696369656e742046756e64730000000000000000000000000000600082015250565b600061301e601283612826565b915061302982612fe8565b602082019050919050565b6000602082019050818103600083015261304d81613011565b9050919050565b60006040820190506130696000830185612b38565b6130766020830184612a12565b9392505050565b613086816129af565b811461309157600080fd5b50565b6000815190506130a38161307d565b92915050565b6000602082840312156130bf576130be6128d6565b5b60006130cd84828501613094565b91505092915050565b7f4572726f72204f6e20546f6b656e205472616e73666572000000000000000000600082015250565b600061310c601783612826565b9150613117826130d6565b602082019050919050565b6000602082019050818103600083015261313b816130ff565b9050919050565b7f5a65726f20416464726573730000000000000000000000000000000000000000600082015250565b6000613178600c83612826565b915061318382613142565b602082019050919050565b600060208201905081810360008301526131a78161316b565b9050919050565b7f4561726c792046656520546f6f20486967680000000000000000000000000000600082015250565b60006131e4601283612826565b91506131ef826131ae565b602082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b600081905092915050565b50565b600061323560008361321a565b915061324082613225565b600082019050919050565b600061325682613228565b9150819050919050565b7f4572726f72204f6e20455448205769746864726177616c000000000000000000600082015250565b6000613296601783612826565b91506132a182613260565b602082019050919050565b600060208201905081810360008301526132c581613289565b9050919050565b7f43616e6e6f74205769746864726177205374616b696e6720546f6b656e730000600082015250565b6000613302601e83612826565b915061330d826132cc565b602082019050919050565b60006020820190508181036000830152613331816132f5565b9050919050565b7f4572726f72205769746864726177696e6720466f726569676e20546f6b656e00600082015250565b600061336e601f83612826565b915061337982613338565b602082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b60006060820190506133b96000830186612b38565b6133c66020830185612b38565b6133d36040830184612a12565b949350505050565b7f4661696c757265204f6e205472616e7366657246726f6d000000000000000000600082015250565b6000613411601783612826565b915061341c826133db565b602082019050919050565b6000602082019050818103600083015261344081613404565b9050919050565b7f4572726f72204f6e205472616e7366657220496e000000000000000000000000600082015250565b600061347d601483612826565b915061348882613447565b602082019050919050565b600060208201905081810360008301526134ac81613470565b9050919050565b7f4661696c757265204f6e20546f6b656e20507572636861736500000000000000600082015250565b60006134e9601983612826565b91506134f4826134b3565b602082019050919050565b60006020820190508181036000830152613518816134dc565b9050919050565b7f5a65726f20526563656976656400000000000000000000000000000000000000600082015250565b6000613555600d83612826565b91506135608261351f565b602082019050919050565b6000602082019050818103600083015261358481613548565b9050919050565b7f5a65726f20546f204d696e740000000000000000000000000000000000000000600082015250565b60006135c1600c83612826565b91506135cc8261358b565b602082019050919050565b600060208201905081810360008301526135f0816135b4565b9050919050565b600061360282612939565b915061360d83612939565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561364657613645612e57565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061368b82612939565b915061369683612939565b9250826136a6576136a5613651565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061370d602183612826565b9150613718826136b1565b604082019050919050565b6000602082019050818103600083015261373c81613700565b9050919050565b7f5072696365204d75737420526973650000000000000000000000000000000000600082015250565b6000613779600f83612826565b915061378482613743565b602082019050919050565b600060208201905081810360008301526137a88161376c565b9050919050565b60006060820190506137c46000830186612a12565b6137d16020830185612a12565b6137de6040830184612a12565b949350505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061381c601b83612826565b9150613827826137e6565b602082019050919050565b6000602082019050818103600083015261384b8161380f565b905091905056fea2646970667358221220f4187c1ced19f74d398a52027e4fb705495d01b59d16182893d56f2b7a70133664736f6c634300080e003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f0160000000000000000000000003161723de74425bfc78c2496de6b464068155303000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000000000c5374616b6564204d696e657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006534d494e45520000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806378c84798116100f7578063d348b40911610095578063ec5bfc8c11610064578063ec5bfc8c146106a9578063ed88c68e146106d2578063f0c112c6146106dc578063fc0c546a14610719576101d8565b8063d348b409146105ed578063dd62ed3e14610618578063e086e5ec14610655578063e0a4c2ff1461066c576101d8565b806395d89b41116100d157806395d89b4114610533578063a6f9dae11461055e578063a9059cbb14610587578063b6b55f25146105c4576101d8565b806378c84798146104b4578063893d20e8146104df5780638beceeea1461050a576101d8565b80631fee624811610164578063313ce5671161013e578063313ce567146103f8578063491dd70a1461042357806358d9e6851461044c57806370a0823114610477576101d8565b80631fee62481461035357806323b872dd1461037e5780632e1a7d4d146103bb576101d8565b806318160ddd116101a057806318160ddd146102825780631959a002146102ad5780631ab733a3146102ed5780631fe1bd741461032a576101d8565b806306fdde03146101dd578063095ea7b314610208578063098729db14610245576101d8565b366101d8576101d6346001610744565b005b600080fd5b3480156101e957600080fd5b506101f2610901565b6040516101ff91906128b4565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061296f565b610993565b60405161023c91906129ca565b60405180910390f35b34801561025157600080fd5b5061026c600480360381019061026791906129e5565b610a05565b6040516102799190612a21565b60405180910390f35b34801561028e57600080fd5b50610297610a42565b6040516102a49190612a21565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612a3c565b610ae3565b6040516102e49493929190612a69565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190612a3c565b610b13565b6040516103219190612a21565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906129e5565b610bbf565b005b34801561035f57600080fd5b50610368610c9d565b6040516103759190612a21565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190612aae565b610ca3565b6040516103b291906129ca565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd91906129e5565b610cee565b6040516103ef9190612a21565b60405180910390f35b34801561040457600080fd5b5061040d61109f565b60405161041a9190612b1d565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190612a3c565b6110c7565b005b34801561045857600080fd5b50610461611208565b60405161046e9190612a21565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190612a3c565b61120e565b6040516104ab9190612a21565b60405180910390f35b3480156104c057600080fd5b506104c9611262565b6040516104d69190612b47565b60405180910390f35b3480156104eb57600080fd5b506104f4611288565b6040516105019190612b47565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c91906129e5565b6112b1565b005b34801561053f57600080fd5b5061054861138d565b60405161055591906128b4565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612a3c565b61141f565b005b34801561059357600080fd5b506105ae60048036038101906105a9919061296f565b61156a565b6040516105bb91906129ca565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e691906129e5565b6115b4565b005b3480156105f957600080fd5b506106026115c2565b60405161060f9190612a21565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190612b62565b6115d1565b60405161064c9190612a21565b60405180910390f35b34801561066157600080fd5b5061066a6115d9565b005b34801561067857600080fd5b50610693600480360381019061068e9190612a3c565b611716565b6040516106a09190612a21565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190612be0565b6117be565b005b6106da611a13565b005b3480156106e857600080fd5b5061070360048036038101906106fe91906129e5565b611a8a565b6040516107109190612a21565b60405180910390f35b34801561072557600080fd5b5061072e611ac7565b60405161073b9190612c6c565b60405180910390f35b600260085403610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078090612cd3565b60405180910390fd5b6002600881905550600082116107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90612d3f565b60405180910390fd5b60007f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161082f9190612b47565b602060405180830381865afa15801561084c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108709190612d74565b9050600060065414806108835750600081145b156108b85760008261089d5761089884611aeb565b6108a7565b6108a684611d72565b5b90506108b281612020565b506108f4565b60006108c26120c0565b90506000836108d9576108d485611aeb565b6108e3565b6108e285611d72565b5b90506108f133828585612194565b50505b5060016008819055505050565b60606001805461091090612dd0565b80601f016020809104026020016040519081016040528092919081815260200182805461093c90612dd0565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60008273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560006040516109f39190612e3c565b60405180910390a36001905092915050565b6000610a3b670de0b6b3a7640000610a2d610a1e6120c0565b856122c290919063ffffffff16565b61233c90919063ffffffff16565b9050919050565b60007f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a9d9190612b47565b602060405180830381865afa158015610aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ade9190612d74565b905090565b60036020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154610ba48461120e565b610bae9190612e86565b610bb89190612edc565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612f5c565b60405180910390fd5b62989680811115610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a90612fc8565b60405180910390fd5b8060058190555050565b60055481565b60003373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce357610ce182610cee565b505b600190509392505050565b6000600260085403610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612cd3565b60405180910390fd5b60026008819055506000610d476120c0565b90506000610d543361120e565b8414610d6857610d6384611a8a565b610dac565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001545b90506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154118015610e42575080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410155b8015610e56575083610e533361120e565b10155b8015610e625750600084115b8015610e6e5750600081115b610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490613034565b60405180910390fd5b610eb8338286612386565b83600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003016000828254610f0a9190612e86565b92505081905550600080610f1d33611716565b14610f5057610f4b6103e8610f3d600454886122c290919063ffffffff16565b61233c90919063ffffffff16565b610f53565b60645b90506000610f6a82876124a790919063ffffffff16565b90507f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fc7929190613054565b6020604051808303816000875af1158015610fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100a91906130a9565b611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090613122565b60405180910390fd5b611052846124f1565b7f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243643382604051611083929190613054565b60405180910390a1809450505050506001600881905550919050565b60007f0000000000000000000000000000000000000000000000000000000000000012905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c90612f5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb9061318e565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b600061125b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610a05565b9050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612f5c565b60405180910390fd5b6064811115611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a906131fa565b60405180910390fd5b8060048190555050565b60606002805461139c90612dd0565b80601f01602080910402602001604051908101604052809291908181526020018280546113c890612dd0565b80156114155780601f106113ea57610100808354040283529160200191611415565b820191906000526020600020905b8154815290600101906020018083116113f857829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a490612f5c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115aa576115a882610cee565b505b6001905092915050565b6115bf816000610744565b50565b60006115cc6120c0565b905090565b600092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612f5c565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161168d9061324b565b60006040518083038185875af1925050503d80600081146116ca576040519150601f19603f3d011682016040523d82523d6000602084013e6116cf565b606091505b5050905080611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a906132ac565b60405180910390fd5b50565b600043600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154106117b45743600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546117af9190612edc565b6117b7565b60005b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390612f5c565b60405180910390fd5b7f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190613318565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119309190612b47565b602060405180830381865afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190612d74565b6040518363ffffffff1660e01b815260040161198e929190613054565b6020604051808303816000875af11580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d191906130a9565b611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790613384565b60405180910390fd5b50565b600260085403611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90612cd3565b60405180910390fd5b60026008819055506000611a6a6120c0565b9050611a7547611d72565b50611a7f816124f1565b506001600881905550565b6000611ac0611a976120c0565b611ab2670de0b6b3a7640000856122c290919063ffffffff16565b61233c90919063ffffffff16565b9050919050565b7f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01681565b6000807f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b479190612b47565b602060405180830381865afa158015611b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b889190612d74565b90507f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401611be7939291906133a4565b6020604051808303816000875af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2a91906130a9565b611c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6090613427565b60405180910390fd5b6000611d17827f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cc89190612b47565b602060405180830381865afa158015611ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d099190612d74565b6124a790919063ffffffff16565b9050838111158015611d295750600081115b611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90613493565b60405180910390fd5b8092505050919050565b6000808211611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad90612d3f565b60405180910390fd5b60007f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e119190612b47565b602060405180830381865afa158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e529190612d74565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051611e9c9061324b565b60006040518083038185875af1925050503d8060008114611ed9576040519150601f19603f3d011682016040523d82523d6000602084013e611ede565b606091505b5050905080611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f19906134ff565b60405180910390fd5b6000611fd0837f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f819190612b47565b602060405180830381865afa158015611f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc29190612d74565b6124a790919063ffffffff16565b905060008111612015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200c9061356b565b60405180910390fd5b809350505050919050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546120729190612e86565b92505081905550612084338283612581565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c33826040516120b5929190613054565b60405180910390a150565b6000807f0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f01673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161211c9190612b47565b602060405180830381865afa158015612139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215d9190612d74565b905061218e600654612180670de0b6b3a7640000846122c290919063ffffffff16565b61233c90919063ffffffff16565b91505090565b60006121d060646121c2856121b4886006546122c290919063ffffffff16565b61233c90919063ffffffff16565b6124a790919063ffffffff16565b905060008111612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c906135d7565b60405180910390fd5b83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546122679190612e86565b92505081905550612279858286612581565b612282826124f1565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c85856040516122b3929190613054565b60405180910390a15050505050565b60008083036122d45760009050612336565b600082846122e291906135f7565b90508284826122f19190613680565b14612331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232890613723565b60405180910390fd5b809150505b92915050565b600061237e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126f6565b905092915050565b6123db82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546124a790919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612436826006546124a790919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161249a9190612a21565b60405180910390a3505050565b60006124e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612759565b905092915050565b60006124fb6120c0565b905081811015612540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125379061378f565b60405180910390fd5b7f046aa811b2923fd55b4ca06375b4045117d4584c66fc40880a8ab8ee32d88ed18282600654604051612575939291906137af565b60405180910390a15050565b6125d682600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546127bd90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612631826006546127bd90919063ffffffff16565b600681905550600554436126459190612e86565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126e99190612a21565b60405180910390a3505050565b6000808311829061273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273491906128b4565b60405180910390fd5b506000838561274c9190613680565b9050809150509392505050565b60008383111582906127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279891906128b4565b60405180910390fd5b50600083856127b09190612edc565b9050809150509392505050565b60008082846127cc9190612e86565b905083811015612811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280890613832565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285557808201518184015260208101905061283a565b83811115612864576000848401525b50505050565b6000601f19601f8301169050919050565b60006128868261281b565b6128908185612826565b93506128a0818560208601612837565b6128a98161286a565b840191505092915050565b600060208201905081810360008301526128ce818461287b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612906826128db565b9050919050565b612916816128fb565b811461292157600080fd5b50565b6000813590506129338161290d565b92915050565b6000819050919050565b61294c81612939565b811461295757600080fd5b50565b60008135905061296981612943565b92915050565b60008060408385031215612986576129856128d6565b5b600061299485828601612924565b92505060206129a58582860161295a565b9150509250929050565b60008115159050919050565b6129c4816129af565b82525050565b60006020820190506129df60008301846129bb565b92915050565b6000602082840312156129fb576129fa6128d6565b5b6000612a098482850161295a565b91505092915050565b612a1b81612939565b82525050565b6000602082019050612a366000830184612a12565b92915050565b600060208284031215612a5257612a516128d6565b5b6000612a6084828501612924565b91505092915050565b6000608082019050612a7e6000830187612a12565b612a8b6020830186612a12565b612a986040830185612a12565b612aa56060830184612a12565b95945050505050565b600080600060608486031215612ac757612ac66128d6565b5b6000612ad586828701612924565b9350506020612ae686828701612924565b9250506040612af78682870161295a565b9150509250925092565b600060ff82169050919050565b612b1781612b01565b82525050565b6000602082019050612b326000830184612b0e565b92915050565b612b41816128fb565b82525050565b6000602082019050612b5c6000830184612b38565b92915050565b60008060408385031215612b7957612b786128d6565b5b6000612b8785828601612924565b9250506020612b9885828601612924565b9150509250929050565b6000612bad826128fb565b9050919050565b612bbd81612ba2565b8114612bc857600080fd5b50565b600081359050612bda81612bb4565b92915050565b600060208284031215612bf657612bf56128d6565b5b6000612c0484828501612bcb565b91505092915050565b6000819050919050565b6000612c32612c2d612c28846128db565b612c0d565b6128db565b9050919050565b6000612c4482612c17565b9050919050565b6000612c5682612c39565b9050919050565b612c6681612c4b565b82525050565b6000602082019050612c816000830184612c5d565b92915050565b7f5265656e7472616e63792047756172642063616c6c0000000000000000000000600082015250565b6000612cbd601583612826565b9150612cc882612c87565b602082019050919050565b60006020820190508181036000830152612cec81612cb0565b9050919050565b7f5a65726f20416d6f756e74000000000000000000000000000000000000000000600082015250565b6000612d29600b83612826565b9150612d3482612cf3565b602082019050919050565b60006020820190508181036000830152612d5881612d1c565b9050919050565b600081519050612d6e81612943565b92915050565b600060208284031215612d8a57612d896128d6565b5b6000612d9884828501612d5f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612de857607f821691505b602082108103612dfb57612dfa612da1565b5b50919050565b6000819050919050565b6000612e26612e21612e1c84612e01565b612c0d565b612939565b9050919050565b612e3681612e0b565b82525050565b6000602082019050612e516000830184612e2d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e9182612939565b9150612e9c83612939565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ed157612ed0612e57565b5b828201905092915050565b6000612ee782612939565b9150612ef283612939565b925082821015612f0557612f04612e57565b5b828203905092915050565b7f43616c6c6572206973206e6f74206f776e657200000000000000000000000000600082015250565b6000612f46601383612826565b9150612f5182612f10565b602082019050919050565b60006020820190508181036000830152612f7581612f39565b9050919050565b7f4665652054696d657220546f6f20486967680000000000000000000000000000600082015250565b6000612fb2601283612826565b9150612fbd82612f7c565b602082019050919050565b60006020820190508181036000830152612fe181612fa5565b9050919050565b7f496e73756666696369656e742046756e64730000000000000000000000000000600082015250565b600061301e601283612826565b915061302982612fe8565b602082019050919050565b6000602082019050818103600083015261304d81613011565b9050919050565b60006040820190506130696000830185612b38565b6130766020830184612a12565b9392505050565b613086816129af565b811461309157600080fd5b50565b6000815190506130a38161307d565b92915050565b6000602082840312156130bf576130be6128d6565b5b60006130cd84828501613094565b91505092915050565b7f4572726f72204f6e20546f6b656e205472616e73666572000000000000000000600082015250565b600061310c601783612826565b9150613117826130d6565b602082019050919050565b6000602082019050818103600083015261313b816130ff565b9050919050565b7f5a65726f20416464726573730000000000000000000000000000000000000000600082015250565b6000613178600c83612826565b915061318382613142565b602082019050919050565b600060208201905081810360008301526131a78161316b565b9050919050565b7f4561726c792046656520546f6f20486967680000000000000000000000000000600082015250565b60006131e4601283612826565b91506131ef826131ae565b602082019050919050565b60006020820190508181036000830152613213816131d7565b9050919050565b600081905092915050565b50565b600061323560008361321a565b915061324082613225565b600082019050919050565b600061325682613228565b9150819050919050565b7f4572726f72204f6e20455448205769746864726177616c000000000000000000600082015250565b6000613296601783612826565b91506132a182613260565b602082019050919050565b600060208201905081810360008301526132c581613289565b9050919050565b7f43616e6e6f74205769746864726177205374616b696e6720546f6b656e730000600082015250565b6000613302601e83612826565b915061330d826132cc565b602082019050919050565b60006020820190508181036000830152613331816132f5565b9050919050565b7f4572726f72205769746864726177696e6720466f726569676e20546f6b656e00600082015250565b600061336e601f83612826565b915061337982613338565b602082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b60006060820190506133b96000830186612b38565b6133c66020830185612b38565b6133d36040830184612a12565b949350505050565b7f4661696c757265204f6e205472616e7366657246726f6d000000000000000000600082015250565b6000613411601783612826565b915061341c826133db565b602082019050919050565b6000602082019050818103600083015261344081613404565b9050919050565b7f4572726f72204f6e205472616e7366657220496e000000000000000000000000600082015250565b600061347d601483612826565b915061348882613447565b602082019050919050565b600060208201905081810360008301526134ac81613470565b9050919050565b7f4661696c757265204f6e20546f6b656e20507572636861736500000000000000600082015250565b60006134e9601983612826565b91506134f4826134b3565b602082019050919050565b60006020820190508181036000830152613518816134dc565b9050919050565b7f5a65726f20526563656976656400000000000000000000000000000000000000600082015250565b6000613555600d83612826565b91506135608261351f565b602082019050919050565b6000602082019050818103600083015261358481613548565b9050919050565b7f5a65726f20546f204d696e740000000000000000000000000000000000000000600082015250565b60006135c1600c83612826565b91506135cc8261358b565b602082019050919050565b600060208201905081810360008301526135f0816135b4565b9050919050565b600061360282612939565b915061360d83612939565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561364657613645612e57565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061368b82612939565b915061369683612939565b9250826136a6576136a5613651565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061370d602183612826565b9150613718826136b1565b604082019050919050565b6000602082019050818103600083015261373c81613700565b9050919050565b7f5072696365204d75737420526973650000000000000000000000000000000000600082015250565b6000613779600f83612826565b915061378482613743565b602082019050919050565b600060208201905081810360008301526137a88161376c565b9050919050565b60006060820190506137c46000830186612a12565b6137d16020830185612a12565b6137de6040830184612a12565b949350505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061381c601b83612826565b9150613827826137e6565b602082019050919050565b6000602082019050818103600083015261384b8161380f565b905091905056fea2646970667358221220f4187c1ced19f74d398a52027e4fb705495d01b59d16182893d56f2b7a70133664736f6c634300080e0033

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

00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f0160000000000000000000000003161723de74425bfc78c2496de6b464068155303000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000000000c5374616b6564204d696e657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006534d494e45520000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Staked Miner
Arg [1] : symbol_ (string): SMINER
Arg [2] : token_ (address): 0x2B645A57e82123796c3EA7d78DE27c3e3ff7f016
Arg [3] : tokenSwapper_ (address): 0x3161723De74425BFc78c2496DE6B464068155303
Arg [4] : leaveEarlyFee_ (uint256): 10
Arg [5] : leaveEarlyFeeTimer_ (uint256): 172800

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000002b645a57e82123796c3ea7d78de27c3e3ff7f016
Arg [3] : 0000000000000000000000003161723de74425bfc78c2496de6b464068155303
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [5] : 000000000000000000000000000000000000000000000000000000000002a300
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [7] : 5374616b6564204d696e65720000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [9] : 534d494e45520000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

4320:12614:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9228:25;9237:9;9248:4;9228:8;:25::i;:::-;4320:12614;;;;;6779:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16779:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15509:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7083:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4798:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16143:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8089:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4951:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7632:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9574:1306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6983:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8346:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4880:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7262:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5102:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4099:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7859:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6879:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3873:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7428:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9391:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15720:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16623:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8574:179;;;;;;;;;;;;;:::i;:::-;;15888:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8761:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10888:281;;;:::i;:::-;;15283:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4424:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11232:874;5324:1;5405:7;;:19;5397:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;5324:1;5461:7;:18;;;;11387:1:::1;11378:6;:10;11356:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11481:20;11504:5;:15;;;11528:4;11504:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11481:53;;11567:1;11551:12;;:17;:41;;;;11591:1;11572:15;:20;11551:41;11547:552;;;11609:18;11630:4;:46;;11657:19;11669:6;11657:11;:19::i;:::-;11630:46;;;11637:17;11647:6;11637:9;:17::i;:::-;11630:46;11609:67;;11691:37;11714:13;11691:22;:37::i;:::-;11594:146;11547:552;;;11796:13;11812:17;:15;:17::i;:::-;11796:33;;11888:13;11904:4;:46;;11931:19;11943:6;11931:11;:19::i;:::-;11904:46;;;11911:17;11921:6;11911:9;:17::i;:::-;11904:46;11888:62;;12031:56;12039:10;12051:8;12061:15;12078:8;12031:7;:56::i;:::-;11746:353;;11547:552;11299:807;5280:1:::0;5502:7;:22;;;;11232:874;;:::o;6779:94::-;6827:13;6860:5;6853:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6779:94;:::o;16779:152::-;16847:4;16890:7;16869:32;;16878:10;16869:32;;;16899:1;16869:32;;;;;;:::i;:::-;;;;;;;;16919:4;16912:11;;16779:152;;;;:::o;15509:156::-;15586:7;15613:44;5200:6;15613:29;15624:17;:15;:17::i;:::-;15613:6;:10;;:29;;;;:::i;:::-;:33;;:44;;;;:::i;:::-;15606:51;;15509:156;;;:::o;7083:120::-;7138:7;7165:5;:15;;;7189:4;7165:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7158:37;;7083:120;:::o;4798:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16143:173::-;16205:7;16282:8;:14;16291:4;16282:14;;;;;;;;;;;;;;;:26;;;16250:8;:14;16259:4;16250:14;;;;;;;;;;;;;;;:29;;;16232:15;16242:4;16232:9;:15::i;:::-;:47;;;;:::i;:::-;:76;;;;:::i;:::-;16225:83;;16143:173;;;:::o;8089:251::-;3480:5;;;;;;;;;;3466:19;;:10;:19;;;3458:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;8228:5:::1;8203:21;:30;;8181:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;8311:21;8290:18;:42;;;;8089:251:::0;:::o;4951:33::-;;;;:::o;7632:219::-;7725:4;7759:10;7746:23;;:9;:23;;;7742:72;;7786:16;7795:6;7786:8;:16::i;:::-;;7742:72;7839:4;7832:11;;7632:219;;;;;:::o;9574:1306::-;9637:7;5324:1;5405:7;;:19;5397:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;5324:1;5461:7;:18;;;;9690:13:::1;9706:17;:15;:17::i;:::-;9690:33;;9790:16;9819:21;9829:10;9819:9;:21::i;:::-;9809:6;:31;:95;;9874:30;9897:6;9874:22;:30::i;:::-;9809:95;;;9843:8;:20;9852:10;9843:20;;;;;;;;;;;;;;;:28;;;9809:95;9790:114;;9970:1;9939:8;:20;9948:10;9939:20;;;;;;;;;;;;;;;:28;;;:32;:92;;;;;10020:11;9988:8;:20;9997:10;9988:20;;;;;;;;;;;;;;;:28;;;:43;;9939:92;:140;;;;;10073:6;10048:21;10058:10;10048:9;:21::i;:::-;:31;;9939:140;:167;;;;;10105:1;10096:6;:10;9939:167;:199;;;;;10137:1;10123:11;:15;9939:199;9917:267;;;;;;;;;;;;:::i;:::-;;;;;;;;;10238:38;10244:10;10256:11;10269:6;10238:5;:38::i;:::-;10366:6;10327:8;:20;10336:10;10327:20;;;;;;;;;;;;;;;:35;;;:45;;;;;;;:::i;:::-;;;;;;;;10432:8;10476:1:::0;10443:29:::1;10461:10;10443:17;:29::i;:::-;:34;:78;;10486:35;10516:4;10486:25;10497:13;;10486:6;:10;;:25;;;;:::i;:::-;:29;;:35;;;;:::i;:::-;10443:78;;;10480:3;10443:78;10432:89;;10567:18;10588:15;10599:3;10588:6;:10;;:15;;;;:::i;:::-;10567:36;;10636:5;:14;;;10651:10;10663;10636:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10614:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;10768:28;10787:8;10768:18;:28::i;:::-;10812:32;10821:10;10833;10812:32;;;;;;;:::i;:::-;;;;;;;;10862:10;10855:17;;;;;;5280:1:::0;5502:7;:22;;;;9574:1306;;;:::o;6983:94::-;7035:5;7060:9;7053:16;;6983:94;:::o;8346:220::-;3480:5;;;;;;;;;;3466:19;;:10;:19;;;3458:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;8475:1:::1;8448:29;;:15;:29;;::::0;8426:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8543:15;8528:12;;:30;;;;;;;;;;;;;;;;;;8346:220:::0;:::o;4880:28::-;;;;:::o;7262:158::-;7328:7;7355:57;7386:8;:17;7395:7;7386:17;;;;;;;;;;;;;;;:25;;;7355:30;:57::i;:::-;7348:64;;7262:158;;;:::o;5102:27::-;;;;;;;;;;;;;:::o;4099:83::-;4142:7;4169:5;;;;;;;;;;;4162:12;;4099:83;:::o;7859:224::-;3480:5;;;;;;;;;;3466:19;;:10;:19;;;3458:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;7983:3:::1;7963:16;:23;;7941:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;8059:16;8043:13;:32;;;;7859:224:::0;:::o;6879:98::-;6929:13;6962:7;6955:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6879:98;:::o;3873:132::-;3480:5;;;;;;;;;;3466:19;;:10;:19;;;3458:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;3961:8:::1;3945:25;;3954:5;::::0;::::1;;;;;;;;3945:25;;;;;;;;;;;;3989:8;3981:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;3873:132:::0;:::o;7428:198::-;7508:4;7542:10;7529:23;;:9;:23;;;7525:72;;7569:16;7578:6;7569:8;:16::i;:::-;;7525:72;7614:4;7607:11;;7428:198;;;;:::o;9391:84::-;9444:23;9453:6;9461:5;9444:8;:23::i;:::-;9391:84;:::o;15720:101::-;15769:7;15796:17;:15;:17::i;:::-;15789:24;;15720:101;:::o;16623:106::-;16692:7;16623:106;;;;:::o;8574:179::-;3480:5;;;;;;;;;;3466:19;;:10;:19;;;3458:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;8628:6:::1;8647:10;8639:24;;8671:21;8639:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8627:70;;;8716:1;8708:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;8616:137;8574:179::o:0;15888:186::-;15950:7;16006:12;15977:8;:14;15986:4;15977:14;;;;;;;;;;;;;;;:26;;;:41;:89;;16054:12;16025:8;:14;16034:4;16025:14;;;;;;;;;;;;;;;:26;;;:41;;;;:::i;:::-;15977:89;;;16021:1;15977:89;15970:96;;15888:186;;;:::o;8761:347::-;3480:5;;;;;;;;;;3466:19;;:10;:19;;;3458:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;8884:5:::1;8857:33;;8865:6;8857:33;;::::0;8835:113:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8981:6;:15;;;8997:10;9009:6;:16;;;9034:4;9009:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8981:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8959:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;8761:347:::0;:::o;10888:281::-;5324:1;5405:7;;:19;5397:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;5324:1;5461:7;:18;;;;10980:13:::1;10996:17;:15;:17::i;:::-;10980:33;;11056:32;11066:21;11056:9;:32::i;:::-;;11133:28;11152:8;11133:18;:28::i;:::-;10936:233;5280:1:::0;5502:7;:22;;;;10888:281::o;15283:148::-;15352:7;15379:44;15405:17;:15;:17::i;:::-;15379:21;5200:6;15379;:10;;:21;;;;:::i;:::-;:25;;:44;;;;:::i;:::-;15372:51;;15283:148;;;:::o;4424:29::-;;;:::o;13926:474::-;13981:7;14001:11;14015:5;:15;;;14039:4;14015:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14001:44;;14078:5;:18;;;14097:10;14117:4;14124:6;14078:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14056:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;14193:13;14209:42;14244:6;14209:5;:15;;;14233:4;14209:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;:42;;;;:::i;:::-;14193:58;;14296:6;14284:8;:18;;:34;;;;;14317:1;14306:8;:12;14284:34;14262:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;14384:8;14377:15;;;;13926:474;;;:::o;13092:466::-;13142:7;13193:1;13184:6;:10;13162:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13244:11;13258:5;:15;;;13282:4;13258:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13244:44;;13300:6;13319:12;;;;;;;;;;;13311:26;;13345:6;13311:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13299:57;;;13375:1;13367:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;13417:13;13433:42;13468:6;13433:5;:15;;;13457:4;13433:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;:42;;;;:::i;:::-;13417:58;;13505:1;13494:8;:12;13486:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13542:8;13535:15;;;;;13092:466;;;:::o;12167:300::-;12315:8;12279;:20;12288:10;12279:20;;;;;;;;;;;;;;;:32;;;:44;;;;;;;:::i;:::-;;;;;;;;12375:37;12381:10;12393:8;12403;12375:5;:37::i;:::-;12430:29;12438:10;12450:8;12430:29;;;;;;;:::i;:::-;;;;;;;;12167:300;:::o;16375:196::-;16425:7;16445:20;16468:5;:15;;;16492:4;16468:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16445:53;;16516:47;16550:12;;16517:27;5200:6;16517:12;:16;;:27;;;;:::i;:::-;16516:33;;:47;;;;:::i;:::-;16509:54;;;16375:196;:::o;12475:609::-;12631:12;12646:58;12700:3;12647:47;12678:15;12647:26;12664:8;12647:12;;:16;;:26;;;;:::i;:::-;:30;;:47;;;;:::i;:::-;12646:53;;:58;;;;:::i;:::-;12631:73;;12747:1;12737:7;:11;12715:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12868:8;12836;:16;12845:6;12836:16;;;;;;;;;;;;;;;:28;;;:40;;;;;;;:::i;:::-;;;;;;;;12928:32;12934:6;12942:7;12951:8;12928:5;:32::i;:::-;13005:28;13024:8;13005:18;:28::i;:::-;13051:25;13059:6;13067:8;13051:25;;;;;;;:::i;:::-;;;;;;;;12578:506;12475:609;;;;:::o;1505:471::-;1563:7;1813:1;1808;:6;1804:47;;1838:1;1831:8;;;;1804:47;1863:9;1879:1;1875;:5;;;;:::i;:::-;1863:17;;1908:1;1903;1899;:5;;;;:::i;:::-;:10;1891:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1967:1;1960:8;;;1505:471;;;;;:::o;1984:132::-;2042:7;2069:39;2073:1;2076;2069:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2062:46;;1984:132;;;;:::o;14475:257::-;14585:34;14612:6;14585:8;:14;14594:4;14585:14;;;;;;;;;;;;;;;:22;;;:26;;:34;;;;:::i;:::-;14560:8;:14;14569:4;14560:14;;;;;;;;;;;;;;;:22;;:59;;;;14645:24;14662:6;14645:12;;:16;;:24;;;;:::i;:::-;14630:12;:39;;;;14708:1;14685:39;;14694:4;14685:39;;;14712:11;14685:39;;;;;;:::i;:::-;;;;;;;;14475:257;;;:::o;1161:136::-;1219:7;1246:43;1250:1;1253;1246:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1239:50;;1161:136;;;;:::o;13566:350::-;13660:16;13679:17;:15;:17::i;:::-;13660:36;;13773:8;13761;:20;;13739:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13863:45;13875:8;13885;13895:12;;13863:45;;;;;;;;:::i;:::-;;;;;;;;13621:295;13566:350;:::o;14807:388::-;14938:32;14963:6;14938:8;:12;14947:2;14938:12;;;;;;;;;;;;;;;:20;;;:24;;:32;;;;:::i;:::-;14915:8;:12;14924:2;14915:12;;;;;;;;;;;;;;;:20;;:55;;;;14996:24;15013:6;14996:12;;:16;;:24;;;;:::i;:::-;14981:12;:39;;;;15112:18;;15097:12;:33;;;;:::i;:::-;15062:8;:20;15071:10;15062:20;;;;;;;;;;;;;;;:32;;:68;;;;15167:2;15146:41;;15163:1;15146:41;;;15171:15;15146:41;;;;;;:::i;:::-;;;;;;;;14807:388;;;:::o;2124:278::-;2210:7;2242:1;2238;:5;2245:12;2230:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2269:9;2285:1;2281;:5;;;;:::i;:::-;2269:17;;2393:1;2386:8;;;2124:278;;;;;:::o;1305:192::-;1391:7;1424:1;1419;:6;;1427:12;1411:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1451:9;1467:1;1463;:5;;;;:::i;:::-;1451:17;;1488:1;1481:8;;;1305:192;;;;;:::o;972:181::-;1030:7;1050:9;1066:1;1062;:5;;;;:::i;:::-;1050:17;;1091:1;1086;:6;;1078:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1144:1;1137:8;;;972:181;;;;:::o;7:99:1:-;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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:553::-;4693:4;4731:3;4720:9;4716:19;4708:27;;4745:71;4813:1;4802:9;4798:17;4789:6;4745:71;:::i;:::-;4826:72;4894:2;4883:9;4879:18;4870:6;4826:72;:::i;:::-;4908;4976:2;4965:9;4961:18;4952:6;4908:72;:::i;:::-;4990;5058:2;5047:9;5043:18;5034:6;4990:72;:::i;:::-;4516:553;;;;;;;:::o;5075:619::-;5152:6;5160;5168;5217:2;5205:9;5196:7;5192:23;5188:32;5185:119;;;5223:79;;:::i;:::-;5185:119;5343:1;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5314:117;5470:2;5496:53;5541:7;5532:6;5521:9;5517:22;5496:53;:::i;:::-;5486:63;;5441:118;5598:2;5624:53;5669:7;5660:6;5649:9;5645:22;5624:53;:::i;:::-;5614:63;;5569:118;5075:619;;;;;:::o;5700:86::-;5735:7;5775:4;5768:5;5764:16;5753:27;;5700:86;;;:::o;5792:112::-;5875:22;5891:5;5875:22;:::i;:::-;5870:3;5863:35;5792:112;;:::o;5910:214::-;5999:4;6037:2;6026:9;6022:18;6014:26;;6050:67;6114:1;6103:9;6099:17;6090:6;6050:67;:::i;:::-;5910:214;;;;:::o;6130:118::-;6217:24;6235:5;6217:24;:::i;:::-;6212:3;6205:37;6130:118;;:::o;6254:222::-;6347:4;6385:2;6374:9;6370:18;6362:26;;6398:71;6466:1;6455:9;6451:17;6442:6;6398:71;:::i;:::-;6254:222;;;;:::o;6482:474::-;6550:6;6558;6607:2;6595:9;6586:7;6582:23;6578:32;6575:119;;;6613:79;;:::i;:::-;6575:119;6733:1;6758:53;6803:7;6794:6;6783:9;6779:22;6758:53;:::i;:::-;6748:63;;6704:117;6860:2;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6831:118;6482:474;;;;;:::o;6962:109::-;7012:7;7041:24;7059:5;7041:24;:::i;:::-;7030:35;;6962:109;;;:::o;7077:148::-;7163:37;7194:5;7163:37;:::i;:::-;7156:5;7153:48;7143:76;;7215:1;7212;7205:12;7143:76;7077:148;:::o;7231:165::-;7290:5;7328:6;7315:20;7306:29;;7344:46;7384:5;7344:46;:::i;:::-;7231:165;;;;:::o;7402:355::-;7474:6;7523:2;7511:9;7502:7;7498:23;7494:32;7491:119;;;7529:79;;:::i;:::-;7491:119;7649:1;7674:66;7732:7;7723:6;7712:9;7708:22;7674:66;:::i;:::-;7664:76;;7620:130;7402:355;;;;:::o;7763:60::-;7791:3;7812:5;7805:12;;7763:60;;;:::o;7829:142::-;7879:9;7912:53;7930:34;7939:24;7957:5;7939:24;:::i;:::-;7930:34;:::i;:::-;7912:53;:::i;:::-;7899:66;;7829:142;;;:::o;7977:126::-;8027:9;8060:37;8091:5;8060:37;:::i;:::-;8047:50;;7977:126;;;:::o;8109:139::-;8172:9;8205:37;8236:5;8205:37;:::i;:::-;8192:50;;8109:139;;;:::o;8254:157::-;8354:50;8398:5;8354:50;:::i;:::-;8349:3;8342:63;8254:157;;:::o;8417:248::-;8523:4;8561:2;8550:9;8546:18;8538:26;;8574:84;8655:1;8644:9;8640:17;8631:6;8574:84;:::i;:::-;8417:248;;;;:::o;8671:171::-;8811:23;8807:1;8799:6;8795:14;8788:47;8671:171;:::o;8848:366::-;8990:3;9011:67;9075:2;9070:3;9011:67;:::i;:::-;9004:74;;9087:93;9176:3;9087:93;:::i;:::-;9205:2;9200:3;9196:12;9189:19;;8848:366;;;:::o;9220:419::-;9386:4;9424:2;9413:9;9409:18;9401:26;;9473:9;9467:4;9463:20;9459:1;9448:9;9444:17;9437:47;9501:131;9627:4;9501:131;:::i;:::-;9493:139;;9220:419;;;:::o;9645:161::-;9785:13;9781:1;9773:6;9769:14;9762:37;9645:161;:::o;9812:366::-;9954:3;9975:67;10039:2;10034:3;9975:67;:::i;:::-;9968:74;;10051:93;10140:3;10051:93;:::i;:::-;10169:2;10164:3;10160:12;10153:19;;9812:366;;;:::o;10184:419::-;10350:4;10388:2;10377:9;10373:18;10365:26;;10437:9;10431:4;10427:20;10423:1;10412:9;10408:17;10401:47;10465:131;10591:4;10465:131;:::i;:::-;10457:139;;10184:419;;;:::o;10609:143::-;10666:5;10697:6;10691:13;10682:22;;10713:33;10740:5;10713:33;:::i;:::-;10609:143;;;;:::o;10758:351::-;10828:6;10877:2;10865:9;10856:7;10852:23;10848:32;10845:119;;;10883:79;;:::i;:::-;10845:119;11003:1;11028:64;11084:7;11075:6;11064:9;11060:22;11028:64;:::i;:::-;11018:74;;10974:128;10758:351;;;;:::o;11115:180::-;11163:77;11160:1;11153:88;11260:4;11257:1;11250:15;11284:4;11281:1;11274:15;11301:320;11345:6;11382:1;11376:4;11372:12;11362:22;;11429:1;11423:4;11419:12;11450:18;11440:81;;11506:4;11498:6;11494:17;11484:27;;11440:81;11568:2;11560:6;11557:14;11537:18;11534:38;11531:84;;11587:18;;:::i;:::-;11531:84;11352:269;11301:320;;;:::o;11627:85::-;11672:7;11701:5;11690:16;;11627:85;;;:::o;11718:158::-;11776:9;11809:61;11827:42;11836:32;11862:5;11836:32;:::i;:::-;11827:42;:::i;:::-;11809:61;:::i;:::-;11796:74;;11718:158;;;:::o;11882:147::-;11977:45;12016:5;11977:45;:::i;:::-;11972:3;11965:58;11882:147;;:::o;12035:238::-;12136:4;12174:2;12163:9;12159:18;12151:26;;12187:79;12263:1;12252:9;12248:17;12239:6;12187:79;:::i;:::-;12035:238;;;;:::o;12279:180::-;12327:77;12324:1;12317:88;12424:4;12421:1;12414:15;12448:4;12445:1;12438:15;12465:305;12505:3;12524:20;12542:1;12524:20;:::i;:::-;12519:25;;12558:20;12576:1;12558:20;:::i;:::-;12553:25;;12712:1;12644:66;12640:74;12637:1;12634:81;12631:107;;;12718:18;;:::i;:::-;12631:107;12762:1;12759;12755:9;12748:16;;12465:305;;;;:::o;12776:191::-;12816:4;12836:20;12854:1;12836:20;:::i;:::-;12831:25;;12870:20;12888:1;12870:20;:::i;:::-;12865:25;;12909:1;12906;12903:8;12900:34;;;12914:18;;:::i;:::-;12900:34;12959:1;12956;12952:9;12944:17;;12776:191;;;;:::o;12973:169::-;13113:21;13109:1;13101:6;13097:14;13090:45;12973:169;:::o;13148:366::-;13290:3;13311:67;13375:2;13370:3;13311:67;:::i;:::-;13304:74;;13387:93;13476:3;13387:93;:::i;:::-;13505:2;13500:3;13496:12;13489:19;;13148:366;;;:::o;13520:419::-;13686:4;13724:2;13713:9;13709:18;13701:26;;13773:9;13767:4;13763:20;13759:1;13748:9;13744:17;13737:47;13801:131;13927:4;13801:131;:::i;:::-;13793:139;;13520:419;;;:::o;13945:168::-;14085:20;14081:1;14073:6;14069:14;14062:44;13945:168;:::o;14119:366::-;14261:3;14282:67;14346:2;14341:3;14282:67;:::i;:::-;14275:74;;14358:93;14447:3;14358:93;:::i;:::-;14476:2;14471:3;14467:12;14460:19;;14119:366;;;:::o;14491:419::-;14657:4;14695:2;14684:9;14680:18;14672:26;;14744:9;14738:4;14734:20;14730:1;14719:9;14715:17;14708:47;14772:131;14898:4;14772:131;:::i;:::-;14764:139;;14491:419;;;:::o;14916:168::-;15056:20;15052:1;15044:6;15040:14;15033:44;14916:168;:::o;15090:366::-;15232:3;15253:67;15317:2;15312:3;15253:67;:::i;:::-;15246:74;;15329:93;15418:3;15329:93;:::i;:::-;15447:2;15442:3;15438:12;15431:19;;15090:366;;;:::o;15462:419::-;15628:4;15666:2;15655:9;15651:18;15643:26;;15715:9;15709:4;15705:20;15701:1;15690:9;15686:17;15679:47;15743:131;15869:4;15743:131;:::i;:::-;15735:139;;15462:419;;;:::o;15887:332::-;16008:4;16046:2;16035:9;16031:18;16023:26;;16059:71;16127:1;16116:9;16112:17;16103:6;16059:71;:::i;:::-;16140:72;16208:2;16197:9;16193:18;16184:6;16140:72;:::i;:::-;15887:332;;;;;:::o;16225:116::-;16295:21;16310:5;16295:21;:::i;:::-;16288:5;16285:32;16275:60;;16331:1;16328;16321:12;16275:60;16225:116;:::o;16347:137::-;16401:5;16432:6;16426:13;16417:22;;16448:30;16472:5;16448:30;:::i;:::-;16347:137;;;;:::o;16490:345::-;16557:6;16606:2;16594:9;16585:7;16581:23;16577:32;16574:119;;;16612:79;;:::i;:::-;16574:119;16732:1;16757:61;16810:7;16801:6;16790:9;16786:22;16757:61;:::i;:::-;16747:71;;16703:125;16490:345;;;;:::o;16841:173::-;16981:25;16977:1;16969:6;16965:14;16958:49;16841:173;:::o;17020:366::-;17162:3;17183:67;17247:2;17242:3;17183:67;:::i;:::-;17176:74;;17259:93;17348:3;17259:93;:::i;:::-;17377:2;17372:3;17368:12;17361:19;;17020:366;;;:::o;17392:419::-;17558:4;17596:2;17585:9;17581:18;17573:26;;17645:9;17639:4;17635:20;17631:1;17620:9;17616:17;17609:47;17673:131;17799:4;17673:131;:::i;:::-;17665:139;;17392:419;;;:::o;17817:162::-;17957:14;17953:1;17945:6;17941:14;17934:38;17817:162;:::o;17985:366::-;18127:3;18148:67;18212:2;18207:3;18148:67;:::i;:::-;18141:74;;18224:93;18313:3;18224:93;:::i;:::-;18342:2;18337:3;18333:12;18326:19;;17985:366;;;:::o;18357:419::-;18523:4;18561:2;18550:9;18546:18;18538:26;;18610:9;18604:4;18600:20;18596:1;18585:9;18581:17;18574:47;18638:131;18764:4;18638:131;:::i;:::-;18630:139;;18357:419;;;:::o;18782:168::-;18922:20;18918:1;18910:6;18906:14;18899:44;18782:168;:::o;18956:366::-;19098:3;19119:67;19183:2;19178:3;19119:67;:::i;:::-;19112:74;;19195:93;19284:3;19195:93;:::i;:::-;19313:2;19308:3;19304:12;19297:19;;18956:366;;;:::o;19328:419::-;19494:4;19532:2;19521:9;19517:18;19509:26;;19581:9;19575:4;19571:20;19567:1;19556:9;19552:17;19545:47;19609:131;19735:4;19609:131;:::i;:::-;19601:139;;19328:419;;;:::o;19753:147::-;19854:11;19891:3;19876:18;;19753:147;;;;:::o;19906:114::-;;:::o;20026:398::-;20185:3;20206:83;20287:1;20282:3;20206:83;:::i;:::-;20199:90;;20298:93;20387:3;20298:93;:::i;:::-;20416:1;20411:3;20407:11;20400:18;;20026:398;;;:::o;20430:379::-;20614:3;20636:147;20779:3;20636:147;:::i;:::-;20629:154;;20800:3;20793:10;;20430:379;;;:::o;20815:173::-;20955:25;20951:1;20943:6;20939:14;20932:49;20815:173;:::o;20994:366::-;21136:3;21157:67;21221:2;21216:3;21157:67;:::i;:::-;21150:74;;21233:93;21322:3;21233:93;:::i;:::-;21351:2;21346:3;21342:12;21335:19;;20994:366;;;:::o;21366:419::-;21532:4;21570:2;21559:9;21555:18;21547:26;;21619:9;21613:4;21609:20;21605:1;21594:9;21590:17;21583:47;21647:131;21773:4;21647:131;:::i;:::-;21639:139;;21366:419;;;:::o;21791:180::-;21931:32;21927:1;21919:6;21915:14;21908:56;21791:180;:::o;21977:366::-;22119:3;22140:67;22204:2;22199:3;22140:67;:::i;:::-;22133:74;;22216:93;22305:3;22216:93;:::i;:::-;22334:2;22329:3;22325:12;22318:19;;21977:366;;;:::o;22349:419::-;22515:4;22553:2;22542:9;22538:18;22530:26;;22602:9;22596:4;22592:20;22588:1;22577:9;22573:17;22566:47;22630:131;22756:4;22630:131;:::i;:::-;22622:139;;22349:419;;;:::o;22774:181::-;22914:33;22910:1;22902:6;22898:14;22891:57;22774:181;:::o;22961:366::-;23103:3;23124:67;23188:2;23183:3;23124:67;:::i;:::-;23117:74;;23200:93;23289:3;23200:93;:::i;:::-;23318:2;23313:3;23309:12;23302:19;;22961:366;;;:::o;23333:419::-;23499:4;23537:2;23526:9;23522:18;23514:26;;23586:9;23580:4;23576:20;23572:1;23561:9;23557:17;23550:47;23614:131;23740:4;23614:131;:::i;:::-;23606:139;;23333:419;;;:::o;23758:442::-;23907:4;23945:2;23934:9;23930:18;23922:26;;23958:71;24026:1;24015:9;24011:17;24002:6;23958:71;:::i;:::-;24039:72;24107:2;24096:9;24092:18;24083:6;24039:72;:::i;:::-;24121;24189:2;24178:9;24174:18;24165:6;24121:72;:::i;:::-;23758:442;;;;;;:::o;24206:173::-;24346:25;24342:1;24334:6;24330:14;24323:49;24206:173;:::o;24385:366::-;24527:3;24548:67;24612:2;24607:3;24548:67;:::i;:::-;24541:74;;24624:93;24713:3;24624:93;:::i;:::-;24742:2;24737:3;24733:12;24726:19;;24385:366;;;:::o;24757:419::-;24923:4;24961:2;24950:9;24946:18;24938:26;;25010:9;25004:4;25000:20;24996:1;24985:9;24981:17;24974:47;25038:131;25164:4;25038:131;:::i;:::-;25030:139;;24757:419;;;:::o;25182:170::-;25322:22;25318:1;25310:6;25306:14;25299:46;25182:170;:::o;25358:366::-;25500:3;25521:67;25585:2;25580:3;25521:67;:::i;:::-;25514:74;;25597:93;25686:3;25597:93;:::i;:::-;25715:2;25710:3;25706:12;25699:19;;25358:366;;;:::o;25730:419::-;25896:4;25934:2;25923:9;25919:18;25911:26;;25983:9;25977:4;25973:20;25969:1;25958:9;25954:17;25947:47;26011:131;26137:4;26011:131;:::i;:::-;26003:139;;25730:419;;;:::o;26155:175::-;26295:27;26291:1;26283:6;26279:14;26272:51;26155:175;:::o;26336:366::-;26478:3;26499:67;26563:2;26558:3;26499:67;:::i;:::-;26492:74;;26575:93;26664:3;26575:93;:::i;:::-;26693:2;26688:3;26684:12;26677:19;;26336:366;;;:::o;26708:419::-;26874:4;26912:2;26901:9;26897:18;26889:26;;26961:9;26955:4;26951:20;26947:1;26936:9;26932:17;26925:47;26989:131;27115:4;26989:131;:::i;:::-;26981:139;;26708:419;;;:::o;27133:163::-;27273:15;27269:1;27261:6;27257:14;27250:39;27133:163;:::o;27302:366::-;27444:3;27465:67;27529:2;27524:3;27465:67;:::i;:::-;27458:74;;27541:93;27630:3;27541:93;:::i;:::-;27659:2;27654:3;27650:12;27643:19;;27302:366;;;:::o;27674:419::-;27840:4;27878:2;27867:9;27863:18;27855:26;;27927:9;27921:4;27917:20;27913:1;27902:9;27898:17;27891:47;27955:131;28081:4;27955:131;:::i;:::-;27947:139;;27674:419;;;:::o;28099:162::-;28239:14;28235:1;28227:6;28223:14;28216:38;28099:162;:::o;28267:366::-;28409:3;28430:67;28494:2;28489:3;28430:67;:::i;:::-;28423:74;;28506:93;28595:3;28506:93;:::i;:::-;28624:2;28619:3;28615:12;28608:19;;28267:366;;;:::o;28639:419::-;28805:4;28843:2;28832:9;28828:18;28820:26;;28892:9;28886:4;28882:20;28878:1;28867:9;28863:17;28856:47;28920:131;29046:4;28920:131;:::i;:::-;28912:139;;28639:419;;;:::o;29064:348::-;29104:7;29127:20;29145:1;29127:20;:::i;:::-;29122:25;;29161:20;29179:1;29161:20;:::i;:::-;29156:25;;29349:1;29281:66;29277:74;29274:1;29271:81;29266:1;29259:9;29252:17;29248:105;29245:131;;;29356:18;;:::i;:::-;29245:131;29404:1;29401;29397:9;29386:20;;29064:348;;;;:::o;29418:180::-;29466:77;29463:1;29456:88;29563:4;29560:1;29553:15;29587:4;29584:1;29577:15;29604:185;29644:1;29661:20;29679:1;29661:20;:::i;:::-;29656:25;;29695:20;29713:1;29695:20;:::i;:::-;29690:25;;29734:1;29724:35;;29739:18;;:::i;:::-;29724:35;29781:1;29778;29774:9;29769:14;;29604:185;;;;:::o;29795:220::-;29935:34;29931:1;29923:6;29919:14;29912:58;30004:3;29999:2;29991:6;29987:15;29980:28;29795:220;:::o;30021:366::-;30163:3;30184:67;30248:2;30243:3;30184:67;:::i;:::-;30177:74;;30260:93;30349:3;30260:93;:::i;:::-;30378:2;30373:3;30369:12;30362:19;;30021:366;;;:::o;30393:419::-;30559:4;30597:2;30586:9;30582:18;30574:26;;30646:9;30640:4;30636:20;30632:1;30621:9;30617:17;30610:47;30674:131;30800:4;30674:131;:::i;:::-;30666:139;;30393:419;;;:::o;30818:165::-;30958:17;30954:1;30946:6;30942:14;30935:41;30818:165;:::o;30989:366::-;31131:3;31152:67;31216:2;31211:3;31152:67;:::i;:::-;31145:74;;31228:93;31317:3;31228:93;:::i;:::-;31346:2;31341:3;31337:12;31330:19;;30989:366;;;:::o;31361:419::-;31527:4;31565:2;31554:9;31550:18;31542:26;;31614:9;31608:4;31604:20;31600:1;31589:9;31585:17;31578:47;31642:131;31768:4;31642:131;:::i;:::-;31634:139;;31361:419;;;:::o;31786:442::-;31935:4;31973:2;31962:9;31958:18;31950:26;;31986:71;32054:1;32043:9;32039:17;32030:6;31986:71;:::i;:::-;32067:72;32135:2;32124:9;32120:18;32111:6;32067:72;:::i;:::-;32149;32217:2;32206:9;32202:18;32193:6;32149:72;:::i;:::-;31786:442;;;;;;:::o;32234:177::-;32374:29;32370:1;32362:6;32358:14;32351:53;32234:177;:::o;32417:366::-;32559:3;32580:67;32644:2;32639:3;32580:67;:::i;:::-;32573:74;;32656:93;32745:3;32656:93;:::i;:::-;32774:2;32769:3;32765:12;32758:19;;32417:366;;;:::o;32789:419::-;32955:4;32993:2;32982:9;32978:18;32970:26;;33042:9;33036:4;33032:20;33028:1;33017:9;33013:17;33006:47;33070:131;33196:4;33070:131;:::i;:::-;33062:139;;32789:419;;;:::o

Swarm Source

ipfs://f4187c1ced19f74d398a52027e4fb705495d01b59d16182893d56f2b7a701336
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.