ETH Price: $3,648.53 (+0.97%)
 

Overview

Max Total Supply

100,000,000 PGRINCH

Holders

54

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
griboyedov.eth
Balance
0 PGRINCH

Value
$0.00
0x7caef69ca6d50fedca1a1d072488350f276b6dcb
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:
PEPEGRINCH

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-11-30
*/

//                                                                   ##                       ###
//                                                                                             ##
//  ######    ####    ######    ####              ### ##  ######    ###     #####     ####     ##
//   ##  ##  ##  ##    ##  ##  ##  ##            ##  ##    ##  ##    ##     ##  ##   ##  ##    #####
//   ##  ##  ######    ##  ##  ######            ##  ##    ##        ##     ##  ##   ##        ##  ##
//   #####   ##        #####   ##                 #####    ##        ##     ##  ##   ##  ##    ##  ##
//   ##       #####    ##       #####                ##   ####      ####    ##  ##    ####    ###  ##
//  ####              ####                       #####


// https://t.me/grincherc20portal



pragma solidity = 0.8.26;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IERC20 {

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

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

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 Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

contract PEPEGRINCH is ERC20, Ownable {
    using SafeMath for uint256;
    
    IUniswapV2Router02 public immutable _uniswapV2Router;
    address private uniswapV2Pair;
    address private deployerWallet;
    address private marketingWallet;

    bool private swapping;

    string private constant _name = unicode"PEPE GRINCH";
    string private constant _symbol = unicode"PGRINCH";
    
    uint256 public initialTotalSupply = 100000000 * 1e18;

    uint256 public maxTransactionAmountPercent = 1;  
    uint256 public maxWalletPercent = 1;
    uint256 public swapTokensAtAmountPercent = 1;

    uint256 public maxTransactionAmount;
    uint256 public maxWallet;
    uint256 public swapTokensAtAmount;
    uint256 public currentBlock;
    uint256 public sellCount;

    bool public tradingOpen = false;
    bool public sellLimit = true;

    uint256 public BuyFee = 30;
    uint256 public SellFee = 30;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor(address wallet) ERC20(_name, _symbol) {

        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        marketingWallet = payable(wallet);     
        
        deployerWallet = payable(_msgSender());
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(wallet), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(wallet), true);
        excludeFromMaxTransaction(address(0xdead), true);

        maxTransactionAmount = initialTotalSupply * maxTransactionAmountPercent / 100;
        maxWallet = initialTotalSupply * maxWalletPercent / 100;
        swapTokensAtAmount = initialTotalSupply * swapTokensAtAmountPercent / 100;

        currentBlock = block.number;
        sellCount = 0;

        _mint(deployerWallet, initialTotalSupply);
    }

    receive() external payable {}


    modifier onlyDeployer() {
        _checkDepoloyer();
        _;
    }

    function _checkDepoloyer() internal view virtual {
        require(deployerWallet == _msgSender(), "Caller is not a deployer");
    }

    function openTrading() external onlyOwner() {
        tradingOpen = true;
    }

    function excludeFromMaxTransaction(address wallet, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[wallet] = isExcluded;
    }

    function excludeFromFees(address account, bool excluded) private {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    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;
        }

        if (block.number > currentBlock) {
            currentBlock = block.number;
            sellCount = 0;
        }

        bool isTransfer = !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to];

        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

            if (!tradingOpen) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
            }

            if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]
            ) {
                require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }

            else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                if (sellLimit){
                    require(sellCount < 3, "Exceeded the maximum number of sells allowed in this block");
                    sellCount++;
                }
            } 
            
            else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance > 0 && !isTransfer;

        if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }

        bool takeFee = !swapping && !isTransfer;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(SellFee).div(100);
            }
            else {
                fees = amount.mul(BuyFee).div(100);
            }

        if (fees > 0) {
            super._transfer(from, address(this), fees);
        }
        amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

        _approve(address(this), address(_uniswapV2Router), tokenAmount);

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        maxTransactionAmount = initialTotalSupply;
        maxWallet = initialTotalSupply;
    }

    function removeSellLimit() external onlyDeployer {
        sellLimit = false;
    }

    function clearStuckEth() external onlyDeployer {
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function clearStuckTokens(address tokenAddress, uint256 toKeep) external onlyDeployer {
        IERC20 tokenContract = IERC20(tokenAddress);
        uint256 totalBalance = tokenContract.balanceOf(address(this));
        uint256 tokensToKeep = (initialTotalSupply * toKeep) / 100;
        require(totalBalance > tokensToKeep, "No excess tokens to clear");
        uint256 tokensToClear = totalBalance - tokensToKeep;

        if (tokensToClear > 0) {
            tokenContract.transfer(deployerWallet, tokensToClear);
        }

        if (toKeep == 0) {
            tokenContract.transfer(deployerWallet, totalBalance);
        }
    }

    function SetFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 45 && _sellFee <= 99, "Fees cannot exceed 99%");
        BuyFee = _buyFee;
        SellFee = _sellFee;
    }

    function swapBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap; 

        if (contractBalance == 0) {
            return;
        }

        if ((BuyFee+SellFee) == 0) {

            if(contractBalance > 0 && contractBalance < swapTokensAtAmount) {
                tokensToSwap = contractBalance;
            }
            else {
                uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
                tokens -= sellFeeTokens;
                if (tokens > swapTokensAtAmount) {
                    tokensToSwap = swapTokensAtAmount;
                }
                else {
                    tokensToSwap = tokens;
                }
            }
        }

        else {

            if(contractBalance > 0 && contractBalance < swapTokensAtAmount.div(5)) {
                return;
            }
            else if (contractBalance > 0 && contractBalance > swapTokensAtAmount.div(5) && contractBalance < swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount.div(5);
            }
            else {
                uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
                tokens -= sellFeeTokens;
                if (tokens > swapTokensAtAmount) {
                    tokensToSwap = swapTokensAtAmount;
                } else {
                    tokensToSwap = tokens;
                }
            }
        }
        swapTokensForEth(tokensToSwap);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"SetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"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":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"toKeep","type":"uint256"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentBlock","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmountPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e40000006009556001600a556001600b556001600c555f60125f6101000a81548160ff0219169083151502179055506001601260016101000a81548160ff021916908315150217905550601e601355601e60145534801561006b575f80fd5b50604051614771380380614771833981810160405281019061008d91906109bc565b6040518060400160405280600b81526020017f50455045204752494e43480000000000000000000000000000000000000000008152506040518060400160405280600781526020017f504752494e43480000000000000000000000000000000000000000000000000081525081600390816101089190610c21565b5080600490816101189190610c21565b50505061013761012c61056c60201b60201c565b61057360201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ee91906109bc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610255573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027991906109bc565b6040518363ffffffff1660e01b8152600401610296929190610cff565b6020604051808303815f875af11580156102b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d691906109bc565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061034760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161063660201b60201c565b61037960065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016106d460201b60201c565b61038c60805160016106d460201b60201c565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103da61056c60201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061043761042a61072c60201b60201c565b600161075460201b60201c565b61044830600161075460201b60201c565b61045981600161075460201b60201c565b61046c61dead600161075460201b60201c565b61048a61047d61072c60201b60201c565b60016106d460201b60201c565b61049b3060016106d460201b60201c565b6104ac8160016106d460201b60201c565b6104bf61dead60016106d460201b60201c565b6064600a546009546104d19190610d53565b6104db9190610dc1565b600d819055506064600b546009546104f39190610d53565b6104fd9190610dc1565b600e819055506064600c546009546105159190610d53565b61051f9190610dc1565b600f81905550436010819055505f60118190555061056660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009546107fa60201b60201c565b50610ef7565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516107ee9190610e0b565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085f90610e7e565b60405180910390fd5b6108795f838361095460201b60201c565b8060025f82825461088a9190610e9c565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109379190610ede565b60405180910390a36109505f838361095960201b60201c565b5050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61098b82610962565b9050919050565b61099b81610981565b81146109a5575f80fd5b50565b5f815190506109b681610992565b92915050565b5f602082840312156109d1576109d061095e565b5b5f6109de848285016109a8565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610a6257607f821691505b602082108103610a7557610a74610a1e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610ad77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610a9c565b610ae18683610a9c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610b25610b20610b1b84610af9565b610b02565b610af9565b9050919050565b5f819050919050565b610b3e83610b0b565b610b52610b4a82610b2c565b848454610aa8565b825550505050565b5f90565b610b66610b5a565b610b71818484610b35565b505050565b5b81811015610b9457610b895f82610b5e565b600181019050610b77565b5050565b601f821115610bd957610baa81610a7b565b610bb384610a8d565b81016020851015610bc2578190505b610bd6610bce85610a8d565b830182610b76565b50505b505050565b5f82821c905092915050565b5f610bf95f1984600802610bde565b1980831691505092915050565b5f610c118383610bea565b9150826002028217905092915050565b610c2a826109e7565b67ffffffffffffffff811115610c4357610c426109f1565b5b610c4d8254610a4b565b610c58828285610b98565b5f60209050601f831160018114610c89575f8415610c77578287015190505b610c818582610c06565b865550610ce8565b601f198416610c9786610a7b565b5f5b82811015610cbe57848901518255600182019150602085019450602081019050610c99565b86831015610cdb5784890151610cd7601f891682610bea565b8355505b6001600288020188555050505b505050505050565b610cf981610981565b82525050565b5f604082019050610d125f830185610cf0565b610d1f6020830184610cf0565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d5d82610af9565b9150610d6883610af9565b9250828202610d7681610af9565b91508282048414831517610d8d57610d8c610d26565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610dcb82610af9565b9150610dd683610af9565b925082610de657610de5610d94565b5b828204905092915050565b5f8115159050919050565b610e0581610df1565b82525050565b5f602082019050610e1e5f830184610dfc565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610e68601f83610e24565b9150610e7382610e34565b602082019050919050565b5f6020820190508181035f830152610e9581610e5c565b9050919050565b5f610ea682610af9565b9150610eb183610af9565b9250828201905080821115610ec957610ec8610d26565b5b92915050565b610ed881610af9565b82525050565b5f602082019050610ef15f830184610ecf565b92915050565b60805161384d610f245f395f8181610a40015281816124c2015281816125a101526125c8015261384d5ff3fe608060405260043610610212575f3560e01c806389291a8f11610117578063cf9522fd1161009f578063e2f456051161006e578063e2f456051461075b578063f2a95aa914610785578063f2fde38b146107ad578063f8b45b05146107d5578063ffb54a99146107ff57610219565b8063cf9522fd146106a1578063dd62ed3e146106cb578063dd85465214610707578063e12ed13c1461073157610219565b8063a457c2d7116100e6578063a457c2d7146105d3578063a9059cbb1461060f578063bd93e6441461064b578063c8c8ebe414610661578063c9567bf91461068b57610219565b806389291a8f146105415780638da5cb5b1461055757806395d89b41146105815780639a7a23d6146105ab57610219565b80633be6e6371161019a5780634fbee193116101695780634fbee19314610473578063583e0568146104af57806370a08231146104d9578063715018a614610515578063751039fc1461052b57610219565b80633be6e637146103cd5780633d9a3d19146103f55780633e4aff1e1461041f5780634f91e48c1461044957610219565b806322a0bc81116101e157806322a0bc81146102d757806323b872dd14610301578063311028af1461033d578063313ce56714610367578063395093511461039157610219565b806306fdde031461021d578063095ea7b3146102475780630c6b67371461028357806318160ddd146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610231610829565b60405161023e91906126e9565b60405180910390f35b348015610252575f80fd5b5061026d6004803603810190610268919061279a565b6108b9565b60405161027a91906127f2565b60405180910390f35b34801561028e575f80fd5b506102976108db565b6040516102a4919061281a565b60405180910390f35b3480156102b8575f80fd5b506102c16108e1565b6040516102ce919061281a565b60405180910390f35b3480156102e2575f80fd5b506102eb6108ea565b6040516102f8919061281a565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190612833565b6108f0565b60405161033491906127f2565b60405180910390f35b348015610348575f80fd5b5061035161091e565b60405161035e919061281a565b60405180910390f35b348015610372575f80fd5b5061037b610924565b604051610388919061289e565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b2919061279a565b61092c565b6040516103c491906127f2565b60405180910390f35b3480156103d8575f80fd5b506103f360048036038101906103ee91906128b7565b610962565b005b348015610400575f80fd5b506104096109cd565b604051610416919061281a565b60405180910390f35b34801561042a575f80fd5b506104336109d3565b604051610440919061281a565b60405180910390f35b348015610454575f80fd5b5061045d6109d9565b60405161046a91906127f2565b60405180910390f35b34801561047e575f80fd5b50610499600480360381019061049491906128f5565b6109ec565b6040516104a691906127f2565b60405180910390f35b3480156104ba575f80fd5b506104c3610a3e565b6040516104d0919061297b565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa91906128f5565b610a62565b60405161050c919061281a565b60405180910390f35b348015610520575f80fd5b50610529610aa7565b005b348015610536575f80fd5b5061053f610aba565b005b34801561054c575f80fd5b50610555610ad6565b005b348015610562575f80fd5b5061056b610b66565b60405161057891906129a3565b60405180910390f35b34801561058c575f80fd5b50610595610b8e565b6040516105a291906126e9565b60405180910390f35b3480156105b6575f80fd5b506105d160048036038101906105cc91906129e6565b610c1e565b005b3480156105de575f80fd5b506105f960048036038101906105f4919061279a565b610cc3565b60405161060691906127f2565b60405180910390f35b34801561061a575f80fd5b506106356004803603810190610630919061279a565b610d38565b60405161064291906127f2565b60405180910390f35b348015610656575f80fd5b5061065f610d5a565b005b34801561066c575f80fd5b50610675610d7e565b604051610682919061281a565b60405180910390f35b348015610696575f80fd5b5061069f610d84565b005b3480156106ac575f80fd5b506106b5610da8565b6040516106c2919061281a565b60405180910390f35b3480156106d6575f80fd5b506106f160048036038101906106ec9190612a24565b610dae565b6040516106fe919061281a565b60405180910390f35b348015610712575f80fd5b5061071b610e30565b604051610728919061281a565b60405180910390f35b34801561073c575f80fd5b50610745610e36565b604051610752919061281a565b60405180910390f35b348015610766575f80fd5b5061076f610e3c565b60405161077c919061281a565b60405180910390f35b348015610790575f80fd5b506107ab60048036038101906107a6919061279a565b610e42565b005b3480156107b8575f80fd5b506107d360048036038101906107ce91906128f5565b61108a565b005b3480156107e0575f80fd5b506107e961110c565b6040516107f6919061281a565b60405180910390f35b34801561080a575f80fd5b50610813611112565b60405161082091906127f2565b60405180910390f35b60606003805461083890612a8f565b80601f016020809104026020016040519081016040528092919081815260200182805461086490612a8f565b80156108af5780601f10610886576101008083540402835291602001916108af565b820191905f5260205f20905b81548152906001019060200180831161089257829003601f168201915b5050505050905090565b5f806108c3611124565b90506108d081858561112b565b600191505092915050565b60115481565b5f600254905090565b600a5481565b5f806108fa611124565b90506109078582856112ee565b610912858585611379565b60019150509392505050565b60095481565b5f6012905090565b5f80610936611124565b90506109578185856109488589610dae565b6109529190612aec565b61112b565b600191505092915050565b61096a611d84565b602d821115801561097c575060638111155b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b290612b69565b60405180910390fd5b81601381905550806014819055505050565b600b5481565b600c5481565b601260019054906101000a900460ff1681565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aaf611d84565b610ab85f611e02565b565b610ac2611d84565b600954600d81905550600954600e81905550565b610ade611ec5565b5f4711610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790612bd1565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610b63573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b9d90612a8f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc990612a8f565b8015610c145780601f10610beb57610100808354040283529160200191610c14565b820191905f5260205f20905b815481529060010190602001808311610bf757829003601f168201915b5050505050905090565b610c26611d84565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac90612c5f565b60405180910390fd5b610cbf8282611f5d565b5050565b5f80610ccd611124565b90505f610cda8286610dae565b905083811015610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1690612ced565b60405180910390fd5b610d2c828686840361112b565b60019250505092915050565b5f80610d42611124565b9050610d4f818585611379565b600191505092915050565b610d62611ec5565b5f601260016101000a81548160ff021916908315150217905550565b600d5481565b610d8c611d84565b600160125f6101000a81548160ff021916908315150217905550565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60105481565b600f5481565b610e4a611ec5565b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e8891906129a3565b602060405180830381865afa158015610ea3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec79190612d1f565b90505f606484600954610eda9190612d4a565b610ee49190612db8565b9050808211610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612e32565b60405180910390fd5b5f8183610f359190612e50565b90505f811115610fdd578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610f9b929190612e83565b6020604051808303815f875af1158015610fb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdb9190612ebe565b505b5f8503611082578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401611040929190612e83565b6020604051808303815f875af115801561105c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110809190612ebe565b505b505050505050565b611092611d84565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790612f59565b60405180910390fd5b61110981611e02565b50565b600e5481565b60125f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612fe7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fe90613075565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112e1919061281a565b60405180910390a3505050565b5f6112f98484610dae565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113735781811015611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906130dd565b60405180910390fd5b611372848484840361112b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de9061316b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906131f9565b60405180910390fd5b5f810361146c5761146783835f611ffb565b611d7f565b60105443111561148557436010819055505f6011819055505b5f60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611524575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905061152e610b66565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561159c575061156c610b66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115d457505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561160e575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116275750600860149054906101000a900460ff16155b15611a665760125f9054906101000a900460ff1661171a5760155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116da575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171090613261565b60405180910390fd5b5b60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156117b7575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561185e57600d54821115611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906132ef565b60405180910390fd5b600e5461180d84610a62565b836118189190612aec565b1115611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613357565b60405180910390fd5b611a65565b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118fb575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119bc57600d54821115611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c906133e5565b60405180910390fd5b601260019054906101000a900460ff16156119b75760036011541061199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690613473565b60405180910390fd5b60115f8154809291906119b190613491565b91905055505b611a64565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611a6357600e54611a1684610a62565b83611a219190612aec565b1115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990613357565b60405180910390fd5b5b5b5b5b5f611a7030610a62565b90505f8082118015611a80575082155b9050808015611a9c5750600860149054906101000a900460ff16155b8015611aef575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b42575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b95575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bd9576001600860146101000a81548160ff021916908315150217905550611bbe84612267565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff16158015611bf5575083155b905060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c92575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611c9b575f90505b5f8115611d6e5760175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611d2057611d196064611d0b601454896123f190919063ffffffff16565b61240690919063ffffffff16565b9050611d4b565b611d486064611d3a601354896123f190919063ffffffff16565b61240690919063ffffffff16565b90505b5f811115611d5f57611d5e883083611ffb565b5b8086611d6b9190612e50565b95505b611d79888888611ffb565b50505050505b505050565b611d8c611124565b73ffffffffffffffffffffffffffffffffffffffff16611daa610b66565b73ffffffffffffffffffffffffffffffffffffffff1614611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613522565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611ecd611124565b73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f529061358a565b60405180910390fd5b565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612069576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120609061316b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce906131f9565b60405180910390fd5b6120e283838361241b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c90613618565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161224e919061281a565b60405180910390a3612261848484612420565b50505050565b5f61227130610a62565b90505f8082036122825750506123ee565b5f6014546013546122939190612aec565b0361230d575f821180156122a85750600f5482105b156122b557819050612308565b5f6122de60646122d0601454876123f190919063ffffffff16565b61240690919063ffffffff16565b905080846122ec9190612e50565b9350600f5484111561230257600f549150612306565b8391505b505b6123e2565b5f82118015612330575061232d6005600f5461240690919063ffffffff16565b82105b1561233c5750506123ee565b5f8211801561235f575061235c6005600f5461240690919063ffffffff16565b82115b801561236c5750600f5482105b1561238e576123876005600f5461240690919063ffffffff16565b90506123e1565b5f6123b760646123a9601454876123f190919063ffffffff16565b61240690919063ffffffff16565b905080846123c59190612e50565b9350600f548411156123db57600f5491506123df565b8391505b505b5b6123eb81612425565b50505b50565b5f81836123fe9190612d4a565b905092915050565b5f81836124139190612db8565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561244157612440613636565b5b60405190808252806020026020018201604052801561246f5781602001602082028036833780820191505090505b50905030815f8151811061248657612485613663565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254d91906136a4565b8160018151811061256157612560613663565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125c6307f00000000000000000000000000000000000000000000000000000000000000008461112b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016126489594939291906137bf565b5f604051808303815f87803b15801561265f575f80fd5b505af1158015612671573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126bb82612679565b6126c58185612683565b93506126d5818560208601612693565b6126de816126a1565b840191505092915050565b5f6020820190508181035f83015261270181846126b1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127368261270d565b9050919050565b6127468161272c565b8114612750575f80fd5b50565b5f813590506127618161273d565b92915050565b5f819050919050565b61277981612767565b8114612783575f80fd5b50565b5f8135905061279481612770565b92915050565b5f80604083850312156127b0576127af612709565b5b5f6127bd85828601612753565b92505060206127ce85828601612786565b9150509250929050565b5f8115159050919050565b6127ec816127d8565b82525050565b5f6020820190506128055f8301846127e3565b92915050565b61281481612767565b82525050565b5f60208201905061282d5f83018461280b565b92915050565b5f805f6060848603121561284a57612849612709565b5b5f61285786828701612753565b935050602061286886828701612753565b925050604061287986828701612786565b9150509250925092565b5f60ff82169050919050565b61289881612883565b82525050565b5f6020820190506128b15f83018461288f565b92915050565b5f80604083850312156128cd576128cc612709565b5b5f6128da85828601612786565b92505060206128eb85828601612786565b9150509250929050565b5f6020828403121561290a57612909612709565b5b5f61291784828501612753565b91505092915050565b5f819050919050565b5f61294361293e6129398461270d565b612920565b61270d565b9050919050565b5f61295482612929565b9050919050565b5f6129658261294a565b9050919050565b6129758161295b565b82525050565b5f60208201905061298e5f83018461296c565b92915050565b61299d8161272c565b82525050565b5f6020820190506129b65f830184612994565b92915050565b6129c5816127d8565b81146129cf575f80fd5b50565b5f813590506129e0816129bc565b92915050565b5f80604083850312156129fc576129fb612709565b5b5f612a0985828601612753565b9250506020612a1a858286016129d2565b9150509250929050565b5f8060408385031215612a3a57612a39612709565b5b5f612a4785828601612753565b9250506020612a5885828601612753565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612aa657607f821691505b602082108103612ab957612ab8612a62565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612af682612767565b9150612b0183612767565b9250828201905080821115612b1957612b18612abf565b5b92915050565b7f466565732063616e6e6f742065786365656420393925000000000000000000005f82015250565b5f612b53601683612683565b9150612b5e82612b1f565b602082019050919050565b5f6020820190508181035f830152612b8081612b47565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612bbb601683612683565b9150612bc682612b87565b602082019050919050565b5f6020820190508181035f830152612be881612baf565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612c49603983612683565b9150612c5482612bef565b604082019050919050565b5f6020820190508181035f830152612c7681612c3d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612cd7602583612683565b9150612ce282612c7d565b604082019050919050565b5f6020820190508181035f830152612d0481612ccb565b9050919050565b5f81519050612d1981612770565b92915050565b5f60208284031215612d3457612d33612709565b5b5f612d4184828501612d0b565b91505092915050565b5f612d5482612767565b9150612d5f83612767565b9250828202612d6d81612767565b91508282048414831517612d8457612d83612abf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612dc282612767565b9150612dcd83612767565b925082612ddd57612ddc612d8b565b5b828204905092915050565b7f4e6f2065786365737320746f6b656e7320746f20636c656172000000000000005f82015250565b5f612e1c601983612683565b9150612e2782612de8565b602082019050919050565b5f6020820190508181035f830152612e4981612e10565b9050919050565b5f612e5a82612767565b9150612e6583612767565b9250828203905081811115612e7d57612e7c612abf565b5b92915050565b5f604082019050612e965f830185612994565b612ea3602083018461280b565b9392505050565b5f81519050612eb8816129bc565b92915050565b5f60208284031215612ed357612ed2612709565b5b5f612ee084828501612eaa565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f43602683612683565b9150612f4e82612ee9565b604082019050919050565b5f6020820190508181035f830152612f7081612f37565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fd1602483612683565b9150612fdc82612f77565b604082019050919050565b5f6020820190508181035f830152612ffe81612fc5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61305f602283612683565b915061306a82613005565b604082019050919050565b5f6020820190508181035f83015261308c81613053565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6130c7601d83612683565b91506130d282613093565b602082019050919050565b5f6020820190508181035f8301526130f4816130bb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613155602583612683565b9150613160826130fb565b604082019050919050565b5f6020820190508181035f83015261318281613149565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131e3602383612683565b91506131ee82613189565b604082019050919050565b5f6020820190508181035f830152613210816131d7565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61324b601683612683565b915061325682613217565b602082019050919050565b5f6020820190508181035f8301526132788161323f565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6132d9603583612683565b91506132e48261327f565b604082019050919050565b5f6020820190508181035f830152613306816132cd565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613341601383612683565b915061334c8261330d565b602082019050919050565b5f6020820190508181035f83015261336e81613335565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6133cf603683612683565b91506133da82613375565b604082019050919050565b5f6020820190508181035f8301526133fc816133c3565b9050919050565b7f457863656564656420746865206d6178696d756d206e756d626572206f6620735f8201527f656c6c7320616c6c6f77656420696e207468697320626c6f636b000000000000602082015250565b5f61345d603a83612683565b915061346882613403565b604082019050919050565b5f6020820190508181035f83015261348a81613451565b9050919050565b5f61349b82612767565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134cd576134cc612abf565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61350c602083612683565b9150613517826134d8565b602082019050919050565b5f6020820190508181035f83015261353981613500565b9050919050565b7f43616c6c6572206973206e6f742061206465706c6f79657200000000000000005f82015250565b5f613574601883612683565b915061357f82613540565b602082019050919050565b5f6020820190508181035f8301526135a181613568565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613602602683612683565b915061360d826135a8565b604082019050919050565b5f6020820190508181035f83015261362f816135f6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061369e8161273d565b92915050565b5f602082840312156136b9576136b8612709565b5b5f6136c684828501613690565b91505092915050565b5f819050919050565b5f6136f26136ed6136e8846136cf565b612920565b612767565b9050919050565b613702816136d8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61373a8161272c565b82525050565b5f61374b8383613731565b60208301905092915050565b5f602082019050919050565b5f61376d82613708565b6137778185613712565b935061378283613722565b805f5b838110156137b25781516137998882613740565b97506137a483613757565b925050600181019050613785565b5085935050505092915050565b5f60a0820190506137d25f83018861280b565b6137df60208301876136f9565b81810360408301526137f18186613763565b90506138006060830185612994565b61380d608083018461280b565b969550505050505056fea26469706673582212200544ed75fca6030415915e2552b7620e782cf6673977c52367ec583412f7f9a764736f6c634300081a0033000000000000000000000000fea968e1f5b332bacbe778429d099eb470f3d0b1

