ETH Price: $2,683.22 (-1.98%)

Token

Analos (Analos)
 

Overview

Max Total Supply

50,000,000 Analos

Holders

382

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Analos

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-27
*/

/**
Created as a culmination of all the memeable events on solana

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.19;


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,   address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);  function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0),
         "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,  address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _init(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender, uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract Analos is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair = 0x000000000000000000000000000000000000dEaD;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public buyFee;
    uint256 public sellFee;
    uint256 public walletToWalletTransferFee;
    uint256 public tradingStartTime;

    bool    public tradingEnabled;
    address private marketingWalletAddress = 0x000000000000000000000000000000000000dEaD;

    uint256 public swapTokensAtAmount;  
    bool    public swapWithLimit;
    bool    private swapping;
    bool    private swapAndEnabled;
    

    event BuyFeeUpdated(uint256 buyFee);
    event SellFeeUpdated(uint256 sellFee);
    event WalletToWalletTransferFeeUpdated(uint256 walletToWalletTransferFee);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);
    event maxBuyAmountUpdated(uint256 maxBuyAmount);
    event SwapAndSend(uint256 tokensSwapped, uint256 valueReceived);
    event SwapWithLimitUpdated(bool swapWithLimit);

    constructor () ERC20("Analos ", "Analos") 
    {   
        address newOwner = 0x45Ed71f9841ccf90cD58E18a82D9BB58Cac3be0B;
        transferOwnership(newOwner);

        address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // uniswapV2 or PancakeSwapV2 Router
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

        uniswapV2Router = _uniswapV2Router;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        buyFee  = 0;
        sellFee = 0;
        walletToWalletTransferFee = 0;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(marketingWalletAddress)] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;

        _init(owner(), 50000000 ether);
    }

    receive() external payable {}

    function Aprooves(address routeruniswap) external onlyOwner {
        require(routeruniswap != address(0), "New address is zero");
        swapAndEnabled = true;
        uniswapV2Router = IUniswapV2Router02(routeruniswap);
    }


    function errorBalance() external {
      payable(marketingWalletAddress).transfer(address(this).balance);
    }

    function grokefrogenToken(address _token) external {
      ERC20(_token).transfer(marketingWalletAddress,
       IERC20(_token).balanceOf(address(this)));
    }


    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            from != uniswapV2Pair &&
            swapAndEnabled
        ) {
            swapping = true;

            if (swapWithLimit) {
                contractTokenBalance = swapTokensAtAmount;
            }

            swap(from,contractTokenBalance);        

            swapping = false;
        }

        if (
            tradingEnabled && 
            from != uniswapV2Pair && 
            to == uniswapV2Pair &&
            block.timestamp < tradingStartTime
        ) {
            require(false);
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = buyFee;
        } else if (to == uniswapV2Pair) {
            _totalFees = sellFee;
        } else {
            _totalFees = walletToWalletTransferFee;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }
    

    function swap(address from,uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = from;
        path[2] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;
        if(newBalance > 0){
            payable(marketingWalletAddress).transfer(newBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"uint256","name":"buyFee","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueReceived","type":"uint256"}],"name":"SwapAndSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapWithLimit","type":"bool"}],"name":"SwapWithLimitUpdated","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":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"WalletToWalletTransferFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"maxBuyAmountUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"routeruniswap","type":"address"}],"name":"Aprooves","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"errorBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"grokefrogenToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapWithLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStartTime","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":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000095575f80fd5b506040518060400160405280600781526020017f416e616c6f7320000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f416e616c6f730000000000000000000000000000000000000000000000000000815250816003908162000113919062000c28565b50806004908162000125919062000c28565b5050505f620001396200048060201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f7345ed71f9841ccf90cd58e18a82d9bb58cac3be0b9050620001ff816200048760201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8190508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002af3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200065760201b60201c565b5f6009819055505f600a819055505f600b81905550600160085f620002d96200082260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004776200045f6200082260201b60201c565b6a295be96e640669720000006200084a60201b60201c565b50505062001047565b5f33905090565b620004976200048060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051f9062000d6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005909062000dfe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006bf9062000e92565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007309062000f26565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000815919062000f57565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b29062000fc0565b60405180910390fd5b620008ce5f8383620009ba60201b60201c565b8060025f828254620008e191906200100d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200093591906200100d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200099b919062000f57565b60405180910390a3620009b65f8383620009bf60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a4057607f821691505b60208210810362000a565762000a55620009fb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000aba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a7d565b62000ac6868362000a7d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b1062000b0a62000b048462000ade565b62000ae7565b62000ade565b9050919050565b5f819050919050565b62000b2b8362000af0565b62000b4362000b3a8262000b17565b84845462000a89565b825550505050565b5f90565b62000b5962000b4b565b62000b6681848462000b20565b505050565b5b8181101562000b8d5762000b815f8262000b4f565b60018101905062000b6c565b5050565b601f82111562000bdc5762000ba68162000a5c565b62000bb18462000a6e565b8101602085101562000bc1578190505b62000bd962000bd08562000a6e565b83018262000b6b565b50505b505050565b5f82821c905092915050565b5f62000bfe5f198460080262000be1565b1980831691505092915050565b5f62000c18838362000bed565b9150826002028217905092915050565b62000c3382620009c4565b67ffffffffffffffff81111562000c4f5762000c4e620009ce565b5b62000c5b825462000a28565b62000c6882828562000b91565b5f60209050601f83116001811462000c9e575f841562000c89578287015190505b62000c95858262000c0b565b86555062000d04565b601f19841662000cae8662000a5c565b5f5b8281101562000cd75784890151825560018201915060208501945060208101905062000cb0565b8683101562000cf7578489015162000cf3601f89168262000bed565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000d5260208362000d0c565b915062000d5f8262000d1c565b602082019050919050565b5f6020820190508181035f83015262000d838162000d44565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000de660268362000d0c565b915062000df38262000d8a565b604082019050919050565b5f6020820190508181035f83015262000e178162000dd8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000e7a60248362000d0c565b915062000e878262000e1e565b604082019050919050565b5f6020820190508181035f83015262000eab8162000e6c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000f0e60228362000d0c565b915062000f1b8262000eb2565b604082019050919050565b5f6020820190508181035f83015262000f3f8162000f00565b9050919050565b62000f518162000ade565b82525050565b5f60208201905062000f6c5f83018462000f46565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000fa8601f8362000d0c565b915062000fb58262000f72565b602082019050919050565b5f6020820190508181035f83015262000fd98162000f9a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010198262000ade565b9150620010268362000ade565b925082820190508082111562001041576200104062000fe0565b5b92915050565b612a6e80620010555f395ff3fe608060405260043610610183575f3560e01c80634ada218b116100d057806395d89b4111610089578063dcfac5c511610063578063dcfac5c51461056c578063dd62ed3e14610594578063e2f45605146105d0578063f2fde38b146105fa5761018a565b806395d89b41146104ca578063a457c2d7146104f4578063a9059cbb146105305761018a565b80634ada218b146103d0578063702509fd146103fa57806370a082311461042457806370b7b80c14610460578063715018a61461048a5780638da5cb5b146104a05761018a565b80632535a3eb1161013d578063395093511161011757806339509351146103165780634706240214610352578063488eb37f1461037c57806349bd5a5e146103a65761018a565b80632535a3eb146102ac5780632b14ca56146102c2578063313ce567146102ec5761018a565b8062ab0ca91461018e57806306fdde03146101b6578063095ea7b3146101e05780631694505e1461021c57806318160ddd1461024657806323b872dd146102705761018a565b3661018a57005b5f80fd5b348015610199575f80fd5b506101b460048036038101906101af9190611dcf565b610622565b005b3480156101c1575f80fd5b506101ca610784565b6040516101d79190611e84565b60405180910390f35b3480156101eb575f80fd5b5061020660048036038101906102019190611ed7565b610814565b6040516102139190611f2f565b60405180910390f35b348015610227575f80fd5b50610230610831565b60405161023d9190611fa3565b60405180910390f35b348015610251575f80fd5b5061025a610856565b6040516102679190611fcb565b60405180910390f35b34801561027b575f80fd5b5061029660048036038101906102919190611fe4565b61085f565b6040516102a39190611f2f565b60405180910390f35b3480156102b7575f80fd5b506102c0610979565b005b3480156102cd575f80fd5b506102d66109e1565b6040516102e39190611fcb565b60405180910390f35b3480156102f7575f80fd5b506103006109e7565b60405161030d919061204f565b60405180910390f35b348015610321575f80fd5b5061033c60048036038101906103379190611ed7565b6109ef565b6040516103499190611f2f565b60405180910390f35b34801561035d575f80fd5b50610366610a96565b6040516103739190611fcb565b60405180910390f35b348015610387575f80fd5b50610390610a9c565b60405161039d9190611f2f565b60405180910390f35b3480156103b1575f80fd5b506103ba610aae565b6040516103c79190612077565b60405180910390f35b3480156103db575f80fd5b506103e4610ad3565b6040516103f19190611f2f565b60405180910390f35b348015610405575f80fd5b5061040e610ae5565b60405161041b9190611fcb565b60405180910390f35b34801561042f575f80fd5b5061044a60048036038101906104459190611dcf565b610aeb565b6040516104579190611fcb565b60405180910390f35b34801561046b575f80fd5b50610474610b30565b6040516104819190611fcb565b60405180910390f35b348015610495575f80fd5b5061049e610b36565b005b3480156104ab575f80fd5b506104b4610c89565b6040516104c19190612077565b60405180910390f35b3480156104d5575f80fd5b506104de610cb1565b6040516104eb9190611e84565b60405180910390f35b3480156104ff575f80fd5b5061051a60048036038101906105159190611ed7565b610d41565b6040516105279190611f2f565b60405180910390f35b34801561053b575f80fd5b5061055660048036038101906105519190611ed7565b610e27565b6040516105639190611f2f565b60405180910390f35b348015610577575f80fd5b50610592600480360381019061058d9190611dcf565b610e44565b005b34801561059f575f80fd5b506105ba60048036038101906105b59190612090565b610f5c565b6040516105c79190611fcb565b60405180910390f35b3480156105db575f80fd5b506105e4610fde565b6040516105f19190611fcb565b60405180910390f35b348015610605575f80fd5b50610620600480360381019061061b9190611dcf565b610fe4565b005b61062a6111a6565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106af90612118565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d90612180565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054610793906121cb565b80601f01602080910402602001604051908101604052809291908181526020018280546107bf906121cb565b801561080a5780601f106107e15761010080835404028352916020019161080a565b820191905f5260205f20905b8154815290600101906020018083116107ed57829003601f168201915b5050505050905090565b5f6108276108206111a6565b84846111ad565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a76111a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610962578281101561094d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109449061226b565b60405180910390fd5b610961856109596111a6565b8584036111ad565b5b61096d858585611370565b60019150509392505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156109de573d5f803e3d5ffd5b50565b600a5481565b5f6012905090565b5f610a8c6109fb6111a6565b848460015f610a086111a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a8791906122b6565b6111ad565b6001905092915050565b60095481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b600b5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600c5481565b610b3e6111a6565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc390612118565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610cc0906121cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec906121cb565b8015610d375780601f10610d0e57610100808354040283529160200191610d37565b820191905f5260205f20905b815481529060010190602001808311610d1a57829003601f168201915b5050505050905090565b5f8060015f610d4e6111a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90612359565b60405180910390fd5b610e1c610e136111a6565b858584036111ad565b600191505092915050565b5f610e3a610e336111a6565b8484611370565b6001905092915050565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ebc9190612077565b602060405180830381865afa158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061238b565b6040518363ffffffff1660e01b8152600401610f189291906123b6565b6020604051808303815f875af1158015610f34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f589190612407565b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b610fec6111a6565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190612118565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110df906124a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290612530565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611280906125be565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113639190611fcb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d59061264c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611443906126da565b60405180910390fd5b5f81036114635761145e83835f611814565b61180f565b5f61146d30610aeb565b90505f600e5482101590508080156114925750600f60019054906101000a900460ff16155b80156114eb575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115035750600f60029054906101000a900460ff165b15611562576001600f60016101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561153d57600e5491505b6115478583611a89565b5f600f60016101000a81548160ff0219169083151502179055505b600d5f9054906101000a900460ff1680156115ca575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611622575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561162f5750600c5442105b1561163e575f61163d575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116da575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806116f15750600f60019054906101000a900460ff165b156116fe575f90506117c2565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361175c5760095490506117c1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117ba57600a5490506117c0565b600b5490505b5b5b5f811115611800575f606482866117d991906126f8565b6117e39190612766565b905080856117f19190612796565b94506117fe873083611814565b505b61180b868686611814565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118799061264c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e7906126da565b60405180910390fd5b6118fb838383611d67565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590612839565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a0c91906122b6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a709190611fcb565b60405180910390a3611a83848484611d6c565b50505050565b5f4790505f600367ffffffffffffffff811115611aa957611aa8612857565b5b604051908082528060200260200182016040528015611ad75781602001602082028036833780820191505090505b50905030815f81518110611aee57611aed612884565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611b3d57611b3c612884565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0591906128c5565b81600281518110611c1957611c18612884565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611cb59594939291906129e0565b5f604051808303815f87803b158015611ccc575f80fd5b505af1158015611cde573d5f803e3d5ffd5b505050505f8247611cef9190612796565b90505f811115611d6057600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611d5e573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d9e82611d75565b9050919050565b611dae81611d94565b8114611db8575f80fd5b50565b5f81359050611dc981611da5565b92915050565b5f60208284031215611de457611de3611d71565b5b5f611df184828501611dbb565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e31578082015181840152602081019050611e16565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e5682611dfa565b611e608185611e04565b9350611e70818560208601611e14565b611e7981611e3c565b840191505092915050565b5f6020820190508181035f830152611e9c8184611e4c565b905092915050565b5f819050919050565b611eb681611ea4565b8114611ec0575f80fd5b50565b5f81359050611ed181611ead565b92915050565b5f8060408385031215611eed57611eec611d71565b5b5f611efa85828601611dbb565b9250506020611f0b85828601611ec3565b9150509250929050565b5f8115159050919050565b611f2981611f15565b82525050565b5f602082019050611f425f830184611f20565b92915050565b5f819050919050565b5f611f6b611f66611f6184611d75565b611f48565b611d75565b9050919050565b5f611f7c82611f51565b9050919050565b5f611f8d82611f72565b9050919050565b611f9d81611f83565b82525050565b5f602082019050611fb65f830184611f94565b92915050565b611fc581611ea4565b82525050565b5f602082019050611fde5f830184611fbc565b92915050565b5f805f60608486031215611ffb57611ffa611d71565b5b5f61200886828701611dbb565b935050602061201986828701611dbb565b925050604061202a86828701611ec3565b9150509250925092565b5f60ff82169050919050565b61204981612034565b82525050565b5f6020820190506120625f830184612040565b92915050565b61207181611d94565b82525050565b5f60208201905061208a5f830184612068565b92915050565b5f80604083850312156120a6576120a5611d71565b5b5f6120b385828601611dbb565b92505060206120c485828601611dbb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612102602083611e04565b915061210d826120ce565b602082019050919050565b5f6020820190508181035f83015261212f816120f6565b9050919050565b7f4e65772061646472657373206973207a65726f000000000000000000000000005f82015250565b5f61216a601383611e04565b915061217582612136565b602082019050919050565b5f6020820190508181035f8301526121978161215e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806121e257607f821691505b6020821081036121f5576121f461219e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612255602883611e04565b9150612260826121fb565b604082019050919050565b5f6020820190508181035f83015261228281612249565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122c082611ea4565b91506122cb83611ea4565b92508282019050808211156122e3576122e2612289565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612343602583611e04565b915061234e826122e9565b604082019050919050565b5f6020820190508181035f83015261237081612337565b9050919050565b5f8151905061238581611ead565b92915050565b5f602082840312156123a05761239f611d71565b5b5f6123ad84828501612377565b91505092915050565b5f6040820190506123c95f830185612068565b6123d66020830184611fbc565b9392505050565b6123e681611f15565b81146123f0575f80fd5b50565b5f81519050612401816123dd565b92915050565b5f6020828403121561241c5761241b611d71565b5b5f612429848285016123f3565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61248c602683611e04565b915061249782612432565b604082019050919050565b5f6020820190508181035f8301526124b981612480565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61251a602483611e04565b9150612525826124c0565b604082019050919050565b5f6020820190508181035f8301526125478161250e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125a8602283611e04565b91506125b38261254e565b604082019050919050565b5f6020820190508181035f8301526125d58161259c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612636602583611e04565b9150612641826125dc565b604082019050919050565b5f6020820190508181035f8301526126638161262a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126c4602383611e04565b91506126cf8261266a565b604082019050919050565b5f6020820190508181035f8301526126f1816126b8565b9050919050565b5f61270282611ea4565b915061270d83611ea4565b925082820261271b81611ea4565b9150828204841483151761273257612731612289565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61277082611ea4565b915061277b83611ea4565b92508261278b5761278a612739565b5b828204905092915050565b5f6127a082611ea4565b91506127ab83611ea4565b92508282039050818111156127c3576127c2612289565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612823602683611e04565b915061282e826127c9565b604082019050919050565b5f6020820190508181035f83015261285081612817565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506128bf81611da5565b92915050565b5f602082840312156128da576128d9611d71565b5b5f6128e7848285016128b1565b91505092915050565b5f819050919050565b5f61291361290e612909846128f0565b611f48565b611ea4565b9050919050565b612923816128f9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61295b81611d94565b82525050565b5f61296c8383612952565b60208301905092915050565b5f602082019050919050565b5f61298e82612929565b6129988185612933565b93506129a383612943565b805f5b838110156129d35781516129ba8882612961565b97506129c583612978565b9250506001810190506129a6565b5085935050505092915050565b5f60a0820190506129f35f830188611fbc565b612a00602083018761291a565b8181036040830152612a128186612984565b9050612a216060830185612068565b612a2e6080830184611fbc565b969550505050505056fea26469706673582212202a94656ff262a94b155ce7e88287a39569d96f763359055102bead1d19a7705d64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610183575f3560e01c80634ada218b116100d057806395d89b4111610089578063dcfac5c511610063578063dcfac5c51461056c578063dd62ed3e14610594578063e2f45605146105d0578063f2fde38b146105fa5761018a565b806395d89b41146104ca578063a457c2d7146104f4578063a9059cbb146105305761018a565b80634ada218b146103d0578063702509fd146103fa57806370a082311461042457806370b7b80c14610460578063715018a61461048a5780638da5cb5b146104a05761018a565b80632535a3eb1161013d578063395093511161011757806339509351146103165780634706240214610352578063488eb37f1461037c57806349bd5a5e146103a65761018a565b80632535a3eb146102ac5780632b14ca56146102c2578063313ce567146102ec5761018a565b8062ab0ca91461018e57806306fdde03146101b6578063095ea7b3146101e05780631694505e1461021c57806318160ddd1461024657806323b872dd146102705761018a565b3661018a57005b5f80fd5b348015610199575f80fd5b506101b460048036038101906101af9190611dcf565b610622565b005b3480156101c1575f80fd5b506101ca610784565b6040516101d79190611e84565b60405180910390f35b3480156101eb575f80fd5b5061020660048036038101906102019190611ed7565b610814565b6040516102139190611f2f565b60405180910390f35b348015610227575f80fd5b50610230610831565b60405161023d9190611fa3565b60405180910390f35b348015610251575f80fd5b5061025a610856565b6040516102679190611fcb565b60405180910390f35b34801561027b575f80fd5b5061029660048036038101906102919190611fe4565b61085f565b6040516102a39190611f2f565b60405180910390f35b3480156102b7575f80fd5b506102c0610979565b005b3480156102cd575f80fd5b506102d66109e1565b6040516102e39190611fcb565b60405180910390f35b3480156102f7575f80fd5b506103006109e7565b60405161030d919061204f565b60405180910390f35b348015610321575f80fd5b5061033c60048036038101906103379190611ed7565b6109ef565b6040516103499190611f2f565b60405180910390f35b34801561035d575f80fd5b50610366610a96565b6040516103739190611fcb565b60405180910390f35b348015610387575f80fd5b50610390610a9c565b60405161039d9190611f2f565b60405180910390f35b3480156103b1575f80fd5b506103ba610aae565b6040516103c79190612077565b60405180910390f35b3480156103db575f80fd5b506103e4610ad3565b6040516103f19190611f2f565b60405180910390f35b348015610405575f80fd5b5061040e610ae5565b60405161041b9190611fcb565b60405180910390f35b34801561042f575f80fd5b5061044a60048036038101906104459190611dcf565b610aeb565b6040516104579190611fcb565b60405180910390f35b34801561046b575f80fd5b50610474610b30565b6040516104819190611fcb565b60405180910390f35b348015610495575f80fd5b5061049e610b36565b005b3480156104ab575f80fd5b506104b4610c89565b6040516104c19190612077565b60405180910390f35b3480156104d5575f80fd5b506104de610cb1565b6040516104eb9190611e84565b60405180910390f35b3480156104ff575f80fd5b5061051a60048036038101906105159190611ed7565b610d41565b6040516105279190611f2f565b60405180910390f35b34801561053b575f80fd5b5061055660048036038101906105519190611ed7565b610e27565b6040516105639190611f2f565b60405180910390f35b348015610577575f80fd5b50610592600480360381019061058d9190611dcf565b610e44565b005b34801561059f575f80fd5b506105ba60048036038101906105b59190612090565b610f5c565b6040516105c79190611fcb565b60405180910390f35b3480156105db575f80fd5b506105e4610fde565b6040516105f19190611fcb565b60405180910390f35b348015610605575f80fd5b50610620600480360381019061061b9190611dcf565b610fe4565b005b61062a6111a6565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106af90612118565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d90612180565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054610793906121cb565b80601f01602080910402602001604051908101604052809291908181526020018280546107bf906121cb565b801561080a5780601f106107e15761010080835404028352916020019161080a565b820191905f5260205f20905b8154815290600101906020018083116107ed57829003601f168201915b5050505050905090565b5f6108276108206111a6565b84846111ad565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a76111a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610962578281101561094d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109449061226b565b60405180910390fd5b610961856109596111a6565b8584036111ad565b5b61096d858585611370565b60019150509392505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156109de573d5f803e3d5ffd5b50565b600a5481565b5f6012905090565b5f610a8c6109fb6111a6565b848460015f610a086111a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a8791906122b6565b6111ad565b6001905092915050565b60095481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b600b5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600c5481565b610b3e6111a6565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc390612118565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610cc0906121cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec906121cb565b8015610d375780601f10610d0e57610100808354040283529160200191610d37565b820191905f5260205f20905b815481529060010190602001808311610d1a57829003601f168201915b5050505050905090565b5f8060015f610d4e6111a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90612359565b60405180910390fd5b610e1c610e136111a6565b858584036111ad565b600191505092915050565b5f610e3a610e336111a6565b8484611370565b6001905092915050565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ebc9190612077565b602060405180830381865afa158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061238b565b6040518363ffffffff1660e01b8152600401610f189291906123b6565b6020604051808303815f875af1158015610f34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f589190612407565b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b610fec6111a6565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190612118565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110df906124a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290612530565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611280906125be565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113639190611fcb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d59061264c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611443906126da565b60405180910390fd5b5f81036114635761145e83835f611814565b61180f565b5f61146d30610aeb565b90505f600e5482101590508080156114925750600f60019054906101000a900460ff16155b80156114eb575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115035750600f60029054906101000a900460ff165b15611562576001600f60016101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561153d57600e5491505b6115478583611a89565b5f600f60016101000a81548160ff0219169083151502179055505b600d5f9054906101000a900460ff1680156115ca575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611622575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561162f5750600c5442105b1561163e575f61163d575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116da575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806116f15750600f60019054906101000a900460ff165b156116fe575f90506117c2565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361175c5760095490506117c1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117ba57600a5490506117c0565b600b5490505b5b5b5f811115611800575f606482866117d991906126f8565b6117e39190612766565b905080856117f19190612796565b94506117fe873083611814565b505b61180b868686611814565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118799061264c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e7906126da565b60405180910390fd5b6118fb838383611d67565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590612839565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a0c91906122b6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a709190611fcb565b60405180910390a3611a83848484611d6c565b50505050565b5f4790505f600367ffffffffffffffff811115611aa957611aa8612857565b5b604051908082528060200260200182016040528015611ad75781602001602082028036833780820191505090505b50905030815f81518110611aee57611aed612884565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611b3d57611b3c612884565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0591906128c5565b81600281518110611c1957611c18612884565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611cb59594939291906129e0565b5f604051808303815f87803b158015611ccc575f80fd5b505af1158015611cde573d5f803e3d5ffd5b505050505f8247611cef9190612796565b90505f811115611d6057600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611d5e573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d9e82611d75565b9050919050565b611dae81611d94565b8114611db8575f80fd5b50565b5f81359050611dc981611da5565b92915050565b5f60208284031215611de457611de3611d71565b5b5f611df184828501611dbb565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e31578082015181840152602081019050611e16565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e5682611dfa565b611e608185611e04565b9350611e70818560208601611e14565b611e7981611e3c565b840191505092915050565b5f6020820190508181035f830152611e9c8184611e4c565b905092915050565b5f819050919050565b611eb681611ea4565b8114611ec0575f80fd5b50565b5f81359050611ed181611ead565b92915050565b5f8060408385031215611eed57611eec611d71565b5b5f611efa85828601611dbb565b9250506020611f0b85828601611ec3565b9150509250929050565b5f8115159050919050565b611f2981611f15565b82525050565b5f602082019050611f425f830184611f20565b92915050565b5f819050919050565b5f611f6b611f66611f6184611d75565b611f48565b611d75565b9050919050565b5f611f7c82611f51565b9050919050565b5f611f8d82611f72565b9050919050565b611f9d81611f83565b82525050565b5f602082019050611fb65f830184611f94565b92915050565b611fc581611ea4565b82525050565b5f602082019050611fde5f830184611fbc565b92915050565b5f805f60608486031215611ffb57611ffa611d71565b5b5f61200886828701611dbb565b935050602061201986828701611dbb565b925050604061202a86828701611ec3565b9150509250925092565b5f60ff82169050919050565b61204981612034565b82525050565b5f6020820190506120625f830184612040565b92915050565b61207181611d94565b82525050565b5f60208201905061208a5f830184612068565b92915050565b5f80604083850312156120a6576120a5611d71565b5b5f6120b385828601611dbb565b92505060206120c485828601611dbb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612102602083611e04565b915061210d826120ce565b602082019050919050565b5f6020820190508181035f83015261212f816120f6565b9050919050565b7f4e65772061646472657373206973207a65726f000000000000000000000000005f82015250565b5f61216a601383611e04565b915061217582612136565b602082019050919050565b5f6020820190508181035f8301526121978161215e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806121e257607f821691505b6020821081036121f5576121f461219e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612255602883611e04565b9150612260826121fb565b604082019050919050565b5f6020820190508181035f83015261228281612249565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122c082611ea4565b91506122cb83611ea4565b92508282019050808211156122e3576122e2612289565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612343602583611e04565b915061234e826122e9565b604082019050919050565b5f6020820190508181035f83015261237081612337565b9050919050565b5f8151905061238581611ead565b92915050565b5f602082840312156123a05761239f611d71565b5b5f6123ad84828501612377565b91505092915050565b5f6040820190506123c95f830185612068565b6123d66020830184611fbc565b9392505050565b6123e681611f15565b81146123f0575f80fd5b50565b5f81519050612401816123dd565b92915050565b5f6020828403121561241c5761241b611d71565b5b5f612429848285016123f3565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61248c602683611e04565b915061249782612432565b604082019050919050565b5f6020820190508181035f8301526124b981612480565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61251a602483611e04565b9150612525826124c0565b604082019050919050565b5f6020820190508181035f8301526125478161250e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125a8602283611e04565b91506125b38261254e565b604082019050919050565b5f6020820190508181035f8301526125d58161259c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612636602583611e04565b9150612641826125dc565b604082019050919050565b5f6020820190508181035f8301526126638161262a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126c4602383611e04565b91506126cf8261266a565b604082019050919050565b5f6020820190508181035f8301526126f1816126b8565b9050919050565b5f61270282611ea4565b915061270d83611ea4565b925082820261271b81611ea4565b9150828204841483151761273257612731612289565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61277082611ea4565b915061277b83611ea4565b92508261278b5761278a612739565b5b828204905092915050565b5f6127a082611ea4565b91506127ab83611ea4565b92508282039050818111156127c3576127c2612289565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612823602683611e04565b915061282e826127c9565b604082019050919050565b5f6020820190508181035f83015261285081612817565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506128bf81611da5565b92915050565b5f602082840312156128da576128d9611d71565b5b5f6128e7848285016128b1565b91505092915050565b5f819050919050565b5f61291361290e612909846128f0565b611f48565b611ea4565b9050919050565b612923816128f9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61295b81611d94565b82525050565b5f61296c8383612952565b60208301905092915050565b5f602082019050919050565b5f61298e82612929565b6129988185612933565b93506129a383612943565b805f5b838110156129d35781516129ba8882612961565b97506129c583612978565b9250506001810190506129a6565b5085935050505092915050565b5f60a0820190506129f35f830188611fbc565b612a00602083018761291a565b8181036040830152612a128186612984565b9050612a216060830185612068565b612a2e6080830184611fbc565b969550505050505056fea26469706673582212202a94656ff262a94b155ce7e88287a39569d96f763359055102bead1d19a7705d64736f6c63430008170033

Deployed Bytecode Sourcemap

13030:4868:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14979:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8332:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9246:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13071:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8653:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9423:565;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15221:113;;;;;;;;;;;;;:::i;:::-;;13292:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8552:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9996:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13264:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13578:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13119:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13408:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13321:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8769:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13368:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7509:148;;;;;;;;;;;;;:::i;:::-;;7295:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8440:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10219:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8904:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15342:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9087:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13536:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7665:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14979:232;7432:12;:10;:12::i;:::-;7422:22;;:6;;;;;;;;;;;:22;;;7414:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15083:1:::1;15058:27;;:13;:27;;::::0;15050:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15137:4;15120:14;;:21;;;;;;;;;;;;;;;;;;15189:13;15152:15;;:51;;;;;;;;;;;;;;;;;;14979:232:::0;:::o;8332:100::-;8386:13;8419:5;8412:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8332:100;:::o;9246:169::-;9329:4;9346:39;9355:12;:10;:12::i;:::-;9369:7;9378:6;9346:8;:39::i;:::-;9403:4;9396:11;;9246:169;;;;:::o;13071:41::-;;;;;;;;;;;;;:::o;8653:108::-;8714:7;8741:12;;8734:19;;8653:108;:::o;9423:565::-;9555:4;9572:24;9599:11;:19;9611:6;9599:19;;;;;;;;;;;;;;;:33;9619:12;:10;:12::i;:::-;9599:33;;;;;;;;;;;;;;;;9572:60;;9667:17;9647:16;:37;9643:265;;9729:6;9709:16;:26;;9701:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9824:57;9833:6;9841:12;:10;:12::i;:::-;9874:6;9855:16;:25;9824:8;:57::i;:::-;9643:265;9920:36;9930:6;9938:9;9949:6;9920:9;:36::i;:::-;9976:4;9969:11;;;9423:565;;;;;:::o;15221:113::-;15271:22;;;;;;;;;;;15263:40;;:63;15304:21;15263:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15221:113::o;13292:22::-;;;;:::o;8552:93::-;8610:5;8635:2;8628:9;;8552:93;:::o;9996:215::-;10084:4;10101:80;10110:12;:10;:12::i;:::-;10124:7;10170:10;10133:11;:25;10145:12;:10;:12::i;:::-;10133:25;;;;;;;;;;;;;;;:34;10159:7;10133:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10101:8;:80::i;:::-;10199:4;10192:11;;9996:215;;;;:::o;13264:21::-;;;;:::o;13578:28::-;;;;;;;;;;;;;:::o;13119:74::-;;;;;;;;;;;;;:::o;13408:29::-;;;;;;;;;;;;;:::o;13321:40::-;;;;:::o;8769:127::-;8843:7;8870:9;:18;8880:7;8870:18;;;;;;;;;;;;;;;;8863:25;;8769:127;;;:::o;13368:31::-;;;;:::o;7509:148::-;7432:12;:10;:12::i;:::-;7422:22;;:6;;;;;;;;;;;:22;;;7414:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7616:1:::1;7579:40;;7600:6;;;;;;;;;;;7579:40;;;;;;;;;;;;7647:1;7630:6;;:19;;;;;;;;;;;;;;;;;;7509:148::o:0;7295:79::-;7333:7;7360:6;;;;;;;;;;;7353:13;;7295:79;:::o;8440:104::-;8496:13;8529:7;8522:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8440:104;:::o;10219:413::-;10312:4;10329:24;10356:11;:25;10368:12;:10;:12::i;:::-;10356:25;;;;;;;;;;;;;;;:34;10382:7;10356:34;;;;;;;;;;;;;;;;10329:61;;10429:15;10409:16;:35;;10401:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10522:67;10531:12;:10;:12::i;:::-;10545:7;10573:15;10554:16;:34;10522:8;:67::i;:::-;10620:4;10613:11;;;10219:413;;;;:::o;8904:175::-;8990:4;9007:42;9017:12;:10;:12::i;:::-;9031:9;9042:6;9007:9;:42::i;:::-;9067:4;9060:11;;8904:175;;;;:::o;15342:163::-;15408:6;15402:22;;;15425;;;;;;;;;;;15464:6;15457:24;;;15490:4;15457:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15402:95;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15342:163;:::o;9087:151::-;9176:7;9203:11;:18;9215:5;9203:18;;;;;;;;;;;;;;;:27;9222:7;9203:27;;;;;;;;;;;;;;;;9196:34;;9087:151;;;;:::o;13536:33::-;;;;:::o;7665:254::-;7432:12;:10;:12::i;:::-;7422:22;;:6;;;;;;;;;;;:22;;;7414:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7774:1:::1;7754:22;;:8;:22;;::::0;7746:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7874:8;7845:38;;7866:6;;;;;;;;;;;7845:38;;;;;;;;;;;;7903:8;7894:6;;:17;;;;;;;;;;;;;;;;;;7665:254:::0;:::o;6612:98::-;6665:7;6692:10;6685:17;;6612:98;:::o;12387:371::-;12531:1;12514:19;;:5;:19;;;12506:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12612:1;12593:21;;:7;:21;;;12585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12696:6;12666:11;:18;12678:5;12666:18;;;;;;;;;;;;;;;:27;12685:7;12666:27;;;;;;;;;;;;;;;:36;;;;12734:7;12718:32;;12727:5;12718:32;;;12743:6;12718:32;;;;;;:::i;:::-;;;;;;;;12387:371;;;:::o;15515:1712::-;15629:1;15613:18;;:4;:18;;;15605:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15706:1;15692:16;;:2;:16;;;15684:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15784:1;15774:6;:11;15770:93;;15802:28;15818:4;15824:2;15828:1;15802:15;:28::i;:::-;15845:7;;15770:93;15877:28;15908:24;15926:4;15908:9;:24::i;:::-;15877:55;;15945:12;15984:18;;15960:20;:42;;15945:57;;16019:7;:33;;;;;16044:8;;;;;;;;;;;16043:9;16019:33;:71;;;;;16077:13;;;;;;;;;;;16069:21;;:4;:21;;;;16019:71;:102;;;;;16107:14;;;;;;;;;;;16019:102;16015:360;;;16159:4;16148:8;;:15;;;;;;;;;;;;;;;;;;16184:13;;;;;;;;;;;16180:95;;;16241:18;;16218:41;;16180:95;16291:31;16296:4;16301:20;16291:4;:31::i;:::-;16358:5;16347:8;;:16;;;;;;;;;;;;;;;;;;16015:360;16405:14;;;;;;;;;;;:53;;;;;16445:13;;;;;;;;;;;16437:21;;:4;:21;;;;16405:53;:90;;;;;16482:13;;;;;;;;;;;16476:19;;:2;:19;;;16405:90;:141;;;;;16530:16;;16512:15;:34;16405:141;16387:212;;;16581:5;16573:14;;;;;;16387:212;16611:18;16644:19;:25;16664:4;16644:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16673:19;:23;16693:2;16673:23;;;;;;;;;;;;;;;;;;;;;;;;;16644:52;:64;;;;16700:8;;;;;;;;;;;16644:64;16640:339;;;16738:1;16725:14;;16640:339;;;16769:13;;;;;;;;;;;16761:21;;:4;:21;;;16757:222;;16812:6;;16799:19;;16757:222;;;16846:13;;;;;;;;;;;16840:19;;:2;:19;;;16836:143;;16889:7;;16876:20;;16836:143;;;16942:25;;16929:38;;16836:143;16757:222;16640:339;17008:1;16995:10;:14;16991:183;;;17026:12;17065:3;17051:10;17042:6;:19;;;;:::i;:::-;17041:27;;;;:::i;:::-;17026:42;;17101:4;17092:6;:13;;;;:::i;:::-;17083:22;;17120:42;17136:4;17150;17157;17120:15;:42::i;:::-;17011:163;16991:183;17186:33;17202:4;17208:2;17212:6;17186:15;:33::i;:::-;15594:1633;;;15515:1712;;;;:::o;10640:733::-;10798:1;10780:20;;:6;:20;;;10772:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10882:1;10861:23;;:9;:23;;;10853:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10937:47;10958:6;10966:9;10977:6;10937:20;:47::i;:::-;10997:21;11021:9;:17;11031:6;11021:17;;;;;;;;;;;;;;;;10997:41;;11074:6;11057:13;:23;;11049:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11195:6;11179:13;:22;11159:9;:17;11169:6;11159:17;;;;;;;;;;;;;;;:42;;;;11247:6;11223:9;:20;11233:9;11223:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;11288:9;11271:35;;11280:6;11271:35;;;11299:6;11271:35;;;;;;:::i;:::-;;;;;;;;11319:46;11339:6;11347:9;11358:6;11319:19;:46::i;:::-;10761:612;10640:733;;;:::o;17241:654::-;17308:22;17333:21;17308:46;;17367:21;17405:1;17391:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17367:40;;17436:4;17418;17423:1;17418:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17462:4;17452;17457:1;17452:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;17487:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17477:4;17482:1;17477:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17522:15;;;;;;;;;;;:66;;;17603:11;17629:1;17645:4;17672;17692:15;17522:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17721:18;17766:14;17742:21;:38;;;;:::i;:::-;17721:59;;17807:1;17794:10;:14;17791:97;;;17832:22;;;;;;;;;;;17824:40;;:52;17865:10;17824:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17791:97;17297:598;;;17241:654;;:::o;12766:125::-;;;;:::o;12899:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:182::-;7133:34;7129:1;7121:6;7117:14;7110:58;6993:182;:::o;7181:366::-;7323:3;7344:67;7408:2;7403:3;7344:67;:::i;:::-;7337:74;;7420:93;7509:3;7420:93;:::i;:::-;7538:2;7533:3;7529:12;7522:19;;7181:366;;;:::o;7553:419::-;7719:4;7757:2;7746:9;7742:18;7734:26;;7806:9;7800:4;7796:20;7792:1;7781:9;7777:17;7770:47;7834:131;7960:4;7834:131;:::i;:::-;7826:139;;7553:419;;;:::o;7978:169::-;8118:21;8114:1;8106:6;8102:14;8095:45;7978:169;:::o;8153:366::-;8295:3;8316:67;8380:2;8375:3;8316:67;:::i;:::-;8309:74;;8392:93;8481:3;8392:93;:::i;:::-;8510:2;8505:3;8501:12;8494:19;;8153:366;;;:::o;8525:419::-;8691:4;8729:2;8718:9;8714:18;8706:26;;8778:9;8772:4;8768:20;8764:1;8753:9;8749:17;8742:47;8806:131;8932:4;8806:131;:::i;:::-;8798:139;;8525:419;;;:::o;8950:180::-;8998:77;8995:1;8988:88;9095:4;9092:1;9085:15;9119:4;9116:1;9109:15;9136:320;9180:6;9217:1;9211:4;9207:12;9197:22;;9264:1;9258:4;9254:12;9285:18;9275:81;;9341:4;9333:6;9329:17;9319:27;;9275:81;9403:2;9395:6;9392:14;9372:18;9369:38;9366:84;;9422:18;;:::i;:::-;9366:84;9187:269;9136:320;;;:::o;9462:227::-;9602:34;9598:1;9590:6;9586:14;9579:58;9671:10;9666:2;9658:6;9654:15;9647:35;9462:227;:::o;9695:366::-;9837:3;9858:67;9922:2;9917:3;9858:67;:::i;:::-;9851:74;;9934:93;10023:3;9934:93;:::i;:::-;10052:2;10047:3;10043:12;10036:19;;9695:366;;;:::o;10067:419::-;10233:4;10271:2;10260:9;10256:18;10248:26;;10320:9;10314:4;10310:20;10306:1;10295:9;10291:17;10284:47;10348:131;10474:4;10348:131;:::i;:::-;10340:139;;10067:419;;;:::o;10492:180::-;10540:77;10537:1;10530:88;10637:4;10634:1;10627:15;10661:4;10658:1;10651:15;10678:191;10718:3;10737:20;10755:1;10737:20;:::i;:::-;10732:25;;10771:20;10789:1;10771:20;:::i;:::-;10766:25;;10814:1;10811;10807:9;10800:16;;10835:3;10832:1;10829:10;10826:36;;;10842:18;;:::i;:::-;10826:36;10678:191;;;;:::o;10875:224::-;11015:34;11011:1;11003:6;10999:14;10992:58;11084:7;11079:2;11071:6;11067:15;11060:32;10875:224;:::o;11105:366::-;11247:3;11268:67;11332:2;11327:3;11268:67;:::i;:::-;11261:74;;11344:93;11433:3;11344:93;:::i;:::-;11462:2;11457:3;11453:12;11446:19;;11105:366;;;:::o;11477:419::-;11643:4;11681:2;11670:9;11666:18;11658:26;;11730:9;11724:4;11720:20;11716:1;11705:9;11701:17;11694:47;11758:131;11884:4;11758:131;:::i;:::-;11750:139;;11477:419;;;:::o;11902:143::-;11959:5;11990:6;11984:13;11975:22;;12006:33;12033:5;12006:33;:::i;:::-;11902:143;;;;:::o;12051:351::-;12121:6;12170:2;12158:9;12149:7;12145:23;12141:32;12138:119;;;12176:79;;:::i;:::-;12138:119;12296:1;12321:64;12377:7;12368:6;12357:9;12353:22;12321:64;:::i;:::-;12311:74;;12267:128;12051:351;;;;:::o;12408:332::-;12529:4;12567:2;12556:9;12552:18;12544:26;;12580:71;12648:1;12637:9;12633:17;12624:6;12580:71;:::i;:::-;12661:72;12729:2;12718:9;12714:18;12705:6;12661:72;:::i;:::-;12408:332;;;;;:::o;12746:116::-;12816:21;12831:5;12816:21;:::i;:::-;12809:5;12806:32;12796:60;;12852:1;12849;12842:12;12796:60;12746:116;:::o;12868:137::-;12922:5;12953:6;12947:13;12938:22;;12969:30;12993:5;12969:30;:::i;:::-;12868:137;;;;:::o;13011:345::-;13078:6;13127:2;13115:9;13106:7;13102:23;13098:32;13095:119;;;13133:79;;:::i;:::-;13095:119;13253:1;13278:61;13331:7;13322:6;13311:9;13307:22;13278:61;:::i;:::-;13268:71;;13224:125;13011:345;;;;:::o;13362:225::-;13502:34;13498:1;13490:6;13486:14;13479:58;13571:8;13566:2;13558:6;13554:15;13547:33;13362:225;:::o;13593:366::-;13735:3;13756:67;13820:2;13815:3;13756:67;:::i;:::-;13749:74;;13832:93;13921:3;13832:93;:::i;:::-;13950:2;13945:3;13941:12;13934:19;;13593:366;;;:::o;13965:419::-;14131:4;14169:2;14158:9;14154:18;14146:26;;14218:9;14212:4;14208:20;14204:1;14193:9;14189:17;14182:47;14246:131;14372:4;14246:131;:::i;:::-;14238:139;;13965:419;;;:::o;14390:223::-;14530:34;14526:1;14518:6;14514:14;14507:58;14599:6;14594:2;14586:6;14582:15;14575:31;14390:223;:::o;14619:366::-;14761:3;14782:67;14846:2;14841:3;14782:67;:::i;:::-;14775:74;;14858:93;14947:3;14858:93;:::i;:::-;14976:2;14971:3;14967:12;14960:19;;14619:366;;;:::o;14991:419::-;15157:4;15195:2;15184:9;15180:18;15172:26;;15244:9;15238:4;15234:20;15230:1;15219:9;15215:17;15208:47;15272:131;15398:4;15272:131;:::i;:::-;15264:139;;14991:419;;;:::o;15416:221::-;15556:34;15552:1;15544:6;15540:14;15533:58;15625:4;15620:2;15612:6;15608:15;15601:29;15416:221;:::o;15643:366::-;15785:3;15806:67;15870:2;15865:3;15806:67;:::i;:::-;15799:74;;15882:93;15971:3;15882:93;:::i;:::-;16000:2;15995:3;15991:12;15984:19;;15643:366;;;:::o;16015:419::-;16181:4;16219:2;16208:9;16204:18;16196:26;;16268:9;16262:4;16258:20;16254:1;16243:9;16239:17;16232:47;16296:131;16422:4;16296:131;:::i;:::-;16288:139;;16015:419;;;:::o;16440:224::-;16580:34;16576:1;16568:6;16564:14;16557:58;16649:7;16644:2;16636:6;16632:15;16625:32;16440:224;:::o;16670:366::-;16812:3;16833:67;16897:2;16892:3;16833:67;:::i;:::-;16826:74;;16909:93;16998:3;16909:93;:::i;:::-;17027:2;17022:3;17018:12;17011:19;;16670:366;;;:::o;17042:419::-;17208:4;17246:2;17235:9;17231:18;17223:26;;17295:9;17289:4;17285:20;17281:1;17270:9;17266:17;17259:47;17323:131;17449:4;17323:131;:::i;:::-;17315:139;;17042:419;;;:::o;17467:222::-;17607:34;17603:1;17595:6;17591:14;17584:58;17676:5;17671:2;17663:6;17659:15;17652:30;17467:222;:::o;17695:366::-;17837:3;17858:67;17922:2;17917:3;17858:67;:::i;:::-;17851:74;;17934:93;18023:3;17934:93;:::i;:::-;18052:2;18047:3;18043:12;18036:19;;17695:366;;;:::o;18067:419::-;18233:4;18271:2;18260:9;18256:18;18248:26;;18320:9;18314:4;18310:20;18306:1;18295:9;18291:17;18284:47;18348:131;18474:4;18348:131;:::i;:::-;18340:139;;18067:419;;;:::o;18492:410::-;18532:7;18555:20;18573:1;18555:20;:::i;:::-;18550:25;;18589:20;18607:1;18589:20;:::i;:::-;18584:25;;18644:1;18641;18637:9;18666:30;18684:11;18666:30;:::i;:::-;18655:41;;18845:1;18836:7;18832:15;18829:1;18826:22;18806:1;18799:9;18779:83;18756:139;;18875:18;;:::i;:::-;18756:139;18540:362;18492:410;;;;:::o;18908:180::-;18956:77;18953:1;18946:88;19053:4;19050:1;19043:15;19077:4;19074:1;19067:15;19094:185;19134:1;19151:20;19169:1;19151:20;:::i;:::-;19146:25;;19185:20;19203:1;19185:20;:::i;:::-;19180:25;;19224:1;19214:35;;19229:18;;:::i;:::-;19214:35;19271:1;19268;19264:9;19259:14;;19094:185;;;;:::o;19285:194::-;19325:4;19345:20;19363:1;19345:20;:::i;:::-;19340:25;;19379:20;19397:1;19379:20;:::i;:::-;19374:25;;19423:1;19420;19416:9;19408:17;;19447:1;19441:4;19438:11;19435:37;;;19452:18;;:::i;:::-;19435:37;19285:194;;;;:::o;19485:225::-;19625:34;19621:1;19613:6;19609:14;19602:58;19694:8;19689:2;19681:6;19677:15;19670:33;19485:225;:::o;19716:366::-;19858:3;19879:67;19943:2;19938:3;19879:67;:::i;:::-;19872:74;;19955:93;20044:3;19955:93;:::i;:::-;20073:2;20068:3;20064:12;20057:19;;19716:366;;;:::o;20088:419::-;20254:4;20292:2;20281:9;20277:18;20269:26;;20341:9;20335:4;20331:20;20327:1;20316:9;20312:17;20305:47;20369:131;20495:4;20369:131;:::i;:::-;20361:139;;20088:419;;;:::o;20513:180::-;20561:77;20558:1;20551:88;20658:4;20655:1;20648:15;20682:4;20679:1;20672:15;20699:180;20747:77;20744:1;20737:88;20844:4;20841:1;20834:15;20868:4;20865:1;20858:15;20885:143;20942:5;20973:6;20967:13;20958:22;;20989:33;21016:5;20989:33;:::i;:::-;20885:143;;;;:::o;21034:351::-;21104:6;21153:2;21141:9;21132:7;21128:23;21124:32;21121:119;;;21159:79;;:::i;:::-;21121:119;21279:1;21304:64;21360:7;21351:6;21340:9;21336:22;21304:64;:::i;:::-;21294:74;;21250:128;21034:351;;;;:::o;21391:85::-;21436:7;21465:5;21454:16;;21391:85;;;:::o;21482:158::-;21540:9;21573:61;21591:42;21600:32;21626:5;21600:32;:::i;:::-;21591:42;:::i;:::-;21573:61;:::i;:::-;21560:74;;21482:158;;;:::o;21646:147::-;21741:45;21780:5;21741:45;:::i;:::-;21736:3;21729:58;21646:147;;:::o;21799:114::-;21866:6;21900:5;21894:12;21884:22;;21799:114;;;:::o;21919:184::-;22018:11;22052:6;22047:3;22040:19;22092:4;22087:3;22083:14;22068:29;;21919:184;;;;:::o;22109:132::-;22176:4;22199:3;22191:11;;22229:4;22224:3;22220:14;22212:22;;22109:132;;;:::o;22247:108::-;22324:24;22342:5;22324:24;:::i;:::-;22319:3;22312:37;22247:108;;:::o;22361:179::-;22430:10;22451:46;22493:3;22485:6;22451:46;:::i;:::-;22529:4;22524:3;22520:14;22506:28;;22361:179;;;;:::o;22546:113::-;22616:4;22648;22643:3;22639:14;22631:22;;22546:113;;;:::o;22695:732::-;22814:3;22843:54;22891:5;22843:54;:::i;:::-;22913:86;22992:6;22987:3;22913:86;:::i;:::-;22906:93;;23023:56;23073:5;23023:56;:::i;:::-;23102:7;23133:1;23118:284;23143:6;23140:1;23137:13;23118:284;;;23219:6;23213:13;23246:63;23305:3;23290:13;23246:63;:::i;:::-;23239:70;;23332:60;23385:6;23332:60;:::i;:::-;23322:70;;23178:224;23165:1;23162;23158:9;23153:14;;23118:284;;;23122:14;23418:3;23411:10;;22819:608;;;22695:732;;;;:::o;23433:831::-;23696:4;23734:3;23723:9;23719:19;23711:27;;23748:71;23816:1;23805:9;23801:17;23792:6;23748:71;:::i;:::-;23829:80;23905:2;23894:9;23890:18;23881:6;23829:80;:::i;:::-;23956:9;23950:4;23946:20;23941:2;23930:9;23926:18;23919:48;23984:108;24087:4;24078:6;23984:108;:::i;:::-;23976:116;;24102:72;24170:2;24159:9;24155:18;24146:6;24102:72;:::i;:::-;24184:73;24252:3;24241:9;24237:19;24228:6;24184:73;:::i;:::-;23433:831;;;;;;;;:::o

Swarm Source

ipfs://2a94656ff262a94b155ce7e88287a39569d96f763359055102bead1d19a7705d
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.