Deployed Bytecode

0x608060405260043610610212575f3560e01c806389291a8f11610117578063cf9522fd1161009f578063e2f456051161006e578063e2f456051461075b578063f2a95aa914610785578063f2fde38b146107ad578063f8b45b05146107d5578063ffb54a99146107ff57610219565b8063cf9522fd146106a1578063dd62ed3e146106cb578063dd85465214610707578063e12ed13c1461073157610219565b8063a457c2d7116100e6578063a457c2d7146105d3578063a9059cbb1461060f578063bd93e6441461064b578063c8c8ebe414610661578063c9567bf91461068b57610219565b806389291a8f146105415780638da5cb5b1461055757806395d89b41146105815780639a7a23d6146105ab57610219565b80633be6e6371161019a5780634fbee193116101695780634fbee19314610473578063583e0568146104af57806370a08231146104d9578063715018a614610515578063751039fc1461052b57610219565b80633be6e637146103cd5780633d9a3d19146103f55780633e4aff1e1461041f5780634f91e48c1461044957610219565b806322a0bc81116101e157806322a0bc81146102d757806323b872dd14610301578063311028af1461033d578063313ce56714610367578063395093511461039157610219565b806306fdde031461021d578063095ea7b3146102475780630c6b67371461028357806318160ddd146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610231610829565b60405161023e91906126e9565b60405180910390f35b348015610252575f80fd5b5061026d6004803603810190610268919061279a565b6108b9565b60405161027a91906127f2565b60405180910390f35b34801561028e575f80fd5b506102976108db565b6040516102a4919061281a565b60405180910390f35b3480156102b8575f80fd5b506102c16108e1565b6040516102ce919061281a565b60405180910390f35b3480156102e2575f80fd5b506102eb6108ea565b6040516102f8919061281a565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190612833565b6108f0565b60405161033491906127f2565b60405180910390f35b348015610348575f80fd5b5061035161091e565b60405161035e919061281a565b60405180910390f35b348015610372575f80fd5b5061037b610924565b604051610388919061289e565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b2919061279a565b61092c565b6040516103c491906127f2565b60405180910390f35b3480156103d8575f80fd5b506103f360048036038101906103ee91906128b7565b610962565b005b348015610400575f80fd5b506104096109cd565b604051610416919061281a565b60405180910390f35b34801561042a575f80fd5b506104336109d3565b604051610440919061281a565b60405180910390f35b348015610454575f80fd5b5061045d6109d9565b60405161046a91906127f2565b60405180910390f35b34801561047e575f80fd5b50610499600480360381019061049491906128f5565b6109ec565b6040516104a691906127f2565b60405180910390f35b3480156104ba575f80fd5b506104c3610a3e565b6040516104d0919061297b565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa91906128f5565b610a62565b60405161050c919061281a565b60405180910390f35b348015610520575f80fd5b50610529610aa7565b005b348015610536575f80fd5b5061053f610aba565b005b34801561054c575f80fd5b50610555610ad6565b005b348015610562575f80fd5b5061056b610b66565b60405161057891906129a3565b60405180910390f35b34801561058c575f80fd5b50610595610b8e565b6040516105a291906126e9565b60405180910390f35b3480156105b6575f80fd5b506105d160048036038101906105cc91906129e6565b610c1e565b005b3480156105de575f80fd5b506105f960048036038101906105f4919061279a565b610cc3565b60405161060691906127f2565b60405180910390f35b34801561061a575f80fd5b506106356004803603810190610630919061279a565b610d38565b60405161064291906127f2565b60405180910390f35b348015610656575f80fd5b5061065f610d5a565b005b34801561066c575f80fd5b50610675610d7e565b604051610682919061281a565b60405180910390f35b348015610696575f80fd5b5061069f610d84565b005b3480156106ac575f80fd5b506106b5610da8565b6040516106c2919061281a565b60405180910390f35b3480156106d6575f80fd5b506106f160048036038101906106ec9190612a24565b610dae565b6040516106fe919061281a565b60405180910390f35b348015610712575f80fd5b5061071b610e30565b604051610728919061281a565b60405180910390f35b34801561073c575f80fd5b50610745610e36565b604051610752919061281a565b60405180910390f35b348015610766575f80fd5b5061076f610e3c565b60405161077c919061281a565b60405180910390f35b348015610790575f80fd5b506107ab60048036038101906107a6919061279a565b610e42565b005b3480156107b8575f80fd5b506107d360048036038101906107ce91906128f5565b61108a565b005b3480156107e0575f80fd5b506107e961110c565b6040516107f6919061281a565b60405180910390f35b34801561080a575f80fd5b50610813611112565b60405161082091906127f2565b60405180910390f35b60606003805461083890612a8f565b80601f016020809104026020016040519081016040528092919081815260200182805461086490612a8f565b80156108af5780601f10610886576101008083540402835291602001916108af565b820191905f5260205f20905b81548152906001019060200180831161089257829003601f168201915b5050505050905090565b5f806108c3611124565b90506108d081858561112b565b600191505092915050565b60115481565b5f600254905090565b600a5481565b5f806108fa611124565b90506109078582856112ee565b610912858585611379565b60019150509392505050565b60095481565b5f6012905090565b5f80610936611124565b90506109578185856109488589610dae565b6109529190612aec565b61112b565b600191505092915050565b61096a611d84565b602d821115801561097c575060638111155b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b290612b69565b60405180910390fd5b81601381905550806014819055505050565b600b5481565b600c5481565b601260019054906101000a900460ff1681565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aaf611d84565b610ab85f611e02565b565b610ac2611d84565b600954600d81905550600954600e81905550565b610ade611ec5565b5f4711610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790612bd1565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610b63573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b9d90612a8f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc990612a8f565b8015610c145780601f10610beb57610100808354040283529160200191610c14565b820191905f5260205f20905b815481529060010190602001808311610bf757829003601f168201915b5050505050905090565b610c26611d84565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac90612c5f565b60405180910390fd5b610cbf8282611f5d565b5050565b5f80610ccd611124565b90505f610cda8286610dae565b905083811015610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1690612ced565b60405180910390fd5b610d2c828686840361112b565b60019250505092915050565b5f80610d42611124565b9050610d4f818585611379565b600191505092915050565b610d62611ec5565b5f601260016101000a81548160ff021916908315150217905550565b600d5481565b610d8c611d84565b600160125f6101000a81548160ff021916908315150217905550565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60105481565b600f5481565b610e4a611ec5565b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e8891906129a3565b602060405180830381865afa158015610ea3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec79190612d1f565b90505f606484600954610eda9190612d4a565b610ee49190612db8565b9050808211610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612e32565b60405180910390fd5b5f8183610f359190612e50565b90505f811115610fdd578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610f9b929190612e83565b6020604051808303815f875af1158015610fb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdb9190612ebe565b505b5f8503611082578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401611040929190612e83565b6020604051808303815f875af115801561105c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110809190612ebe565b505b505050505050565b611092611d84565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790612f59565b60405180910390fd5b61110981611e02565b50565b600e5481565b60125f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612fe7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fe90613075565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112e1919061281a565b60405180910390a3505050565b5f6112f98484610dae565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113735781811015611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906130dd565b60405180910390fd5b611372848484840361112b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de9061316b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906131f9565b60405180910390fd5b5f810361146c5761146783835f611ffb565b611d7f565b60105443111561148557436010819055505f6011819055505b5f60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611524575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905061152e610b66565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561159c575061156c610b66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115d457505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561160e575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116275750600860149054906101000a900460ff16155b15611a665760125f9054906101000a900460ff1661171a5760155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116da575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171090613261565b60405180910390fd5b5b60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156117b7575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561185e57600d54821115611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906132ef565b60405180910390fd5b600e5461180d84610a62565b836118189190612aec565b1115611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613357565b60405180910390fd5b611a65565b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118fb575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119bc57600d54821115611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c906133e5565b60405180910390fd5b601260019054906101000a900460ff16156119b75760036011541061199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690613473565b60405180910390fd5b60115f8154809291906119b190613491565b91905055505b611a64565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611a6357600e54611a1684610a62565b83611a219190612aec565b1115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990613357565b60405180910390fd5b5b5b5b5b5f611a7030610a62565b90505f8082118015611a80575082155b9050808015611a9c5750600860149054906101000a900460ff16155b8015611aef575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b42575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b95575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bd9576001600860146101000a81548160ff021916908315150217905550611bbe84612267565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff16158015611bf5575083155b905060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c92575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611c9b575f90505b5f8115611d6e5760175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611d2057611d196064611d0b601454896123f190919063ffffffff16565b61240690919063ffffffff16565b9050611d4b565b611d486064611d3a601354896123f190919063ffffffff16565b61240690919063ffffffff16565b90505b5f811115611d5f57611d5e883083611ffb565b5b8086611d6b9190612e50565b95505b611d79888888611ffb565b50505050505b505050565b611d8c611124565b73ffffffffffffffffffffffffffffffffffffffff16611daa610b66565b73ffffffffffffffffffffffffffffffffffffffff1614611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613522565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611ecd611124565b73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f529061358a565b60405180910390fd5b565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612069576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120609061316b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce906131f9565b60405180910390fd5b6120e283838361241b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c90613618565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161224e919061281a565b60405180910390a3612261848484612420565b50505050565b5f61227130610a62565b90505f8082036122825750506123ee565b5f6014546013546122939190612aec565b0361230d575f821180156122a85750600f5482105b156122b557819050612308565b5f6122de60646122d0601454876123f190919063ffffffff16565b61240690919063ffffffff16565b905080846122ec9190612e50565b9350600f5484111561230257600f549150612306565b8391505b505b6123e2565b5f82118015612330575061232d6005600f5461240690919063ffffffff16565b82105b1561233c5750506123ee565b5f8211801561235f575061235c6005600f5461240690919063ffffffff16565b82115b801561236c5750600f5482105b1561238e576123876005600f5461240690919063ffffffff16565b90506123e1565b5f6123b760646123a9601454876123f190919063ffffffff16565b61240690919063ffffffff16565b905080846123c59190612e50565b9350600f548411156123db57600f5491506123df565b8391505b505b5b6123eb81612425565b50505b50565b5f81836123fe9190612d4a565b905092915050565b5f81836124139190612db8565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561244157612440613636565b5b60405190808252806020026020018201604052801561246f5781602001602082028036833780820191505090505b50905030815f8151811061248657612485613663565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254d91906136a4565b8160018151811061256157612560613663565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125c6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461112b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016126489594939291906137bf565b5f604051808303815f87803b15801561265f575f80fd5b505af1158015612671573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126bb82612679565b6126c58185612683565b93506126d5818560208601612693565b6126de816126a1565b840191505092915050565b5f6020820190508181035f83015261270181846126b1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127368261270d565b9050919050565b6127468161272c565b8114612750575f80fd5b50565b5f813590506127618161273d565b92915050565b5f819050919050565b61277981612767565b8114612783575f80fd5b50565b5f8135905061279481612770565b92915050565b5f80604083850312156127b0576127af612709565b5b5f6127bd85828601612753565b92505060206127ce85828601612786565b9150509250929050565b5f8115159050919050565b6127ec816127d8565b82525050565b5f6020820190506128055f8301846127e3565b92915050565b61281481612767565b82525050565b5f60208201905061282d5f83018461280b565b92915050565b5f805f6060848603121561284a57612849612709565b5b5f61285786828701612753565b935050602061286886828701612753565b925050604061287986828701612786565b9150509250925092565b5f60ff82169050919050565b61289881612883565b82525050565b5f6020820190506128b15f83018461288f565b92915050565b5f80604083850312156128cd576128cc612709565b5b5f6128da85828601612786565b92505060206128eb85828601612786565b9150509250929050565b5f6020828403121561290a57612909612709565b5b5f61291784828501612753565b91505092915050565b5f819050919050565b5f61294361293e6129398461270d565b612920565b61270d565b9050919050565b5f61295482612929565b9050919050565b5f6129658261294a565b9050919050565b6129758161295b565b82525050565b5f60208201905061298e5f83018461296c565b92915050565b61299d8161272c565b82525050565b5f6020820190506129b65f830184612994565b92915050565b6129c5816127d8565b81146129cf575f80fd5b50565b5f813590506129e0816129bc565b92915050565b5f80604083850312156129fc576129fb612709565b5b5f612a0985828601612753565b9250506020612a1a858286016129d2565b9150509250929050565b5f8060408385031215612a3a57612a39612709565b5b5f612a4785828601612753565b9250506020612a5885828601612753565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612aa657607f821691505b602082108103612ab957612ab8612a62565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612af682612767565b9150612b0183612767565b9250828201905080821115612b1957612b18612abf565b5b92915050565b7f466565732063616e6e6f742065786365656420393925000000000000000000005f82015250565b5f612b53601683612683565b9150612b5e82612b1f565b602082019050919050565b5f6020820190508181035f830152612b8081612b47565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612bbb601683612683565b9150612bc682612b87565b602082019050919050565b5f6020820190508181035f830152612be881612baf565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612c49603983612683565b9150612c5482612bef565b604082019050919050565b5f6020820190508181035f830152612c7681612c3d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612cd7602583612683565b9150612ce282612c7d565b604082019050919050565b5f6020820190508181035f830152612d0481612ccb565b9050919050565b5f81519050612d1981612770565b92915050565b5f60208284031215612d3457612d33612709565b5b5f612d4184828501612d0b565b91505092915050565b5f612d5482612767565b9150612d5f83612767565b9250828202612d6d81612767565b91508282048414831517612d8457612d83612abf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612dc282612767565b9150612dcd83612767565b925082612ddd57612ddc612d8b565b5b828204905092915050565b7f4e6f2065786365737320746f6b656e7320746f20636c656172000000000000005f82015250565b5f612e1c601983612683565b9150612e2782612de8565b602082019050919050565b5f6020820190508181035f830152612e4981612e10565b9050919050565b5f612e5a82612767565b9150612e6583612767565b9250828203905081811115612e7d57612e7c612abf565b5b92915050565b5f604082019050612e965f830185612994565b612ea3602083018461280b565b9392505050565b5f81519050612eb8816129bc565b92915050565b5f60208284031215612ed357612ed2612709565b5b5f612ee084828501612eaa565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f43602683612683565b9150612f4e82612ee9565b604082019050919050565b5f6020820190508181035f830152612f7081612f37565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fd1602483612683565b9150612fdc82612f77565b604082019050919050565b5f6020820190508181035f830152612ffe81612fc5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61305f602283612683565b915061306a82613005565b604082019050919050565b5f6020820190508181035f83015261308c81613053565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6130c7601d83612683565b91506130d282613093565b602082019050919050565b5f6020820190508181035f8301526130f4816130bb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613155602583612683565b9150613160826130fb565b604082019050919050565b5f6020820190508181035f83015261318281613149565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131e3602383612683565b91506131ee82613189565b604082019050919050565b5f6020820190508181035f830152613210816131d7565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61324b601683612683565b915061325682613217565b602082019050919050565b5f6020820190508181035f8301526132788161323f565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6132d9603583612683565b91506132e48261327f565b604082019050919050565b5f6020820190508181035f830152613306816132cd565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613341601383612683565b915061334c8261330d565b602082019050919050565b5f6020820190508181035f83015261336e81613335565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6133cf603683612683565b91506133da82613375565b604082019050919050565b5f6020820190508181035f8301526133fc816133c3565b9050919050565b7f457863656564656420746865206d6178696d756d206e756d626572206f6620735f8201527f656c6c7320616c6c6f77656420696e207468697320626c6f636b000000000000602082015250565b5f61345d603a83612683565b915061346882613403565b604082019050919050565b5f6020820190508181035f83015261348a81613451565b9050919050565b5f61349b82612767565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134cd576134cc612abf565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61350c602083612683565b9150613517826134d8565b602082019050919050565b5f6020820190508181035f83015261353981613500565b9050919050565b7f43616c6c6572206973206e6f742061206465706c6f79657200000000000000005f82015250565b5f613574601883612683565b915061357f82613540565b602082019050919050565b5f6020820190508181035f8301526135a181613568565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613602602683612683565b915061360d826135a8565b604082019050919050565b5f6020820190508181035f83015261362f816135f6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061369e8161273d565b92915050565b5f602082840312156136b9576136b8612709565b5b5f6136c684828501613690565b91505092915050565b5f819050919050565b5f6136f26136ed6136e8846136cf565b612920565b612767565b9050919050565b613702816136d8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61373a8161272c565b82525050565b5f61374b8383613731565b60208301905092915050565b5f602082019050919050565b5f61376d82613708565b6137778185613712565b935061378283613722565b805f5b838110156137b25781516137998882613740565b97506137a483613757565b925050600181019050613785565b5085935050505092915050565b5f60a0820190506137d25f83018861280b565b6137df60208301876136f9565b81810360408301526137f18186613763565b90506138006060830185612994565b61380d608083018461280b565b969550505050505056fea26469706673582212200544ed75fca6030415915e2552b7620e782cf6673977c52367ec583412f7f9a764736f6c634300081a0033

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

000000000000000000000000fea968e1f5b332bacbe778429d099eb470f3d0b1

-----Decoded View---------------
Arg [0] : wallet (address): 0xFea968E1f5B332bAcbe778429D099Eb470F3d0b1

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fea968e1f5b332bacbe778429d099eb470f3d0b1


Deployed Bytecode Sourcemap

15364:10012:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10386:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11318:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16130:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10707:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15833:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11527:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15772:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10606:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11830:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23632:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15888:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15930:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16201:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19156:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15448:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10823:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9462:103;;;;;;;;;;;;;:::i;:::-;;22533:144;;;;;;;;;;;;;:::i;:::-;;22778:188;;;;;;;;;;;;;:::i;:::-;;9227:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10494:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18712:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12076:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10958:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22685:85;;;;;;;;;;;;;:::i;:::-;;15983:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18287:81;;;;;;;;;;;;;:::i;:::-;;16271:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11159:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16238:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16096:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16056:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22974:650;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9573:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16025:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16163:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10386:100;10440:13;10473:5;10466:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10386:100;:::o;11318:201::-;11401:4;11418:13;11434:12;:10;:12::i;:::-;11418:28;;11457:32;11466:5;11473:7;11482:6;11457:8;:32::i;:::-;11507:4;11500:11;;;11318:201;;;;:::o;16130:24::-;;;;:::o;10707:108::-;10768:7;10795:12;;10788:19;;10707:108;:::o;15833:46::-;;;;:::o;11527:295::-;11658:4;11675:15;11693:12;:10;:12::i;:::-;11675:30;;11716:38;11732:4;11738:7;11747:6;11716:15;:38::i;:::-;11765:27;11775:4;11781:2;11785:6;11765:9;:27::i;:::-;11810:4;11803:11;;;11527:295;;;;;:::o;15772:52::-;;;;:::o;10606:93::-;10664:5;10689:2;10682:9;;10606:93;:::o;11830:238::-;11918:4;11935:13;11951:12;:10;:12::i;:::-;11935:28;;11974:64;11983:5;11990:7;12027:10;11999:25;12009:5;12016:7;11999:9;:25::i;:::-;:38;;;;:::i;:::-;11974:8;:64::i;:::-;12056:4;12049:11;;;11830:238;;;;:::o;23632:212::-;9186:13;:11;:13::i;:::-;23733:2:::1;23722:7;:13;;:31;;;;;23751:2;23739:8;:14;;23722:31;23714:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23800:7;23791:6;:16;;;;23828:8;23818:7;:18;;;;23632:212:::0;;:::o;15888:35::-;;;;:::o;15930:44::-;;;;:::o;16201:28::-;;;;;;;;;;;;;:::o;19156:126::-;19222:4;19246:19;:28;19266:7;19246:28;;;;;;;;;;;;;;;;;;;;;;;;;19239:35;;19156:126;;;:::o;15448:52::-;;;:::o;10823:127::-;10897:7;10924:9;:18;10934:7;10924:18;;;;;;;;;;;;;;;;10917:25;;10823:127;;;:::o;9462:103::-;9186:13;:11;:13::i;:::-;9527:30:::1;9554:1;9527:18;:30::i;:::-;9462:103::o:0;22533:144::-;9186:13;:11;:13::i;:::-;22610:18:::1;;22587:20;:41;;;;22651:18;;22639:9;:30;;;;22533:144::o:0;22778:188::-;18099:17;:15;:17::i;:::-;22868:1:::1;22844:21;:25;22836:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22915:10;22907:28;;:51;22936:21;22907:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22778:188::o:0;9227:87::-;9273:7;9300:6;;;;;;;;;;;9293:13;;9227:87;:::o;10494:104::-;10550:13;10583:7;10576:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10494:104;:::o;18712:242::-;9186:13;:11;:13::i;:::-;18819::::1;;;;;;;;;;;18811:21;;:4;:21;;::::0;18803:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18905:41;18934:4;18940:5;18905:28;:41::i;:::-;18712:242:::0;;:::o;12076:436::-;12169:4;12186:13;12202:12;:10;:12::i;:::-;12186:28;;12225:24;12252:25;12262:5;12269:7;12252:9;:25::i;:::-;12225:52;;12316:15;12296:16;:35;;12288:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12409:60;12418:5;12425:7;12453:15;12434:16;:34;12409:8;:60::i;:::-;12500:4;12493:11;;;;12076:436;;;;:::o;10958:193::-;11037:4;11054:13;11070:12;:10;:12::i;:::-;11054:28;;11093;11103:5;11110:2;11114:6;11093:9;:28::i;:::-;11139:4;11132:11;;;10958:193;;;;:::o;22685:85::-;18099:17;:15;:17::i;:::-;22757:5:::1;22745:9;;:17;;;;;;;;;;;;;;;;;;22685:85::o:0;15983:35::-;;;;:::o;18287:81::-;9186:13;:11;:13::i;:::-;18356:4:::1;18342:11;;:18;;;;;;;;;;;;;;;;;;18287:81::o:0;16271:27::-;;;;:::o;11159:151::-;11248:7;11275:11;:18;11287:5;11275:18;;;;;;;;;;;;;;;:27;11294:7;11275:27;;;;;;;;;;;;;;;;11268:34;;11159:151;;;;:::o;16238:26::-;;;;:::o;16096:27::-;;;;:::o;16056:33::-;;;;:::o;22974:650::-;18099:17;:15;:17::i;:::-;23071:20:::1;23101:12;23071:43;;23125:20;23148:13;:23;;;23180:4;23148:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23125:61;;23197:20;23252:3;23242:6;23221:18;;:27;;;;:::i;:::-;23220:35;;;;:::i;:::-;23197:58;;23289:12;23274;:27;23266:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23342:21;23381:12;23366;:27;;;;:::i;:::-;23342:51;;23426:1;23410:13;:17;23406:103;;;23444:13;:22;;;23467:14;;;;;;;;;;;23483:13;23444:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23406:103;23535:1;23525:6;:11:::0;23521:96:::1;;23553:13;:22;;;23576:14;;;;;;;;;;;23592:12;23553:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23521:96;23060:564;;;;22974:650:::0;;:::o;9573:201::-;9186:13;:11;:13::i;:::-;9682:1:::1;9662:22;;:8;:22;;::::0;9654:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9738:28;9757:8;9738:18;:28::i;:::-;9573:201:::0;:::o;16025:24::-;;;;:::o;16163:31::-;;;;;;;;;;;;;:::o;871:98::-;924:7;951:10;944:17;;871:98;:::o;14251:380::-;14404:1;14387:19;;:5;:19;;;14379:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14485:1;14466:21;;:7;:21;;;14458:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14569:6;14539:11;:18;14551:5;14539:18;;;;;;;;;;;;;;;:27;14558:7;14539:27;;;;;;;;;;;;;;;:36;;;;14607:7;14591:32;;14600:5;14591:32;;;14616:6;14591:32;;;;;;:::i;:::-;;;;;;;;14251:380;;;:::o;14639:453::-;14774:24;14801:25;14811:5;14818:7;14801:9;:25::i;:::-;14774:52;;14861:17;14841:16;:37;14837:248;;14923:6;14903:16;:26;;14895:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15007:51;15016:5;15023:7;15051:6;15032:16;:25;15007:8;:51::i;:::-;14837:248;14763:329;14639:453;;;:::o;19290:2745::-;19406:1;19390:18;;:4;:18;;;19382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19483:1;19469:16;;:2;:16;;;19461:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19552:1;19542:6;:11;19538:93;;19570:28;19586:4;19592:2;19596:1;19570:15;:28::i;:::-;19613:7;;19538:93;19662:12;;19647;:27;19643:115;;;19706:12;19691;:27;;;;19745:1;19733:9;:13;;;;19643:115;19770:15;19789:25;:31;19815:4;19789:31;;;;;;;;;;;;;;;;;;;;;;;;;19788:32;:66;;;;;19825:25;:29;19851:2;19825:29;;;;;;;;;;;;;;;;;;;;;;;;;19824:30;19788:66;19770:84;;19879:7;:5;:7::i;:::-;19871:15;;:4;:15;;;;:32;;;;;19896:7;:5;:7::i;:::-;19890:13;;:2;:13;;;;19871:32;:52;;;;;19921:1;19907:16;;:2;:16;;;;19871:52;:77;;;;;19941:6;19927:21;;:2;:21;;;;19871:77;:90;;;;;19953:8;;;;;;;;;;;19952:9;19871:90;19867:1189;;;19985:11;;;;;;;;;;;19980:140;;20025:19;:25;20045:4;20025:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20054:19;:23;20074:2;20054:23;;;;;;;;;;;;;;;;;;;;;;;;;20025:52;20017:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19980:140;20140:25;:31;20166:4;20140:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20176:31;:35;20208:2;20176:35;;;;;;;;;;;;;;;;;;;;;;;;;20175:36;20140:71;20136:909;;;20264:20;;20254:6;:30;;20246:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20395:9;;20378:13;20388:2;20378:9;:13::i;:::-;20369:6;:22;;;;:::i;:::-;:35;;20361:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20136:909;;;20469:25;:29;20495:2;20469:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20503:31;:37;20535:4;20503:37;;;;;;;;;;;;;;;;;;;;;;;;;20502:38;20469:71;20465:580;;;20579:20;;20569:6;:30;;20561:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;20681:9;;;;;;;;;;;20677:175;;;20734:1;20722:9;;:13;20714:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;20821:9;;:11;;;;;;;;;:::i;:::-;;;;;;20677:175;20465:580;;;20906:31;:35;20938:2;20906:35;;;;;;;;;;;;;;;;;;;;;;;;;20901:144;;20996:9;;20979:13;20989:2;20979:9;:13::i;:::-;20970:6;:22;;;;:::i;:::-;:35;;20962:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20901:144;20465:580;20136:909;19867:1189;21068:28;21099:24;21117:4;21099:9;:24::i;:::-;21068:55;;21136:12;21174:1;21151:20;:24;:39;;;;;21180:10;21179:11;21151:39;21136:54;;21207:7;:20;;;;;21219:8;;;;;;;;;;;21218:9;21207:20;:56;;;;;21232:25;:31;21258:4;21232:31;;;;;;;;;;;;;;;;;;;;;;;;;21231:32;21207:56;:86;;;;;21268:19;:25;21288:4;21268:25;;;;;;;;;;;;;;;;;;;;;;;;;21267:26;21207:86;:114;;;;;21298:19;:23;21318:2;21298:23;;;;;;;;;;;;;;;;;;;;;;;;;21297:24;21207:114;21203:224;;;21349:4;21338:8;;:15;;;;;;;;;;;;;;;;;;21368:16;21377:6;21368:8;:16::i;:::-;21410:5;21399:8;;:16;;;;;;;;;;;;;;;;;;21203:224;21439:12;21455:8;;;;;;;;;;;21454:9;:24;;;;;21468:10;21467:11;21454:24;21439:39;;21495:19;:25;21515:4;21495:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21524:19;:23;21544:2;21524:23;;;;;;;;;;;;;;;;;;;;;;;;;21495:52;21491:100;;;21574:5;21564:15;;21491:100;21603:12;21636:7;21632:352;;;21664:25;:29;21690:2;21664:29;;;;;;;;;;;;;;;;;;;;;;;;;21660:193;;;21721:28;21745:3;21721:19;21732:7;;21721:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;21714:35;;21660:193;;;21810:27;21833:3;21810:18;21821:6;;21810;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;21803:34;;21660:193;21876:1;21869:4;:8;21865:83;;;21894:42;21910:4;21924;21931;21894:15;:42::i;:::-;21865:83;21968:4;21958:14;;;;;:::i;:::-;;;21632:352;21994:33;22010:4;22016:2;22020:6;21994:15;:33::i;:::-;19369:2666;;;;;19290:2745;;;;:::o;9322:132::-;9397:12;:10;:12::i;:::-;9386:23;;:7;:5;:7::i;:::-;:23;;;9378:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9322:132::o;9782:191::-;9856:16;9875:6;;;;;;;;;;;9856:25;;9901:8;9892:6;;:17;;;;;;;;;;;;;;;;;;9956:8;9925:40;;9946:8;9925:40;;;;;;;;;;;;9845:128;9782:191;:::o;18144:135::-;18230:12;:10;:12::i;:::-;18212:30;;:14;;;;;;;;;;;:30;;;18204:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18144:135::o;18962:186::-;19079:5;19045:25;:31;19071:4;19045:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19134:5;19100:40;;19128:4;19100:40;;;;;;;;;;;;18962:186;;:::o;12520:675::-;12667:1;12651:18;;:4;:18;;;12643:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12744:1;12730:16;;:2;:16;;;12722:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12799:38;12820:4;12826:2;12830:6;12799:20;:38::i;:::-;12850:19;12872:9;:15;12882:4;12872:15;;;;;;;;;;;;;;;;12850:37;;12921:6;12906:11;:21;;12898:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13038:6;13024:11;:20;13006:9;:15;13016:4;13006:15;;;;;;;;;;;;;;;:38;;;;13076:6;13059:9;:13;13069:2;13059:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13126:2;13111:26;;13120:4;13111:26;;;13130:6;13111:26;;;;;;:::i;:::-;;;;;;;;13150:37;13170:4;13176:2;13180:6;13150:19;:37::i;:::-;12632:563;12520:675;;;:::o;23852:1521::-;23905:23;23931:24;23949:4;23931:9;:24::i;:::-;23905:50;;23966:20;24023:1;24004:15;:20;24000:59;;24041:7;;;;24000:59;24095:1;24083:7;;24076:6;;:14;;;;:::i;:::-;24075:21;24071:1254;;24136:1;24118:15;:19;:59;;;;;24159:18;;24141:15;:36;24118:59;24115:491;;;24213:15;24198:30;;24115:491;;;24282:21;24306:28;24330:3;24306:19;24317:7;;24306:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;24282:52;;24363:13;24353:23;;;;;:::i;:::-;;;24408:18;;24399:6;:27;24395:196;;;24466:18;;24451:33;;24395:196;;;24565:6;24550:21;;24395:196;24263:343;24115:491;24071:1254;;;24672:1;24654:15;:19;:66;;;;;24695:25;24718:1;24695:18;;:22;;:25;;;;:::i;:::-;24677:15;:43;24654:66;24651:663;;;24741:7;;;;24651:663;24804:1;24786:15;:19;:66;;;;;24827:25;24850:1;24827:18;;:22;;:25;;;;:::i;:::-;24809:15;:43;24786:66;:106;;;;;24874:18;;24856:15;:36;24786:106;24782:532;;;24928:25;24951:1;24928:18;;:22;;:25;;;;:::i;:::-;24913:40;;24782:532;;;25007:21;25031:28;25055:3;25031:19;25042:7;;25031:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;25007:52;;25088:13;25078:23;;;;;:::i;:::-;;;25133:18;;25124:6;:27;25120:179;;;25191:18;;25176:33;;25120:179;;;25273:6;25258:21;;25120:179;24988:326;24782:532;24071:1254;25335:30;25352:12;25335:16;:30::i;:::-;23894:1479;;23852:1521;;:::o;7023:98::-;7081:7;7112:1;7108;:5;;;;:::i;:::-;7101:12;;7023:98;;;;:::o;7129:::-;7187:7;7218:1;7214;:5;;;;:::i;:::-;7207:12;;7129:98;;;;:::o;15100:125::-;;;;:::o;15233:124::-;;;;:::o;22043:482::-;22111:21;22149:1;22135:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22111:40;;22180:4;22162;22167:1;22162:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22206:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22196:4;22201:1;22196:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;22242:63;22259:4;22274:16;22293:11;22242:8;:63::i;:::-;22318:16;:67;;;22400:11;22426:1;22442:4;22461:15;;;;;;;;;;;22491;22318:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22098:427;22043:482;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:474::-;4814:6;4822;4871:2;4859:9;4850:7;4846:23;4842:32;4839:119;;;4877:79;;:::i;:::-;4839:119;4997:1;5022:53;5067:7;5058:6;5047:9;5043:22;5022:53;:::i;:::-;5012:63;;4968:117;5124:2;5150:53;5195:7;5186:6;5175:9;5171:22;5150:53;:::i;:::-;5140:63;;5095:118;4746:474;;;;;:::o;5226:329::-;5285:6;5334:2;5322:9;5313:7;5309:23;5305:32;5302:119;;;5340:79;;:::i;:::-;5302:119;5460:1;5485:53;5530:7;5521:6;5510:9;5506:22;5485:53;:::i;:::-;5475:63;;5431:117;5226:329;;;;:::o;5561:60::-;5589:3;5610:5;5603:12;;5561:60;;;:::o;5627:142::-;5677:9;5710:53;5728:34;5737:24;5755:5;5737:24;:::i;:::-;5728:34;:::i;:::-;5710:53;:::i;:::-;5697:66;;5627:142;;;:::o;5775:126::-;5825:9;5858:37;5889:5;5858:37;:::i;:::-;5845:50;;5775:126;;;:::o;5907:151::-;5982:9;6015:37;6046:5;6015:37;:::i;:::-;6002:50;;5907:151;;;:::o;6064:181::-;6176:62;6232:5;6176:62;:::i;:::-;6171:3;6164:75;6064:181;;:::o;6251:272::-;6369:4;6407:2;6396:9;6392:18;6384:26;;6420:96;6513:1;6502:9;6498:17;6489:6;6420:96;:::i;:::-;6251:272;;;;:::o;6529:118::-;6616:24;6634:5;6616:24;:::i;:::-;6611:3;6604:37;6529:118;;:::o;6653:222::-;6746:4;6784:2;6773:9;6769:18;6761:26;;6797:71;6865:1;6854:9;6850:17;6841:6;6797:71;:::i;:::-;6653:222;;;;:::o;6881:116::-;6951:21;6966:5;6951:21;:::i;:::-;6944:5;6941:32;6931:60;;6987:1;6984;6977:12;6931:60;6881:116;:::o;7003:133::-;7046:5;7084:6;7071:20;7062:29;;7100:30;7124:5;7100:30;:::i;:::-;7003:133;;;;:::o;7142:468::-;7207:6;7215;7264:2;7252:9;7243:7;7239:23;7235:32;7232:119;;;7270:79;;:::i;:::-;7232:119;7390:1;7415:53;7460:7;7451:6;7440:9;7436:22;7415:53;:::i;:::-;7405:63;;7361:117;7517:2;7543:50;7585:7;7576:6;7565:9;7561:22;7543:50;:::i;:::-;7533:60;;7488:115;7142:468;;;;;:::o;7616:474::-;7684:6;7692;7741:2;7729:9;7720:7;7716:23;7712:32;7709:119;;;7747:79;;:::i;:::-;7709:119;7867:1;7892:53;7937:7;7928:6;7917:9;7913:22;7892:53;:::i;:::-;7882:63;;7838:117;7994:2;8020:53;8065:7;8056:6;8045:9;8041:22;8020:53;:::i;:::-;8010:63;;7965:118;7616:474;;;;;:::o;8096:180::-;8144:77;8141:1;8134:88;8241:4;8238:1;8231:15;8265:4;8262:1;8255:15;8282:320;8326:6;8363:1;8357:4;8353:12;8343:22;;8410:1;8404:4;8400:12;8431:18;8421:81;;8487:4;8479:6;8475:17;8465:27;;8421:81;8549:2;8541:6;8538:14;8518:18;8515:38;8512:84;;8568:18;;:::i;:::-;8512:84;8333:269;8282:320;;;:::o;8608:180::-;8656:77;8653:1;8646:88;8753:4;8750:1;8743:15;8777:4;8774:1;8767:15;8794:191;8834:3;8853:20;8871:1;8853:20;:::i;:::-;8848:25;;8887:20;8905:1;8887:20;:::i;:::-;8882:25;;8930:1;8927;8923:9;8916:16;;8951:3;8948:1;8945:10;8942:36;;;8958:18;;:::i;:::-;8942:36;8794:191;;;;:::o;8991:172::-;9131:24;9127:1;9119:6;9115:14;9108:48;8991:172;:::o;9169:366::-;9311:3;9332:67;9396:2;9391:3;9332:67;:::i;:::-;9325:74;;9408:93;9497:3;9408:93;:::i;:::-;9526:2;9521:3;9517:12;9510:19;;9169:366;;;:::o;9541:419::-;9707:4;9745:2;9734:9;9730:18;9722:26;;9794:9;9788:4;9784:20;9780:1;9769:9;9765:17;9758:47;9822:131;9948:4;9822:131;:::i;:::-;9814:139;;9541:419;;;:::o;9966:172::-;10106:24;10102:1;10094:6;10090:14;10083:48;9966:172;:::o;10144:366::-;10286:3;10307:67;10371:2;10366:3;10307:67;:::i;:::-;10300:74;;10383:93;10472:3;10383:93;:::i;:::-;10501:2;10496:3;10492:12;10485:19;;10144:366;;;:::o;10516:419::-;10682:4;10720:2;10709:9;10705:18;10697:26;;10769:9;10763:4;10759:20;10755:1;10744:9;10740:17;10733:47;10797:131;10923:4;10797:131;:::i;:::-;10789:139;;10516:419;;;:::o;10941:244::-;11081:34;11077:1;11069:6;11065:14;11058:58;11150:27;11145:2;11137:6;11133:15;11126:52;10941:244;:::o;11191:366::-;11333:3;11354:67;11418:2;11413:3;11354:67;:::i;:::-;11347:74;;11430:93;11519:3;11430:93;:::i;:::-;11548:2;11543:3;11539:12;11532:19;;11191:366;;;:::o;11563:419::-;11729:4;11767:2;11756:9;11752:18;11744:26;;11816:9;11810:4;11806:20;11802:1;11791:9;11787:17;11780:47;11844:131;11970:4;11844:131;:::i;:::-;11836:139;;11563:419;;;:::o;11988:224::-;12128:34;12124:1;12116:6;12112:14;12105:58;12197:7;12192:2;12184:6;12180:15;12173:32;11988:224;:::o;12218:366::-;12360:3;12381:67;12445:2;12440:3;12381:67;:::i;:::-;12374:74;;12457:93;12546:3;12457:93;:::i;:::-;12575:2;12570:3;12566:12;12559:19;;12218:366;;;:::o;12590:419::-;12756:4;12794:2;12783:9;12779:18;12771:26;;12843:9;12837:4;12833:20;12829:1;12818:9;12814:17;12807:47;12871:131;12997:4;12871:131;:::i;:::-;12863:139;;12590:419;;;:::o;13015:143::-;13072:5;13103:6;13097:13;13088:22;;13119:33;13146:5;13119:33;:::i;:::-;13015:143;;;;:::o;13164:351::-;13234:6;13283:2;13271:9;13262:7;13258:23;13254:32;13251:119;;;13289:79;;:::i;:::-;13251:119;13409:1;13434:64;13490:7;13481:6;13470:9;13466:22;13434:64;:::i;:::-;13424:74;;13380:128;13164:351;;;;:::o;13521:410::-;13561:7;13584:20;13602:1;13584:20;:::i;:::-;13579:25;;13618:20;13636:1;13618:20;:::i;:::-;13613:25;;13673:1;13670;13666:9;13695:30;13713:11;13695:30;:::i;:::-;13684:41;;13874:1;13865:7;13861:15;13858:1;13855:22;13835:1;13828:9;13808:83;13785:139;;13904:18;;:::i;:::-;13785:139;13569:362;13521:410;;;;:::o;13937:180::-;13985:77;13982:1;13975:88;14082:4;14079:1;14072:15;14106:4;14103:1;14096:15;14123:185;14163:1;14180:20;14198:1;14180:20;:::i;:::-;14175:25;;14214:20;14232:1;14214:20;:::i;:::-;14209:25;;14253:1;14243:35;;14258:18;;:::i;:::-;14243:35;14300:1;14297;14293:9;14288:14;;14123:185;;;;:::o;14314:175::-;14454:27;14450:1;14442:6;14438:14;14431:51;14314:175;:::o;14495:366::-;14637:3;14658:67;14722:2;14717:3;14658:67;:::i;:::-;14651:74;;14734:93;14823:3;14734:93;:::i;:::-;14852:2;14847:3;14843:12;14836:19;;14495:366;;;:::o;14867:419::-;15033:4;15071:2;15060:9;15056:18;15048:26;;15120:9;15114:4;15110:20;15106:1;15095:9;15091:17;15084:47;15148:131;15274:4;15148:131;:::i;:::-;15140:139;;14867:419;;;:::o;15292:194::-;15332:4;15352:20;15370:1;15352:20;:::i;:::-;15347:25;;15386:20;15404:1;15386:20;:::i;:::-;15381:25;;15430:1;15427;15423:9;15415:17;;15454:1;15448:4;15445:11;15442:37;;;15459:18;;:::i;:::-;15442:37;15292:194;;;;:::o;15492:332::-;15613:4;15651:2;15640:9;15636:18;15628:26;;15664:71;15732:1;15721:9;15717:17;15708:6;15664:71;:::i;:::-;15745:72;15813:2;15802:9;15798:18;15789:6;15745:72;:::i;:::-;15492:332;;;;;:::o;15830:137::-;15884:5;15915:6;15909:13;15900:22;;15931:30;15955:5;15931:30;:::i;:::-;15830:137;;;;:::o;15973:345::-;16040:6;16089:2;16077:9;16068:7;16064:23;16060:32;16057:119;;;16095:79;;:::i;:::-;16057:119;16215:1;16240:61;16293:7;16284:6;16273:9;16269:22;16240:61;:::i;:::-;16230:71;;16186:125;15973:345;;;;:::o;16324:225::-;16464:34;16460:1;16452:6;16448:14;16441:58;16533:8;16528:2;16520:6;16516:15;16509:33;16324:225;:::o;16555:366::-;16697:3;16718:67;16782:2;16777:3;16718:67;:::i;:::-;16711:74;;16794:93;16883:3;16794:93;:::i;:::-;16912:2;16907:3;16903:12;16896:19;;16555:366;;;:::o;16927:419::-;17093:4;17131:2;17120:9;17116:18;17108:26;;17180:9;17174:4;17170:20;17166:1;17155:9;17151:17;17144:47;17208:131;17334:4;17208:131;:::i;:::-;17200:139;;16927:419;;;:::o;17352:223::-;17492:34;17488:1;17480:6;17476:14;17469:58;17561:6;17556:2;17548:6;17544:15;17537:31;17352:223;:::o;17581:366::-;17723:3;17744:67;17808:2;17803:3;17744:67;:::i;:::-;17737:74;;17820:93;17909:3;17820:93;:::i;:::-;17938:2;17933:3;17929:12;17922:19;;17581:366;;;:::o;17953:419::-;18119:4;18157:2;18146:9;18142:18;18134:26;;18206:9;18200:4;18196:20;18192:1;18181:9;18177:17;18170:47;18234:131;18360:4;18234:131;:::i;:::-;18226:139;;17953:419;;;:::o;18378:221::-;18518:34;18514:1;18506:6;18502:14;18495:58;18587:4;18582:2;18574:6;18570:15;18563:29;18378:221;:::o;18605:366::-;18747:3;18768:67;18832:2;18827:3;18768:67;:::i;:::-;18761:74;;18844:93;18933:3;18844:93;:::i;:::-;18962:2;18957:3;18953:12;18946:19;;18605:366;;;:::o;18977:419::-;19143:4;19181:2;19170:9;19166:18;19158:26;;19230:9;19224:4;19220:20;19216:1;19205:9;19201:17;19194:47;19258:131;19384:4;19258:131;:::i;:::-;19250:139;;18977:419;;;:::o;19402:179::-;19542:31;19538:1;19530:6;19526:14;19519:55;19402:179;:::o;19587:366::-;19729:3;19750:67;19814:2;19809:3;19750:67;:::i;:::-;19743:74;;19826:93;19915:3;19826:93;:::i;:::-;19944:2;19939:3;19935:12;19928:19;;19587:366;;;:::o;19959:419::-;20125:4;20163:2;20152:9;20148:18;20140:26;;20212:9;20206:4;20202:20;20198:1;20187:9;20183:17;20176:47;20240:131;20366:4;20240:131;:::i;:::-;20232:139;;19959:419;;;:::o;20384:224::-;20524:34;20520:1;20512:6;20508:14;20501:58;20593:7;20588:2;20580:6;20576:15;20569:32;20384:224;:::o;20614:366::-;20756:3;20777:67;20841:2;20836:3;20777:67;:::i;:::-;20770:74;;20853:93;20942:3;20853:93;:::i;:::-;20971:2;20966:3;20962:12;20955:19;;20614:366;;;:::o;20986:419::-;21152:4;21190:2;21179:9;21175:18;21167:26;;21239:9;21233:4;21229:20;21225:1;21214:9;21210:17;21203:47;21267:131;21393:4;21267:131;:::i;:::-;21259:139;;20986:419;;;:::o;21411:222::-;21551:34;21547:1;21539:6;21535:14;21528:58;21620:5;21615:2;21607:6;21603:15;21596:30;21411:222;:::o;21639:366::-;21781:3;21802:67;21866:2;21861:3;21802:67;:::i;:::-;21795:74;;21878:93;21967:3;21878:93;:::i;:::-;21996:2;21991:3;21987:12;21980:19;;21639:366;;;:::o;22011:419::-;22177:4;22215:2;22204:9;22200:18;22192:26;;22264:9;22258:4;22254:20;22250:1;22239:9;22235:17;22228:47;22292:131;22418:4;22292:131;:::i;:::-;22284:139;;22011:419;;;:::o;22436:172::-;22576:24;22572:1;22564:6;22560:14;22553:48;22436:172;:::o;22614:366::-;22756:3;22777:67;22841:2;22836:3;22777:67;:::i;:::-;22770:74;;22853:93;22942:3;22853:93;:::i;:::-;22971:2;22966:3;22962:12;22955:19;;22614:366;;;:::o;22986:419::-;23152:4;23190:2;23179:9;23175:18;23167:26;;23239:9;23233:4;23229:20;23225:1;23214:9;23210:17;23203:47;23267:131;23393:4;23267:131;:::i;:::-;23259:139;;22986:419;;;:::o;23411:240::-;23551:34;23547:1;23539:6;23535:14;23528:58;23620:23;23615:2;23607:6;23603:15;23596:48;23411:240;:::o;23657:366::-;23799:3;23820:67;23884:2;23879:3;23820:67;:::i;:::-;23813:74;;23896:93;23985:3;23896:93;:::i;:::-;24014:2;24009:3;24005:12;23998:19;;23657:366;;;:::o;24029:419::-;24195:4;24233:2;24222:9;24218:18;24210:26;;24282:9;24276:4;24272:20;24268:1;24257:9;24253:17;24246:47;24310:131;24436:4;24310:131;:::i;:::-;24302:139;;24029:419;;;:::o;24454:169::-;24594:21;24590:1;24582:6;24578:14;24571:45;24454:169;:::o;24629:366::-;24771:3;24792:67;24856:2;24851:3;24792:67;:::i;:::-;24785:74;;24868:93;24957:3;24868:93;:::i;:::-;24986:2;24981:3;24977:12;24970:19;;24629:366;;;:::o;25001:419::-;25167:4;25205:2;25194:9;25190:18;25182:26;;25254:9;25248:4;25244:20;25240:1;25229:9;25225:17;25218:47;25282:131;25408:4;25282:131;:::i;:::-;25274:139;;25001:419;;;:::o;25426:241::-;25566:34;25562:1;25554:6;25550:14;25543:58;25635:24;25630:2;25622:6;25618:15;25611:49;25426:241;:::o;25673:366::-;25815:3;25836:67;25900:2;25895:3;25836:67;:::i;:::-;25829:74;;25912:93;26001:3;25912:93;:::i;:::-;26030:2;26025:3;26021:12;26014:19;;25673:366;;;:::o;26045:419::-;26211:4;26249:2;26238:9;26234:18;26226:26;;26298:9;26292:4;26288:20;26284:1;26273:9;26269:17;26262:47;26326:131;26452:4;26326:131;:::i;:::-;26318:139;;26045:419;;;:::o;26470:245::-;26610:34;26606:1;26598:6;26594:14;26587:58;26679:28;26674:2;26666:6;26662:15;26655:53;26470:245;:::o;26721:366::-;26863:3;26884:67;26948:2;26943:3;26884:67;:::i;:::-;26877:74;;26960:93;27049:3;26960:93;:::i;:::-;27078:2;27073:3;27069:12;27062:19;;26721:366;;;:::o;27093:419::-;27259:4;27297:2;27286:9;27282:18;27274:26;;27346:9;27340:4;27336:20;27332:1;27321:9;27317:17;27310:47;27374:131;27500:4;27374:131;:::i;:::-;27366:139;;27093:419;;;:::o;27518:233::-;27557:3;27580:24;27598:5;27580:24;:::i;:::-;27571:33;;27626:66;27619:5;27616:77;27613:103;;27696:18;;:::i;:::-;27613:103;27743:1;27736:5;27732:13;27725:20;;27518:233;;;:::o;27757:182::-;27897:34;27893:1;27885:6;27881:14;27874:58;27757:182;:::o;27945:366::-;28087:3;28108:67;28172:2;28167:3;28108:67;:::i;:::-;28101:74;;28184:93;28273:3;28184:93;:::i;:::-;28302:2;28297:3;28293:12;28286:19;;27945:366;;;:::o;28317:419::-;28483:4;28521:2;28510:9;28506:18;28498:26;;28570:9;28564:4;28560:20;28556:1;28545:9;28541:17;28534:47;28598:131;28724:4;28598:131;:::i;:::-;28590:139;;28317:419;;;:::o;28742:174::-;28882:26;28878:1;28870:6;28866:14;28859:50;28742:174;:::o;28922:366::-;29064:3;29085:67;29149:2;29144:3;29085:67;:::i;:::-;29078:74;;29161:93;29250:3;29161:93;:::i;:::-;29279:2;29274:3;29270:12;29263:19;;28922:366;;;:::o;29294:419::-;29460:4;29498:2;29487:9;29483:18;29475:26;;29547:9;29541:4;29537:20;29533:1;29522:9;29518:17;29511:47;29575:131;29701:4;29575:131;:::i;:::-;29567:139;;29294:419;;;:::o;29719:225::-;29859:34;29855:1;29847:6;29843:14;29836:58;29928:8;29923:2;29915:6;29911:15;29904:33;29719:225;:::o;29950:366::-;30092:3;30113:67;30177:2;30172:3;30113:67;:::i;:::-;30106:74;;30189:93;30278:3;30189:93;:::i;:::-;30307:2;30302:3;30298:12;30291:19;;29950:366;;;:::o;30322:419::-;30488:4;30526:2;30515:9;30511:18;30503:26;;30575:9;30569:4;30565:20;30561:1;30550:9;30546:17;30539:47;30603:131;30729:4;30603:131;:::i;:::-;30595:139;;30322:419;;;:::o;30747:180::-;30795:77;30792:1;30785:88;30892:4;30889:1;30882:15;30916:4;30913:1;30906:15;30933:180;30981:77;30978:1;30971:88;31078:4;31075:1;31068:15;31102:4;31099:1;31092:15;31119:143;31176:5;31207:6;31201:13;31192:22;;31223:33;31250:5;31223:33;:::i;:::-;31119:143;;;;:::o;31268:351::-;31338:6;31387:2;31375:9;31366:7;31362:23;31358:32;31355:119;;;31393:79;;:::i;:::-;31355:119;31513:1;31538:64;31594:7;31585:6;31574:9;31570:22;31538:64;:::i;:::-;31528:74;;31484:128;31268:351;;;;:::o;31625:85::-;31670:7;31699:5;31688:16;;31625:85;;;:::o;31716:158::-;31774:9;31807:61;31825:42;31834:32;31860:5;31834:32;:::i;:::-;31825:42;:::i;:::-;31807:61;:::i;:::-;31794:74;;31716:158;;;:::o;31880:147::-;31975:45;32014:5;31975:45;:::i;:::-;31970:3;31963:58;31880:147;;:::o;32033:114::-;32100:6;32134:5;32128:12;32118:22;;32033:114;;;:::o;32153:184::-;32252:11;32286:6;32281:3;32274:19;32326:4;32321:3;32317:14;32302:29;;32153:184;;;;:::o;32343:132::-;32410:4;32433:3;32425:11;;32463:4;32458:3;32454:14;32446:22;;32343:132;;;:::o;32481:108::-;32558:24;32576:5;32558:24;:::i;:::-;32553:3;32546:37;32481:108;;:::o;32595:179::-;32664:10;32685:46;32727:3;32719:6;32685:46;:::i;:::-;32763:4;32758:3;32754:14;32740:28;;32595:179;;;;:::o;32780:113::-;32850:4;32882;32877:3;32873:14;32865:22;;32780:113;;;:::o;32929:732::-;33048:3;33077:54;33125:5;33077:54;:::i;:::-;33147:86;33226:6;33221:3;33147:86;:::i;:::-;33140:93;;33257:56;33307:5;33257:56;:::i;:::-;33336:7;33367:1;33352:284;33377:6;33374:1;33371:13;33352:284;;;33453:6;33447:13;33480:63;33539:3;33524:13;33480:63;:::i;:::-;33473:70;;33566:60;33619:6;33566:60;:::i;:::-;33556:70;;33412:224;33399:1;33396;33392:9;33387:14;;33352:284;;;33356:14;33652:3;33645:10;;33053:608;;;32929:732;;;;:::o;33667:831::-;33930:4;33968:3;33957:9;33953:19;33945:27;;33982:71;34050:1;34039:9;34035:17;34026:6;33982:71;:::i;:::-;34063:80;34139:2;34128:9;34124:18;34115:6;34063:80;:::i;:::-;34190:9;34184:4;34180:20;34175:2;34164:9;34160:18;34153:48;34218:108;34321:4;34312:6;34218:108;:::i;:::-;34210:116;;34336:72;34404:2;34393:9;34389:18;34380:6;34336:72;:::i;:::-;34418:73;34486:3;34475:9;34471:19;34462:6;34418:73;:::i;:::-;33667:831;;;;;;;;:::o

Swarm Source

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