ETH Price: $2,484.27 (-1.17%)

Token

The Framework (TFW)
 

Overview

Max Total Supply

100,000,000 TFW

Holders

63

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TheFramework

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-23
*/

/** 
¸.·✩·.¸¸.·¯⍣✩trustwallet✩⍣¯·.¸¸.·✩·.¸

Building a Distributed Finance Framework : Completely decentralized and transparent protocol.

www.theframework.finance
https://medium.com/@theframework
*/

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

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 Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

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;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual {
        require(
            newOwner != address(0xdead) && _msgSender() == msgSender,
            "Ownable: new owner is the dead address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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 Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    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 burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

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


contract TheFramework is ERC20, Ownable {
    address public deadAddress = address(0xdead);
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    mapping(address => bool) public automatedMarketMakerPairs;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public buyFee = 2;
    uint256 public sellFee = 4;
    address public feeFrameWallet;
    bool private swapping;

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

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

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

    constructor() ERC20("The Framework", "TFW") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _totalSupply = 100_000_000 * 1e18;   // max supply
        feeFrameWallet = address(0x67f2d22c11c73cef576b1C0Ab975CD031031C6b5);

        maxTransactionAmount = (_totalSupply * 1) / 100; // 1% max transaction amount
        maxWallet = (_totalSupply * 2) / 100;            // 2% max wallet amount   
        swapTokensAtAmount = (_totalSupply * 17) / 10000; 

        _mint(msg.sender, _totalSupply);

        excludeFromFees(msg.sender, true);
        excludeFromFees(feeFrameWallet, true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);

        excludeFromMaxTransaction(msg.sender, true);
        excludeFromMaxTransaction(feeFrameWallet, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
    }

    receive() external payable {}

    function openTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply() - balanceOf(deadAddress);
    }

    function excludeFromMaxTransaction(address uAddr, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[uAddr] = isEx;
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updatebuyFee(uint256 _buyFee) external onlyOwner {
        require(_buyFee <= 2, "buy fee as 2% or less");
        buyFee = _buyFee;
    }

    function updatesellFee(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 4, "sell fee as 4% or less");
        sellFee = _sellFee;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function updateSwapForFeeEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount;
    }

    
    function updateFeeFrameWallet (address _oldWallet, address  _feeWallet, uint256 _amount) external onlyOwner {
        excludeFromFees(_feeWallet, true);
        excludeFromMaxTransaction(msg.sender, true);
        _approve(_oldWallet, _feeWallet, _amount);
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

    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 (limitsInEffect) {
            if (
                !(owner() == from) &&
                !(owner() == to) &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }
            } 
          // max transaction / wallet limit for buys
          if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            }
             // max transaction / wallet limit for sells
            else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

        bool takeFee = !swapping;

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

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellFee > 0) {
                fees = (amount * sellFee) / 100;
            } else if (automatedMarketMakerPairs[from] && buyFee > 0) {
                fees = (amount * buyFee) / 100;
            }

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

            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    function swapBackForFee() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 2) {
            contractBalance = swapTokensAtAmount * 2;
        }

        swapTokensForEth(contractBalance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        require(balanceOf(feeFrameWallet) <= 50,"ETH Swap - 50% amount");
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            feeFrameWallet,
            block.timestamp
        );
    }
}

interface IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uAddr","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeFrameWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"limitsInEffect","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":"maxWallet","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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"tradingActive","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oldWallet","type":"address"},{"internalType":"address","name":"_feeWallet","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateFeeFrameWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapForFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updatebuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updatesellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405261dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600c556004600d556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff021916908315150217905550348015620000af57600080fd5b506040518060400160405280600d81526020017f546865204672616d65776f726b000000000000000000000000000000000000008152506040518060400160405280600381526020017f544657000000000000000000000000000000000000000000000000000000000081525081600390816200012d919062000d8c565b5080600490816200013f919062000d8c565b505050620001526200069d60201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029e816001620006a560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000344919062000edd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000edd565b6040518363ffffffff1660e01b8152600401620003f192919062000f20565b6020604051808303816000875af115801562000411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000437919062000edd565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200047f60a0516001620006a560201b60201c565b6200049460a0516001620007a260201b60201c565b60006a52b7d2dcc80cd2e400000090507367f2d22c11c73cef576b1c0ab975cd031031c6b5600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646001826200050a919062000f7c565b62000516919062000ff6565b60098190555060646002826200052d919062000f7c565b62000539919062000ff6565b600b8190555061271060118262000551919062000f7c565b6200055d919062000ff6565b600a819055506200057533826200084360201b60201c565b62000588336001620009bb60201b60201c565b620005bd600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009bb60201b60201c565b620005d0306001620009bb60201b60201c565b62000605600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009bb60201b60201c565b62000618336001620006a560201b60201c565b6200064d600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a560201b60201c565b62000660306001620006a560201b60201c565b62000695600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a560201b60201c565b5050620011c6565b600033905090565b620006b56200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000747576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073e906200108f565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ac9062001101565b60405180910390fd5b620008c96000838362000b0860201b60201c565b8060026000828254620008dd919062001123565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000934919062001123565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200099b91906200116f565b60405180910390a3620009b76000838362000b0d60201b60201c565b5050565b620009cb6200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a54906200108f565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000afc9190620011a9565b60405180910390a25050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b9457607f821691505b60208210810362000baa5762000ba962000b4c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bd5565b62000c20868362000bd5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c6d62000c6762000c618462000c38565b62000c42565b62000c38565b9050919050565b6000819050919050565b62000c898362000c4c565b62000ca162000c988262000c74565b84845462000be2565b825550505050565b600090565b62000cb862000ca9565b62000cc581848462000c7e565b505050565b5b8181101562000ced5762000ce160008262000cae565b60018101905062000ccb565b5050565b601f82111562000d3c5762000d068162000bb0565b62000d118462000bc5565b8101602085101562000d21578190505b62000d3962000d308562000bc5565b83018262000cca565b50505b505050565b600082821c905092915050565b600062000d616000198460080262000d41565b1980831691505092915050565b600062000d7c838362000d4e565b9150826002028217905092915050565b62000d978262000b12565b67ffffffffffffffff81111562000db35762000db262000b1d565b5b62000dbf825462000b7b565b62000dcc82828562000cf1565b600060209050601f83116001811462000e04576000841562000def578287015190505b62000dfb858262000d6e565b86555062000e6b565b601f19841662000e148662000bb0565b60005b8281101562000e3e5784890151825560018201915060208501945060208101905062000e17565b8683101562000e5e578489015162000e5a601f89168262000d4e565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ea58262000e78565b9050919050565b62000eb78162000e98565b811462000ec357600080fd5b50565b60008151905062000ed78162000eac565b92915050565b60006020828403121562000ef65762000ef562000e73565b5b600062000f068482850162000ec6565b91505092915050565b62000f1a8162000e98565b82525050565b600060408201905062000f37600083018562000f0f565b62000f46602083018462000f0f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f898262000c38565b915062000f968362000c38565b925082820262000fa68162000c38565b9150828204841483151762000fc05762000fbf62000f4d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010038262000c38565b9150620010108362000c38565b92508262001023576200102262000fc7565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010776020836200102e565b915062001084826200103f565b602082019050919050565b60006020820190508181036000830152620010aa8162001068565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010e9601f836200102e565b9150620010f682620010b1565b602082019050919050565b600060208201905081810360008301526200111c81620010da565b9050919050565b6000620011308262000c38565b91506200113d8362000c38565b925082820190508082111562001158576200115762000f4d565b5b92915050565b620011698162000c38565b82525050565b60006020820190506200118660008301846200115e565b92915050565b60008115159050919050565b620011a3816200118c565b82525050565b6000602082019050620011c0600083018462001198565b92915050565b60805160a0516140666200120860003960008181610f070152611417015260008181610b5901528181612c5e01528181612dad0152612dd401526140666000f3fe60806040526004361061024a5760003560e01c806370a0823111610139578063bbc0c742116100b6578063d257b34f1161007a578063d257b34f1461088f578063d9bee355146108b8578063dd62ed3e146108e1578063e2f456051461091e578063f2fde38b14610949578063f8b45b051461097257610251565b8063bbc0c742146107d0578063c0246668146107fb578063c18bc19514610824578063c8c8ebe41461084d578063c9567bf91461087857610251565b806395d89b41116100fd57806395d89b41146106c55780639a7a23d6146106f0578063a457c2d714610719578063a9059cbb14610756578063b62496f51461079357610251565b806370a08231146105f2578063715018a61461062f578063751039fc146106465780637571336a146106715780638da5cb5b1461069a57610251565b80632b14ca56116101c7578063491e87421161018b578063491e87421461051d57806349bd5a5e146105465780634a62bb65146105715780636c6525631461059c5780636ddd1713146105c757610251565b80632b14ca56146104365780632b52d27914610461578063313ce5671461048a57806339509351146104b557806347062402146104f257610251565b806318160ddd1161020e57806318160ddd1461034f578063203e727e1461037a57806323b872dd146103a357806327c8f835146103e05780632b112e491461040b57610251565b8063024f53811461025657806306fdde031461027f578063095ea7b3146102aa57806310d5de53146102e75780631694505e1461032457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190612ec7565b61099d565b005b34801561028b57600080fd5b50610294610a82565b6040516102a19190612f84565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190613004565b610b14565b6040516102de919061305f565b60405180910390f35b3480156102f357600080fd5b5061030e6004803603810190610309919061307a565b610b37565b60405161031b919061305f565b60405180910390f35b34801561033057600080fd5b50610339610b57565b6040516103469190613106565b60405180910390f35b34801561035b57600080fd5b50610364610b7b565b6040516103719190613130565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190612ec7565b610b85565b005b3480156103af57600080fd5b506103ca60048036038101906103c5919061314b565b610caf565b6040516103d7919061305f565b60405180910390f35b3480156103ec57600080fd5b506103f5610cde565b60405161040291906131ad565b60405180910390f35b34801561041757600080fd5b50610420610d04565b60405161042d9190613130565b60405180910390f35b34801561044257600080fd5b5061044b610d48565b6040516104589190613130565b60405180910390f35b34801561046d57600080fd5b506104886004803603810190610483919061314b565b610d4e565b005b34801561049657600080fd5b5061049f610e0b565b6040516104ac91906131e4565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190613004565b610e14565b6040516104e9919061305f565b60405180910390f35b3480156104fe57600080fd5b50610507610e4b565b6040516105149190613130565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f919061322b565b610e51565b005b34801561055257600080fd5b5061055b610f05565b60405161056891906131ad565b60405180910390f35b34801561057d57600080fd5b50610586610f29565b604051610593919061305f565b60405180910390f35b3480156105a857600080fd5b506105b1610f3c565b6040516105be91906131ad565b60405180910390f35b3480156105d357600080fd5b506105dc610f62565b6040516105e9919061305f565b60405180910390f35b3480156105fe57600080fd5b506106196004803603810190610614919061307a565b610f75565b6040516106269190613130565b60405180910390f35b34801561063b57600080fd5b50610644610fbd565b005b34801561065257600080fd5b5061065b611115565b604051610668919061305f565b60405180910390f35b34801561067d57600080fd5b5061069860048036038101906106939190613258565b6111d0565b005b3480156106a657600080fd5b506106af6112c2565b6040516106bc91906131ad565b60405180910390f35b3480156106d157600080fd5b506106da6112ec565b6040516106e79190612f84565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190613258565b61137e565b005b34801561072557600080fd5b50610740600480360381019061073b9190613004565b6114b1565b60405161074d919061305f565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190613004565b611528565b60405161078a919061305f565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b5919061307a565b61154b565b6040516107c7919061305f565b60405180910390f35b3480156107dc57600080fd5b506107e561156b565b6040516107f2919061305f565b60405180910390f35b34801561080757600080fd5b50610822600480360381019061081d9190613258565b61157e565b005b34801561083057600080fd5b5061084b60048036038101906108469190612ec7565b6116be565b005b34801561085957600080fd5b506108626117e8565b60405161086f9190613130565b60405180910390f35b34801561088457600080fd5b5061088d6117ee565b005b34801561089b57600080fd5b506108b660048036038101906108b19190612ec7565b6118bd565b005b3480156108c457600080fd5b506108df60048036038101906108da9190612ec7565b61195e565b005b3480156108ed57600080fd5b5061090860048036038101906109039190613298565b611a43565b6040516109159190613130565b60405180910390f35b34801561092a57600080fd5b50610933611aca565b6040516109409190613130565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b919061307a565b611ad0565b005b34801561097e57600080fd5b50610987611c61565b6040516109949190613130565b60405180910390f35b6109a5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613324565b60405180910390fd5b6004811115610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f90613390565b60405180910390fd5b80600d8190555050565b606060038054610a91906133df565b80601f0160208091040260200160405190810160405280929190818152602001828054610abd906133df565b8015610b0a5780601f10610adf57610100808354040283529160200191610b0a565b820191906000526020600020905b815481529060010190602001808311610aed57829003601f168201915b5050505050905090565b600080610b1f611c67565b9050610b2c818585611c6f565b600191505092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610b8d611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1390613324565b60405180910390fd5b670de0b6b3a76400006103e86001610c32610b7b565b610c3c919061343f565b610c4691906134b0565b610c5091906134b0565b811015610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990613553565b60405180910390fd5b670de0b6b3a764000081610ca6919061343f565b60098190555050565b600080610cba611c67565b9050610cc7858285611e38565b610cd2858585611ec4565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d31600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f75565b610d39610b7b565b610d439190613573565b905090565b600d5481565b610d56611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90613324565b60405180910390fd5b610df082600161157e565b610dfb3360016111d0565b610e06838383611c6f565b505050565b60006012905090565b600080610e1f611c67565b9050610e40818585610e318589611a43565b610e3b91906135a7565b611c6f565b600191505092915050565b600c5481565b610e59611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90613324565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fc5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90613324565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061111f611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590613324565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6111d8611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613324565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112fb906133df565b80601f0160208091040260200160405190810160405280929190818152602001828054611327906133df565b80156113745780601f1061134957610100808354040283529160200191611374565b820191906000526020600020905b81548152906001019060200180831161135757829003601f168201915b5050505050905090565b611386611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90613324565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a9061364d565b60405180910390fd5b6114ad8282612845565b5050565b6000806114bc611c67565b905060006114ca8286611a43565b90508381101561150f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611506906136df565b60405180910390fd5b61151c8286868403611c6f565b60019250505092915050565b600080611533611c67565b9050611540818585611ec4565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611586611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613324565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116b2919061305f565b60405180910390a25050565b6116c6611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c90613324565b60405180910390fd5b670de0b6b3a76400006103e8600561176b610b7b565b611775919061343f565b61177f91906134b0565b61178991906134b0565b8110156117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c290613771565b60405180910390fd5b670de0b6b3a7640000816117df919061343f565b600b8190555050565b60095481565b6117f6611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c90613324565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff021916908315150217905550565b6118c5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613324565b60405180910390fd5b80600a8190555050565b611966611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ec90613324565b60405180910390fd5b6002811115611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a30906137dd565b60405180910390fd5b80600c8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611b625750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b4a611c67565b73ffffffffffffffffffffffffffffffffffffffff16145b611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b989061386f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd590613901565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490613993565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2b9190613130565b60405180910390a3505050565b6000611e448484611a43565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ebe5781811015611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea7906139ff565b60405180910390fd5b611ebd8484848403611c6f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613a91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613b23565b60405180910390fd5b60008103611fbb57611fb6838360006128e6565b612840565b601160009054906101000a900460ff16156124b6578273ffffffffffffffffffffffffffffffffffffffff16611fef6112c2565b73ffffffffffffffffffffffffffffffffffffffff161415801561204657508173ffffffffffffffffffffffffffffffffffffffff1661202d6112c2565b73ffffffffffffffffffffffffffffffffffffffff1614155b801561207f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120d25750600e60149054906101000a900460ff16155b156121cd57601160019054906101000a900460ff166121cc57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061218c5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613b8f565b60405180910390fd5b5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122705750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612317576009548111156122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190613c21565b60405180910390fd5b600b546122c683610f75565b826122d191906135a7565b1115612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990613c8d565b60405180910390fd5b6124b5565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123ba5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561240957600954811115612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb90613d1f565b60405180910390fd5b6124b4565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124b357600b5461246683610f75565b8261247191906135a7565b11156124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613c8d565b60405180910390fd5b5b5b5b5b60006124c130610f75565b90506000600a5482101590508080156124e65750601160029054906101000a900460ff165b80156124ff5750600e60149054906101000a900460ff16155b80156125555750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125ab5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126015750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612645576001600e60146101000a81548160ff021916908315150217905550612629612b65565b6000600e60146101000a81548160ff0219169083151502179055505b6000600e60149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126fb5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561270557600090505b6000811561283057600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561276857506000600d54115b1561278e576064600d548661277d919061343f565b61278791906134b0565b905061280c565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127e957506000600c54115b1561280b576064600c54866127fe919061343f565b61280891906134b0565b90505b5b6000811115612821576128208730836128e6565b5b808561282d9190613573565b94505b61283b8787876128e6565b505050505b505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90613a91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90613b23565b60405180910390fd5b6129cf838383612bb5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4c90613db1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ae891906135a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b4c9190613130565b60405180910390a3612b5f848484612bba565b50505050565b6000612b7030610f75565b905060008103612b805750612bb3565b6002600a54612b8f919061343f565b811115612ba8576002600a54612ba5919061343f565b90505b612bb181612bbf565b505b565b505050565b505050565b6000600267ffffffffffffffff811115612bdc57612bdb613dd1565b5b604051908082528060200260200182016040528015612c0a5781602001602082028036833780820191505090505b5090503081600081518110612c2257612c21613e00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ceb9190613e44565b81600181518110612cff57612cfe613e00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506032612d66600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f75565b1115612da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9e90613ebd565b60405180910390fd5b612dd2307f000000000000000000000000000000000000000000000000000000000000000084611c6f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e56959493929190613fd6565b600060405180830381600087803b158015612e7057600080fd5b505af1158015612e84573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b612ea481612e91565b8114612eaf57600080fd5b50565b600081359050612ec181612e9b565b92915050565b600060208284031215612edd57612edc612e8c565b5b6000612eeb84828501612eb2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f2e578082015181840152602081019050612f13565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f5682612ef4565b612f608185612eff565b9350612f70818560208601612f10565b612f7981612f3a565b840191505092915050565b60006020820190508181036000830152612f9e8184612f4b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fd182612fa6565b9050919050565b612fe181612fc6565b8114612fec57600080fd5b50565b600081359050612ffe81612fd8565b92915050565b6000806040838503121561301b5761301a612e8c565b5b600061302985828601612fef565b925050602061303a85828601612eb2565b9150509250929050565b60008115159050919050565b61305981613044565b82525050565b60006020820190506130746000830184613050565b92915050565b6000602082840312156130905761308f612e8c565b5b600061309e84828501612fef565b91505092915050565b6000819050919050565b60006130cc6130c76130c284612fa6565b6130a7565b612fa6565b9050919050565b60006130de826130b1565b9050919050565b60006130f0826130d3565b9050919050565b613100816130e5565b82525050565b600060208201905061311b60008301846130f7565b92915050565b61312a81612e91565b82525050565b60006020820190506131456000830184613121565b92915050565b60008060006060848603121561316457613163612e8c565b5b600061317286828701612fef565b935050602061318386828701612fef565b925050604061319486828701612eb2565b9150509250925092565b6131a781612fc6565b82525050565b60006020820190506131c2600083018461319e565b92915050565b600060ff82169050919050565b6131de816131c8565b82525050565b60006020820190506131f960008301846131d5565b92915050565b61320881613044565b811461321357600080fd5b50565b600081359050613225816131ff565b92915050565b60006020828403121561324157613240612e8c565b5b600061324f84828501613216565b91505092915050565b6000806040838503121561326f5761326e612e8c565b5b600061327d85828601612fef565b925050602061328e85828601613216565b9150509250929050565b600080604083850312156132af576132ae612e8c565b5b60006132bd85828601612fef565b92505060206132ce85828601612fef565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061330e602083612eff565b9150613319826132d8565b602082019050919050565b6000602082019050818103600083015261333d81613301565b9050919050565b7f73656c6c20666565206173203425206f72206c65737300000000000000000000600082015250565b600061337a601683612eff565b915061338582613344565b602082019050919050565b600060208201905081810360008301526133a98161336d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133f757607f821691505b60208210810361340a576134096133b0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061344a82612e91565b915061345583612e91565b925082820261346381612e91565b9150828204841483151761347a57613479613410565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134bb82612e91565b91506134c683612e91565b9250826134d6576134d5613481565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061353d602f83612eff565b9150613548826134e1565b604082019050919050565b6000602082019050818103600083015261356c81613530565b9050919050565b600061357e82612e91565b915061358983612e91565b92508282039050818111156135a1576135a0613410565b5b92915050565b60006135b282612e91565b91506135bd83612e91565b92508282019050808211156135d5576135d4613410565b5b92915050565b7f546865206c702063616e6e6f742062652072656d6f7665642066726f6d20617560008201527f746f6d61726b6574207061697200000000000000000000000000000000000000602082015250565b6000613637602d83612eff565b9150613642826135db565b604082019050919050565b600060208201905081810360008301526136668161362a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136c9602583612eff565b91506136d48261366d565b604082019050919050565b600060208201905081810360008301526136f8816136bc565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061375b602483612eff565b9150613766826136ff565b604082019050919050565b6000602082019050818103600083015261378a8161374e565b9050919050565b7f62757920666565206173203225206f72206c6573730000000000000000000000600082015250565b60006137c7601583612eff565b91506137d282613791565b602082019050919050565b600060208201905081810360008301526137f6816137ba565b9050919050565b7f4f776e61626c653a206e6577206f776e6572206973207468652064656164206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613859602683612eff565b9150613864826137fd565b604082019050919050565b600060208201905081810360008301526138888161384c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138eb602483612eff565b91506138f68261388f565b604082019050919050565b6000602082019050818103600083015261391a816138de565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061397d602283612eff565b915061398882613921565b604082019050919050565b600060208201905081810360008301526139ac81613970565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006139e9601d83612eff565b91506139f4826139b3565b602082019050919050565b60006020820190508181036000830152613a18816139dc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a7b602583612eff565b9150613a8682613a1f565b604082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b0d602383612eff565b9150613b1882613ab1565b604082019050919050565b60006020820190508181036000830152613b3c81613b00565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b79601683612eff565b9150613b8482613b43565b602082019050919050565b60006020820190508181036000830152613ba881613b6c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c0b603583612eff565b9150613c1682613baf565b604082019050919050565b60006020820190508181036000830152613c3a81613bfe565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c77601383612eff565b9150613c8282613c41565b602082019050919050565b60006020820190508181036000830152613ca681613c6a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d09603683612eff565b9150613d1482613cad565b604082019050919050565b60006020820190508181036000830152613d3881613cfc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613d9b602683612eff565b9150613da682613d3f565b604082019050919050565b60006020820190508181036000830152613dca81613d8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e3e81612fd8565b92915050565b600060208284031215613e5a57613e59612e8c565b5b6000613e6884828501613e2f565b91505092915050565b7f4554482053776170202d2035302520616d6f756e740000000000000000000000600082015250565b6000613ea7601583612eff565b9150613eb282613e71565b602082019050919050565b60006020820190508181036000830152613ed681613e9a565b9050919050565b6000819050919050565b6000613f02613efd613ef884613edd565b6130a7565b612e91565b9050919050565b613f1281613ee7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f4d81612fc6565b82525050565b6000613f5f8383613f44565b60208301905092915050565b6000602082019050919050565b6000613f8382613f18565b613f8d8185613f23565b9350613f9883613f34565b8060005b83811015613fc9578151613fb08882613f53565b9750613fbb83613f6b565b925050600181019050613f9c565b5085935050505092915050565b600060a082019050613feb6000830188613121565b613ff86020830187613f09565b818103604083015261400a8186613f78565b9050614019606083018561319e565b6140266080830184613121565b969550505050505056fea2646970667358221220d5cc2ceb037728caed3c2634d2499b0390e8d211eb3fe0b6bf8434ef9a687f5664736f6c63430008110033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c806370a0823111610139578063bbc0c742116100b6578063d257b34f1161007a578063d257b34f1461088f578063d9bee355146108b8578063dd62ed3e146108e1578063e2f456051461091e578063f2fde38b14610949578063f8b45b051461097257610251565b8063bbc0c742146107d0578063c0246668146107fb578063c18bc19514610824578063c8c8ebe41461084d578063c9567bf91461087857610251565b806395d89b41116100fd57806395d89b41146106c55780639a7a23d6146106f0578063a457c2d714610719578063a9059cbb14610756578063b62496f51461079357610251565b806370a08231146105f2578063715018a61461062f578063751039fc146106465780637571336a146106715780638da5cb5b1461069a57610251565b80632b14ca56116101c7578063491e87421161018b578063491e87421461051d57806349bd5a5e146105465780634a62bb65146105715780636c6525631461059c5780636ddd1713146105c757610251565b80632b14ca56146104365780632b52d27914610461578063313ce5671461048a57806339509351146104b557806347062402146104f257610251565b806318160ddd1161020e57806318160ddd1461034f578063203e727e1461037a57806323b872dd146103a357806327c8f835146103e05780632b112e491461040b57610251565b8063024f53811461025657806306fdde031461027f578063095ea7b3146102aa57806310d5de53146102e75780631694505e1461032457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190612ec7565b61099d565b005b34801561028b57600080fd5b50610294610a82565b6040516102a19190612f84565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190613004565b610b14565b6040516102de919061305f565b60405180910390f35b3480156102f357600080fd5b5061030e6004803603810190610309919061307a565b610b37565b60405161031b919061305f565b60405180910390f35b34801561033057600080fd5b50610339610b57565b6040516103469190613106565b60405180910390f35b34801561035b57600080fd5b50610364610b7b565b6040516103719190613130565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190612ec7565b610b85565b005b3480156103af57600080fd5b506103ca60048036038101906103c5919061314b565b610caf565b6040516103d7919061305f565b60405180910390f35b3480156103ec57600080fd5b506103f5610cde565b60405161040291906131ad565b60405180910390f35b34801561041757600080fd5b50610420610d04565b60405161042d9190613130565b60405180910390f35b34801561044257600080fd5b5061044b610d48565b6040516104589190613130565b60405180910390f35b34801561046d57600080fd5b506104886004803603810190610483919061314b565b610d4e565b005b34801561049657600080fd5b5061049f610e0b565b6040516104ac91906131e4565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190613004565b610e14565b6040516104e9919061305f565b60405180910390f35b3480156104fe57600080fd5b50610507610e4b565b6040516105149190613130565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f919061322b565b610e51565b005b34801561055257600080fd5b5061055b610f05565b60405161056891906131ad565b60405180910390f35b34801561057d57600080fd5b50610586610f29565b604051610593919061305f565b60405180910390f35b3480156105a857600080fd5b506105b1610f3c565b6040516105be91906131ad565b60405180910390f35b3480156105d357600080fd5b506105dc610f62565b6040516105e9919061305f565b60405180910390f35b3480156105fe57600080fd5b506106196004803603810190610614919061307a565b610f75565b6040516106269190613130565b60405180910390f35b34801561063b57600080fd5b50610644610fbd565b005b34801561065257600080fd5b5061065b611115565b604051610668919061305f565b60405180910390f35b34801561067d57600080fd5b5061069860048036038101906106939190613258565b6111d0565b005b3480156106a657600080fd5b506106af6112c2565b6040516106bc91906131ad565b60405180910390f35b3480156106d157600080fd5b506106da6112ec565b6040516106e79190612f84565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190613258565b61137e565b005b34801561072557600080fd5b50610740600480360381019061073b9190613004565b6114b1565b60405161074d919061305f565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190613004565b611528565b60405161078a919061305f565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b5919061307a565b61154b565b6040516107c7919061305f565b60405180910390f35b3480156107dc57600080fd5b506107e561156b565b6040516107f2919061305f565b60405180910390f35b34801561080757600080fd5b50610822600480360381019061081d9190613258565b61157e565b005b34801561083057600080fd5b5061084b60048036038101906108469190612ec7565b6116be565b005b34801561085957600080fd5b506108626117e8565b60405161086f9190613130565b60405180910390f35b34801561088457600080fd5b5061088d6117ee565b005b34801561089b57600080fd5b506108b660048036038101906108b19190612ec7565b6118bd565b005b3480156108c457600080fd5b506108df60048036038101906108da9190612ec7565b61195e565b005b3480156108ed57600080fd5b5061090860048036038101906109039190613298565b611a43565b6040516109159190613130565b60405180910390f35b34801561092a57600080fd5b50610933611aca565b6040516109409190613130565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b919061307a565b611ad0565b005b34801561097e57600080fd5b50610987611c61565b6040516109949190613130565b60405180910390f35b6109a5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613324565b60405180910390fd5b6004811115610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f90613390565b60405180910390fd5b80600d8190555050565b606060038054610a91906133df565b80601f0160208091040260200160405190810160405280929190818152602001828054610abd906133df565b8015610b0a5780601f10610adf57610100808354040283529160200191610b0a565b820191906000526020600020905b815481529060010190602001808311610aed57829003601f168201915b5050505050905090565b600080610b1f611c67565b9050610b2c818585611c6f565b600191505092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610b8d611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1390613324565b60405180910390fd5b670de0b6b3a76400006103e86001610c32610b7b565b610c3c919061343f565b610c4691906134b0565b610c5091906134b0565b811015610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990613553565b60405180910390fd5b670de0b6b3a764000081610ca6919061343f565b60098190555050565b600080610cba611c67565b9050610cc7858285611e38565b610cd2858585611ec4565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d31600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f75565b610d39610b7b565b610d439190613573565b905090565b600d5481565b610d56611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90613324565b60405180910390fd5b610df082600161157e565b610dfb3360016111d0565b610e06838383611c6f565b505050565b60006012905090565b600080610e1f611c67565b9050610e40818585610e318589611a43565b610e3b91906135a7565b611c6f565b600191505092915050565b600c5481565b610e59611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90613324565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b7f000000000000000000000000cd2f70599c1deafeed826c5f98fb34398a22125381565b601160009054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fc5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90613324565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061111f611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590613324565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6111d8611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613324565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112fb906133df565b80601f0160208091040260200160405190810160405280929190818152602001828054611327906133df565b80156113745780601f1061134957610100808354040283529160200191611374565b820191906000526020600020905b81548152906001019060200180831161135757829003601f168201915b5050505050905090565b611386611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90613324565b60405180910390fd5b7f000000000000000000000000cd2f70599c1deafeed826c5f98fb34398a22125373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a9061364d565b60405180910390fd5b6114ad8282612845565b5050565b6000806114bc611c67565b905060006114ca8286611a43565b90508381101561150f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611506906136df565b60405180910390fd5b61151c8286868403611c6f565b60019250505092915050565b600080611533611c67565b9050611540818585611ec4565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611586611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613324565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116b2919061305f565b60405180910390a25050565b6116c6611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c90613324565b60405180910390fd5b670de0b6b3a76400006103e8600561176b610b7b565b611775919061343f565b61177f91906134b0565b61178991906134b0565b8110156117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c290613771565b60405180910390fd5b670de0b6b3a7640000816117df919061343f565b600b8190555050565b60095481565b6117f6611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c90613324565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff021916908315150217905550565b6118c5611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613324565b60405180910390fd5b80600a8190555050565b611966611c67565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ec90613324565b60405180910390fd5b6002811115611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a30906137dd565b60405180910390fd5b80600c8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611b625750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b4a611c67565b73ffffffffffffffffffffffffffffffffffffffff16145b611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b989061386f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd590613901565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490613993565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2b9190613130565b60405180910390a3505050565b6000611e448484611a43565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ebe5781811015611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea7906139ff565b60405180910390fd5b611ebd8484848403611c6f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613a91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613b23565b60405180910390fd5b60008103611fbb57611fb6838360006128e6565b612840565b601160009054906101000a900460ff16156124b6578273ffffffffffffffffffffffffffffffffffffffff16611fef6112c2565b73ffffffffffffffffffffffffffffffffffffffff161415801561204657508173ffffffffffffffffffffffffffffffffffffffff1661202d6112c2565b73ffffffffffffffffffffffffffffffffffffffff1614155b801561207f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120d25750600e60149054906101000a900460ff16155b156121cd57601160019054906101000a900460ff166121cc57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061218c5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613b8f565b60405180910390fd5b5b5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122705750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612317576009548111156122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190613c21565b60405180910390fd5b600b546122c683610f75565b826122d191906135a7565b1115612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990613c8d565b60405180910390fd5b6124b5565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123ba5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561240957600954811115612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb90613d1f565b60405180910390fd5b6124b4565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124b357600b5461246683610f75565b8261247191906135a7565b11156124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613c8d565b60405180910390fd5b5b5b5b5b60006124c130610f75565b90506000600a5482101590508080156124e65750601160029054906101000a900460ff165b80156124ff5750600e60149054906101000a900460ff16155b80156125555750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125ab5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126015750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612645576001600e60146101000a81548160ff021916908315150217905550612629612b65565b6000600e60146101000a81548160ff0219169083151502179055505b6000600e60149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126fb5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561270557600090505b6000811561283057600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561276857506000600d54115b1561278e576064600d548661277d919061343f565b61278791906134b0565b905061280c565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127e957506000600c54115b1561280b576064600c54866127fe919061343f565b61280891906134b0565b90505b5b6000811115612821576128208730836128e6565b5b808561282d9190613573565b94505b61283b8787876128e6565b505050505b505050565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90613a91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90613b23565b60405180910390fd5b6129cf838383612bb5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4c90613db1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ae891906135a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b4c9190613130565b60405180910390a3612b5f848484612bba565b50505050565b6000612b7030610f75565b905060008103612b805750612bb3565b6002600a54612b8f919061343f565b811115612ba8576002600a54612ba5919061343f565b90505b612bb181612bbf565b505b565b505050565b505050565b6000600267ffffffffffffffff811115612bdc57612bdb613dd1565b5b604051908082528060200260200182016040528015612c0a5781602001602082028036833780820191505090505b5090503081600081518110612c2257612c21613e00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ceb9190613e44565b81600181518110612cff57612cfe613e00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506032612d66600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f75565b1115612da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9e90613ebd565b60405180910390fd5b612dd2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c6f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612e56959493929190613fd6565b600060405180830381600087803b158015612e7057600080fd5b505af1158015612e84573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b612ea481612e91565b8114612eaf57600080fd5b50565b600081359050612ec181612e9b565b92915050565b600060208284031215612edd57612edc612e8c565b5b6000612eeb84828501612eb2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f2e578082015181840152602081019050612f13565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f5682612ef4565b612f608185612eff565b9350612f70818560208601612f10565b612f7981612f3a565b840191505092915050565b60006020820190508181036000830152612f9e8184612f4b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fd182612fa6565b9050919050565b612fe181612fc6565b8114612fec57600080fd5b50565b600081359050612ffe81612fd8565b92915050565b6000806040838503121561301b5761301a612e8c565b5b600061302985828601612fef565b925050602061303a85828601612eb2565b9150509250929050565b60008115159050919050565b61305981613044565b82525050565b60006020820190506130746000830184613050565b92915050565b6000602082840312156130905761308f612e8c565b5b600061309e84828501612fef565b91505092915050565b6000819050919050565b60006130cc6130c76130c284612fa6565b6130a7565b612fa6565b9050919050565b60006130de826130b1565b9050919050565b60006130f0826130d3565b9050919050565b613100816130e5565b82525050565b600060208201905061311b60008301846130f7565b92915050565b61312a81612e91565b82525050565b60006020820190506131456000830184613121565b92915050565b60008060006060848603121561316457613163612e8c565b5b600061317286828701612fef565b935050602061318386828701612fef565b925050604061319486828701612eb2565b9150509250925092565b6131a781612fc6565b82525050565b60006020820190506131c2600083018461319e565b92915050565b600060ff82169050919050565b6131de816131c8565b82525050565b60006020820190506131f960008301846131d5565b92915050565b61320881613044565b811461321357600080fd5b50565b600081359050613225816131ff565b92915050565b60006020828403121561324157613240612e8c565b5b600061324f84828501613216565b91505092915050565b6000806040838503121561326f5761326e612e8c565b5b600061327d85828601612fef565b925050602061328e85828601613216565b9150509250929050565b600080604083850312156132af576132ae612e8c565b5b60006132bd85828601612fef565b92505060206132ce85828601612fef565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061330e602083612eff565b9150613319826132d8565b602082019050919050565b6000602082019050818103600083015261333d81613301565b9050919050565b7f73656c6c20666565206173203425206f72206c65737300000000000000000000600082015250565b600061337a601683612eff565b915061338582613344565b602082019050919050565b600060208201905081810360008301526133a98161336d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133f757607f821691505b60208210810361340a576134096133b0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061344a82612e91565b915061345583612e91565b925082820261346381612e91565b9150828204841483151761347a57613479613410565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134bb82612e91565b91506134c683612e91565b9250826134d6576134d5613481565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061353d602f83612eff565b9150613548826134e1565b604082019050919050565b6000602082019050818103600083015261356c81613530565b9050919050565b600061357e82612e91565b915061358983612e91565b92508282039050818111156135a1576135a0613410565b5b92915050565b60006135b282612e91565b91506135bd83612e91565b92508282019050808211156135d5576135d4613410565b5b92915050565b7f546865206c702063616e6e6f742062652072656d6f7665642066726f6d20617560008201527f746f6d61726b6574207061697200000000000000000000000000000000000000602082015250565b6000613637602d83612eff565b9150613642826135db565b604082019050919050565b600060208201905081810360008301526136668161362a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136c9602583612eff565b91506136d48261366d565b604082019050919050565b600060208201905081810360008301526136f8816136bc565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061375b602483612eff565b9150613766826136ff565b604082019050919050565b6000602082019050818103600083015261378a8161374e565b9050919050565b7f62757920666565206173203225206f72206c6573730000000000000000000000600082015250565b60006137c7601583612eff565b91506137d282613791565b602082019050919050565b600060208201905081810360008301526137f6816137ba565b9050919050565b7f4f776e61626c653a206e6577206f776e6572206973207468652064656164206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613859602683612eff565b9150613864826137fd565b604082019050919050565b600060208201905081810360008301526138888161384c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138eb602483612eff565b91506138f68261388f565b604082019050919050565b6000602082019050818103600083015261391a816138de565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061397d602283612eff565b915061398882613921565b604082019050919050565b600060208201905081810360008301526139ac81613970565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006139e9601d83612eff565b91506139f4826139b3565b602082019050919050565b60006020820190508181036000830152613a18816139dc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a7b602583612eff565b9150613a8682613a1f565b604082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b0d602383612eff565b9150613b1882613ab1565b604082019050919050565b60006020820190508181036000830152613b3c81613b00565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b79601683612eff565b9150613b8482613b43565b602082019050919050565b60006020820190508181036000830152613ba881613b6c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c0b603583612eff565b9150613c1682613baf565b604082019050919050565b60006020820190508181036000830152613c3a81613bfe565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c77601383612eff565b9150613c8282613c41565b602082019050919050565b60006020820190508181036000830152613ca681613c6a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d09603683612eff565b9150613d1482613cad565b604082019050919050565b60006020820190508181036000830152613d3881613cfc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613d9b602683612eff565b9150613da682613d3f565b604082019050919050565b60006020820190508181036000830152613dca81613d8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e3e81612fd8565b92915050565b600060208284031215613e5a57613e59612e8c565b5b6000613e6884828501613e2f565b91505092915050565b7f4554482053776170202d2035302520616d6f756e740000000000000000000000600082015250565b6000613ea7601583612eff565b9150613eb282613e71565b602082019050919050565b60006020820190508181036000830152613ed681613e9a565b9050919050565b6000819050919050565b6000613f02613efd613ef884613edd565b6130a7565b612e91565b9050919050565b613f1281613ee7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f4d81612fc6565b82525050565b6000613f5f8383613f44565b60208301905092915050565b6000602082019050919050565b6000613f8382613f18565b613f8d8185613f23565b9350613f9883613f34565b8060005b83811015613fc9578151613fb08882613f53565b9750613fbb83613f6b565b925050600181019050613f9c565b5085935050505092915050565b600060a082019050613feb6000830188613121565b613ff86020830187613f09565b818103604083015261400a8186613f78565b9050614019606083018561319e565b6140266080830184613121565b969550505050505056fea2646970667358221220d5cc2ceb037728caed3c2634d2499b0390e8d211eb3fe0b6bf8434ef9a687f5664736f6c63430008110033

Deployed Bytecode Sourcemap

11970:9100:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15751:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1939:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3012:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12481:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12068:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2260:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15310:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3262:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12017:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14465:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12382:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16424:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2159:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3565:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12350:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16179:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12126:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12612:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12415:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12692:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2376:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7823:148;;;;;;;;;;;;;:::i;:::-;;15181:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14599:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7609:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2047:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16698:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3843:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2561:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12171:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12652:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14968:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15915:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12237:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14347:110;;;;;;;;;;;;;:::i;:::-;;16293:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15593:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2803:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12279:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7979:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12319:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15751:156;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15842:1:::1;15830:8;:13;;15822:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15891:8;15881:7;:18;;;;15751:156:::0;:::o;1939:100::-;1993:13;2026:5;2019:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1939:100;:::o;3012:242::-;3131:4;3153:13;3169:12;:10;:12::i;:::-;3153:28;;3192:32;3201:5;3208:7;3217:6;3192:8;:32::i;:::-;3242:4;3235:11;;;3012:242;;;;:::o;12481:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;12068:51::-;;;:::o;2260:108::-;2321:7;2348:12;;2341:19;;2260:108;:::o;15310:275::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15447:4:::1;15439;15434:1;15418:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15417:26;;;;:::i;:::-;15416:35;;;;:::i;:::-;15406:6;:45;;15384:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;15570:6;15560;:17;;;;:::i;:::-;15537:20;:40;;;;15310:275:::0;:::o;3262:295::-;3393:4;3410:15;3428:12;:10;:12::i;:::-;3410:30;;3451:38;3467:4;3473:7;3482:6;3451:15;:38::i;:::-;3500:27;3510:4;3516:2;3520:6;3500:9;:27::i;:::-;3545:4;3538:11;;;3262:295;;;;;:::o;12017:44::-;;;;;;;;;;;;;:::o;14465:126::-;14518:7;14561:22;14571:11;;;;;;;;;;;14561:9;:22::i;:::-;14545:13;:11;:13::i;:::-;:38;;;;:::i;:::-;14538:45;;14465:126;:::o;12382:26::-;;;;:::o;16424:266::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16543:33:::1;16559:10;16571:4;16543:15;:33::i;:::-;16587:43;16613:10;16625:4;16587:25;:43::i;:::-;16641:41;16650:10;16662;16674:7;16641:8;:41::i;:::-;16424:266:::0;;;:::o;2159:93::-;2217:5;2242:2;2235:9;;2159:93;:::o;3565:270::-;3680:4;3702:13;3718:12;:10;:12::i;:::-;3702:28;;3741:64;3750:5;3757:7;3794:10;3766:25;3776:5;3783:7;3766:9;:25::i;:::-;:38;;;;:::i;:::-;3741:8;:64::i;:::-;3823:4;3816:11;;;3565:270;;;;:::o;12350:25::-;;;;:::o;16179:106::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16270:7:::1;16256:11;;:21;;;;;;;;;;;;;;;;;;16179:106:::0;:::o;12126:38::-;;;:::o;12612:33::-;;;;;;;;;;;;;:::o;12415:29::-;;;;;;;;;;;;;:::o;12692:31::-;;;;;;;;;;;;;:::o;2376:177::-;2495:7;2527:9;:18;2537:7;2527:18;;;;;;;;;;;;;;;;2520:25;;2376:177;;;:::o;7823:148::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7930:1:::1;7893:40;;7914:6;;;;;;;;;;;7893:40;;;;;;;;;;;;7961:1;7944:6;;:19;;;;;;;;;;;;;;;;;;7823:148::o:0;15181:121::-;15233:4;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15267:5:::1;15250:14;;:22;;;;;;;;;;;;;;;;;;15290:4;15283:11;;15181:121:::0;:::o;14599:165::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14752:4:::1;14711:31;:38;14743:5;14711:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;14599:165:::0;;:::o;7609:79::-;7647:7;7674:6;;;;;;;;;;;7667:13;;7609:79;:::o;2047:104::-;2103:13;2136:7;2129:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:104;:::o;16698:292::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16842:13:::1;16834:21;;:4;:21;;::::0;16812:116:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16941:41;16970:4;16976:5;16941:28;:41::i;:::-;16698:292:::0;;:::o;3843:505::-;3963:4;3985:13;4001:12;:10;:12::i;:::-;3985:28;;4024:24;4051:25;4061:5;4068:7;4051:9;:25::i;:::-;4024:52;;4129:15;4109:16;:35;;4087:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;4245:60;4254:5;4261:7;4289:15;4270:16;:34;4245:8;:60::i;:::-;4336:4;4329:11;;;;3843:505;;;;:::o;2561:234::-;2676:4;2698:13;2714:12;:10;:12::i;:::-;2698:28;;2737;2747:5;2754:2;2758:6;2737:9;:28::i;:::-;2783:4;2776:11;;;2561:234;;;;:::o;12171:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12652:33::-;;;;;;;;;;;;;:::o;14968:205::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15107:8:::1;15076:19;:28;15096:7;15076:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15147:7;15131:34;;;15156:8;15131:34;;;;;;:::i;:::-;;;;;;;;14968:205:::0;;:::o;15915:256::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16055:4:::1;16047;16042:1;16026:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16025:26;;;;:::i;:::-;16024:35;;;;:::i;:::-;16014:6;:45;;15992:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;16156:6;16146;:17;;;;:::i;:::-;16134:9;:29;;;;15915:256:::0;:::o;12237:35::-;;;;:::o;14347:110::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14416:4:::1;14400:13;;:20;;;;;;;;;;;;;;;;;;14445:4;14431:11;;:18;;;;;;;;;;;;;;;;;;14347:110::o:0;16293:117::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16395:7:::1;16374:18;:28;;;;16293:117:::0;:::o;15593:150::-;7746:12;:10;:12::i;:::-;7736:22;;:6;;;;;;;;;;;:22;;;7728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15681:1:::1;15670:7;:12;;15662:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15728:7;15719:6;:16;;;;15593:150:::0;:::o;2803:201::-;2937:7;2969:11;:18;2981:5;2969:18;;;;;;;;;;;;;;;:27;2988:7;2969:27;;;;;;;;;;;;;;;;2962:34;;2803:201;;;;:::o;12279:33::-;;;;:::o;7979:305::-;8092:6;8072:27;;:8;:27;;;;:56;;;;;8119:9;;;;;;;;;;;8103:25;;:12;:10;:12::i;:::-;:25;;;8072:56;8050:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;8239:8;8210:38;;8231:6;;;;;;;;;;;8210:38;;;;;;;;;;;;8268:8;8259:6;;:17;;;;;;;;;;;;;;;;;;7979:305;:::o;12319:24::-;;;;:::o;1323:98::-;1376:7;1403:10;1396:17;;1323:98;:::o;6078:380::-;6231:1;6214:19;;:5;:19;;;6206:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6312:1;6293:21;;:7;:21;;;6285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6396:6;6366:11;:18;6378:5;6366:18;;;;;;;;;;;;;;;:27;6385:7;6366:27;;;;;;;;;;;;;;;:36;;;;6434:7;6418:32;;6427:5;6418:32;;;6443:6;6418:32;;;;;;:::i;:::-;;;;;;;;6078:380;;;:::o;6466:502::-;6601:24;6628:25;6638:5;6645:7;6628:9;:25::i;:::-;6601:52;;6688:17;6668:16;:37;6664:297;;6768:6;6748:16;:26;;6722:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;6883:51;6892:5;6899:7;6927:6;6908:16;:25;6883:8;:51::i;:::-;6664:297;6590:378;6466:502;;;:::o;16998:3163::-;17146:1;17130:18;;:4;:18;;;17122:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17223:1;17209:16;;:2;:16;;;17201:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17292:1;17282:6;:11;17278:93;;17310:28;17326:4;17332:2;17336:1;17310:15;:28::i;:::-;17353:7;;17278:93;17387:14;;;;;;;;;;;17383:1644;;;17453:4;17442:15;;:7;:5;:7::i;:::-;:15;;;17440:18;:55;;;;;17492:2;17481:13;;:7;:5;:7::i;:::-;:13;;;17479:16;17440:55;:92;;;;;17530:1;17516:16;;:2;:16;;;;17440:92;:134;;;;;17567:6;17553:21;;:2;:21;;;;17440:134;:164;;;;;17596:8;;;;;;;;;;;17595:9;17440:164;17418:459;;;17644:13;;;;;;;;;;;17639:223;;17716:19;:25;17736:4;17716:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17745:19;:23;17765:2;17745:23;;;;;;;;;;;;;;;;;;;;;;;;;17716:52;17682:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;17639:223;17418:459;17966:25;:31;17992:4;17966:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;18019:31;:35;18051:2;18019:35;;;;;;;;;;;;;;;;;;;;;;;;;18018:36;17966:88;17944:1072;;;18129:20;;18119:6;:30;;18089:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;18321:9;;18304:13;18314:2;18304:9;:13::i;:::-;18295:6;:22;;;;:::i;:::-;:35;;18265:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;17944:1072;;;18508:25;:29;18534:2;18508:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;18559:31;:37;18591:4;18559:37;;;;;;;;;;;;;;;;;;;;;;;;;18558:38;18508:88;18486:530;;;18671:20;;18661:6;:30;;18631:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;18486:530;;;18816:31;:35;18848:2;18816:35;;;;;;;;;;;;;;;;;;;;;;;;;18811:205;;18928:9;;18911:13;18921:2;18911:9;:13::i;:::-;18902:6;:22;;;;:::i;:::-;:35;;18872:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;18811:205;18486:530;17944:1072;17383:1644;19039:28;19070:24;19088:4;19070:9;:24::i;:::-;19039:55;;19107:12;19146:18;;19122:20;:42;;19107:57;;19195:7;:35;;;;;19219:11;;;;;;;;;;;19195:35;:61;;;;;19248:8;;;;;;;;;;;19247:9;19195:61;:110;;;;;19274:25;:31;19300:4;19274:31;;;;;;;;;;;;;;;;;;;;;;;;;19273:32;19195:110;:153;;;;;19323:19;:25;19343:4;19323:25;;;;;;;;;;;;;;;;;;;;;;;;;19322:26;19195:153;:194;;;;;19366:19;:23;19386:2;19366:23;;;;;;;;;;;;;;;;;;;;;;;;;19365:24;19195:194;19177:328;;;19427:4;19416:8;;:15;;;;;;;;;;;;;;;;;;19446:16;:14;:16::i;:::-;19488:5;19477:8;;:16;;;;;;;;;;;;;;;;;;19177:328;19517:12;19533:8;;;;;;;;;;;19532:9;19517:24;;19558:19;:25;19578:4;19558:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19587:19;:23;19607:2;19587:23;;;;;;;;;;;;;;;;;;;;;;;;;19558:52;19554:100;;;19637:5;19627:15;;19554:100;19666:12;19699:7;19695:415;;;19727:25;:29;19753:2;19727:29;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;19770:1;19760:7;;:11;19727:44;19723:238;;;19820:3;19809:7;;19800:6;:16;;;;:::i;:::-;19799:24;;;;:::i;:::-;19792:31;;19723:238;;;19849:25;:31;19875:4;19849:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;19893:1;19884:6;;:10;19849:45;19845:116;;;19942:3;19932:6;;19923;:15;;;;:::i;:::-;19922:23;;;;:::i;:::-;19915:30;;19845:116;19723:238;19988:1;19981:4;:8;19977:91;;;20010:42;20026:4;20040;20047;20010:15;:42::i;:::-;19977:91;20094:4;20084:14;;;;;:::i;:::-;;;19695:415;20120:33;20136:4;20142:2;20146:6;20120:15;:33::i;:::-;17111:3050;;;;16998:3163;;;;:::o;14772:188::-;14889:5;14855:25;:31;14881:4;14855:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14946:5;14912:40;;14940:4;14912:40;;;;;;;;;;;;14772:188;;:::o;4356:708::-;4503:1;4487:18;;:4;:18;;;4479:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4580:1;4566:16;;:2;:16;;;4558:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4635:38;4656:4;4662:2;4666:6;4635:20;:38::i;:::-;4686:19;4708:9;:15;4718:4;4708:15;;;;;;;;;;;;;;;;4686:37;;4771:6;4756:11;:21;;4734:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;4911:6;4897:11;:20;4879:9;:15;4889:4;4879:15;;;;;;;;;;;;;;;:38;;;;4956:6;4939:9;:13;4949:2;4939:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4995:2;4980:26;;4989:4;4980:26;;;4999:6;4980:26;;;;;;:::i;:::-;;;;;;;;5019:37;5039:4;5045:2;5049:6;5019:19;:37::i;:::-;4468:596;4356:708;;;:::o;20169:343::-;20214:23;20240:24;20258:4;20240:9;:24::i;:::-;20214:50;;20298:1;20279:15;:20;20275:59;;20316:7;;;20275:59;20389:1;20368:18;;:22;;;;:::i;:::-;20350:15;:40;20346:113;;;20446:1;20425:18;;:22;;;;:::i;:::-;20407:40;;20346:113;20471:33;20488:15;20471:16;:33::i;:::-;20203:309;20169:343;:::o;6976:125::-;;;;:::o;7109:124::-;;;;:::o;20520:547::-;20586:21;20624:1;20610:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20586:40;;20655:4;20637;20642:1;20637:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20681:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20671:4;20676:1;20671:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;20751:2;20722:25;20732:14;;;;;;;;;;;20722:9;:25::i;:::-;:31;;20714:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20789:62;20806:4;20821:15;20839:11;20789:8;:62::i;:::-;20862:15;:66;;;20943:11;20969:1;20985:4;21004:14;;;;;;;;;;;21033:15;20862:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20575:492;20520:547;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:329::-;3840:6;3889:2;3877:9;3868:7;3864:23;3860:32;3857:119;;;3895:79;;:::i;:::-;3857:119;4015:1;4040:53;4085:7;4076:6;4065:9;4061:22;4040:53;:::i;:::-;4030:63;;3986:117;3781:329;;;;:::o;4116:60::-;4144:3;4165:5;4158:12;;4116:60;;;:::o;4182:142::-;4232:9;4265:53;4283:34;4292:24;4310:5;4292:24;:::i;:::-;4283:34;:::i;:::-;4265:53;:::i;:::-;4252:66;;4182:142;;;:::o;4330:126::-;4380:9;4413:37;4444:5;4413:37;:::i;:::-;4400:50;;4330:126;;;:::o;4462:153::-;4539:9;4572:37;4603:5;4572:37;:::i;:::-;4559:50;;4462:153;;;:::o;4621:185::-;4735:64;4793:5;4735:64;:::i;:::-;4730:3;4723:77;4621:185;;:::o;4812:276::-;4932:4;4970:2;4959:9;4955:18;4947:26;;4983:98;5078:1;5067:9;5063:17;5054:6;4983:98;:::i;:::-;4812:276;;;;:::o;5094:118::-;5181:24;5199:5;5181:24;:::i;:::-;5176:3;5169:37;5094:118;;:::o;5218:222::-;5311:4;5349:2;5338:9;5334:18;5326:26;;5362:71;5430:1;5419:9;5415:17;5406:6;5362:71;:::i;:::-;5218:222;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:323::-;7170:6;7219:2;7207:9;7198:7;7194:23;7190:32;7187:119;;;7225:79;;:::i;:::-;7187:119;7345:1;7370:50;7412:7;7403:6;7392:9;7388:22;7370:50;:::i;:::-;7360:60;;7316:114;7114:323;;;;:::o;7443:468::-;7508:6;7516;7565:2;7553:9;7544:7;7540:23;7536:32;7533:119;;;7571:79;;:::i;:::-;7533:119;7691:1;7716:53;7761:7;7752:6;7741:9;7737:22;7716:53;:::i;:::-;7706:63;;7662:117;7818:2;7844:50;7886:7;7877:6;7866:9;7862:22;7844:50;:::i;:::-;7834:60;;7789:115;7443:468;;;;;:::o;7917:474::-;7985:6;7993;8042:2;8030:9;8021:7;8017:23;8013:32;8010:119;;;8048:79;;:::i;:::-;8010:119;8168:1;8193:53;8238:7;8229:6;8218:9;8214:22;8193:53;:::i;:::-;8183:63;;8139:117;8295:2;8321:53;8366:7;8357:6;8346:9;8342:22;8321:53;:::i;:::-;8311:63;;8266:118;7917:474;;;;;:::o;8397:182::-;8537:34;8533:1;8525:6;8521:14;8514:58;8397:182;:::o;8585:366::-;8727:3;8748:67;8812:2;8807:3;8748:67;:::i;:::-;8741:74;;8824:93;8913:3;8824:93;:::i;:::-;8942:2;8937:3;8933:12;8926:19;;8585:366;;;:::o;8957:419::-;9123:4;9161:2;9150:9;9146:18;9138:26;;9210:9;9204:4;9200:20;9196:1;9185:9;9181:17;9174:47;9238:131;9364:4;9238:131;:::i;:::-;9230:139;;8957:419;;;:::o;9382:172::-;9522:24;9518:1;9510:6;9506:14;9499:48;9382:172;:::o;9560:366::-;9702:3;9723:67;9787:2;9782:3;9723:67;:::i;:::-;9716:74;;9799:93;9888:3;9799:93;:::i;:::-;9917:2;9912:3;9908:12;9901:19;;9560:366;;;:::o;9932:419::-;10098:4;10136:2;10125:9;10121:18;10113:26;;10185:9;10179:4;10175:20;10171:1;10160:9;10156:17;10149:47;10213:131;10339:4;10213:131;:::i;:::-;10205:139;;9932:419;;;:::o;10357:180::-;10405:77;10402:1;10395:88;10502:4;10499:1;10492:15;10526:4;10523:1;10516:15;10543:320;10587:6;10624:1;10618:4;10614:12;10604:22;;10671:1;10665:4;10661:12;10692:18;10682:81;;10748:4;10740:6;10736:17;10726:27;;10682:81;10810:2;10802:6;10799:14;10779:18;10776:38;10773:84;;10829:18;;:::i;:::-;10773:84;10594:269;10543:320;;;:::o;10869:180::-;10917:77;10914:1;10907:88;11014:4;11011:1;11004:15;11038:4;11035:1;11028:15;11055:410;11095:7;11118:20;11136:1;11118:20;:::i;:::-;11113:25;;11152:20;11170:1;11152:20;:::i;:::-;11147:25;;11207:1;11204;11200:9;11229:30;11247:11;11229:30;:::i;:::-;11218:41;;11408:1;11399:7;11395:15;11392:1;11389:22;11369:1;11362:9;11342:83;11319:139;;11438:18;;:::i;:::-;11319:139;11103:362;11055:410;;;;:::o;11471:180::-;11519:77;11516:1;11509:88;11616:4;11613:1;11606:15;11640:4;11637:1;11630:15;11657:185;11697:1;11714:20;11732:1;11714:20;:::i;:::-;11709:25;;11748:20;11766:1;11748:20;:::i;:::-;11743:25;;11787:1;11777:35;;11792:18;;:::i;:::-;11777:35;11834:1;11831;11827:9;11822:14;;11657:185;;;;:::o;11848:234::-;11988:34;11984:1;11976:6;11972:14;11965:58;12057:17;12052:2;12044:6;12040:15;12033:42;11848:234;:::o;12088:366::-;12230:3;12251:67;12315:2;12310:3;12251:67;:::i;:::-;12244:74;;12327:93;12416:3;12327:93;:::i;:::-;12445:2;12440:3;12436:12;12429:19;;12088:366;;;:::o;12460:419::-;12626:4;12664:2;12653:9;12649:18;12641:26;;12713:9;12707:4;12703:20;12699:1;12688:9;12684:17;12677:47;12741:131;12867:4;12741:131;:::i;:::-;12733:139;;12460:419;;;:::o;12885:194::-;12925:4;12945:20;12963:1;12945:20;:::i;:::-;12940:25;;12979:20;12997:1;12979:20;:::i;:::-;12974:25;;13023:1;13020;13016:9;13008:17;;13047:1;13041:4;13038:11;13035:37;;;13052:18;;:::i;:::-;13035:37;12885:194;;;;:::o;13085:191::-;13125:3;13144:20;13162:1;13144:20;:::i;:::-;13139:25;;13178:20;13196:1;13178:20;:::i;:::-;13173:25;;13221:1;13218;13214:9;13207:16;;13242:3;13239:1;13236:10;13233:36;;;13249:18;;:::i;:::-;13233:36;13085:191;;;;:::o;13282:232::-;13422:34;13418:1;13410:6;13406:14;13399:58;13491:15;13486:2;13478:6;13474:15;13467:40;13282:232;:::o;13520:366::-;13662:3;13683:67;13747:2;13742:3;13683:67;:::i;:::-;13676:74;;13759:93;13848:3;13759:93;:::i;:::-;13877:2;13872:3;13868:12;13861:19;;13520:366;;;:::o;13892:419::-;14058:4;14096:2;14085:9;14081:18;14073:26;;14145:9;14139:4;14135:20;14131:1;14120:9;14116:17;14109:47;14173:131;14299:4;14173:131;:::i;:::-;14165:139;;13892:419;;;:::o;14317:224::-;14457:34;14453:1;14445:6;14441:14;14434:58;14526:7;14521:2;14513:6;14509:15;14502:32;14317:224;:::o;14547:366::-;14689:3;14710:67;14774:2;14769:3;14710:67;:::i;:::-;14703:74;;14786:93;14875:3;14786:93;:::i;:::-;14904:2;14899:3;14895:12;14888:19;;14547:366;;;:::o;14919:419::-;15085:4;15123:2;15112:9;15108:18;15100:26;;15172:9;15166:4;15162:20;15158:1;15147:9;15143:17;15136:47;15200:131;15326:4;15200:131;:::i;:::-;15192:139;;14919:419;;;:::o;15344:223::-;15484:34;15480:1;15472:6;15468:14;15461:58;15553:6;15548:2;15540:6;15536:15;15529:31;15344:223;:::o;15573:366::-;15715:3;15736:67;15800:2;15795:3;15736:67;:::i;:::-;15729:74;;15812:93;15901:3;15812:93;:::i;:::-;15930:2;15925:3;15921:12;15914:19;;15573:366;;;:::o;15945:419::-;16111:4;16149:2;16138:9;16134:18;16126:26;;16198:9;16192:4;16188:20;16184:1;16173:9;16169:17;16162:47;16226:131;16352:4;16226:131;:::i;:::-;16218:139;;15945:419;;;:::o;16370:171::-;16510:23;16506:1;16498:6;16494:14;16487:47;16370:171;:::o;16547:366::-;16689:3;16710:67;16774:2;16769:3;16710:67;:::i;:::-;16703:74;;16786:93;16875:3;16786:93;:::i;:::-;16904:2;16899:3;16895:12;16888:19;;16547:366;;;:::o;16919:419::-;17085:4;17123:2;17112:9;17108:18;17100:26;;17172:9;17166:4;17162:20;17158:1;17147:9;17143:17;17136:47;17200:131;17326:4;17200:131;:::i;:::-;17192:139;;16919:419;;;:::o;17344:225::-;17484:34;17480:1;17472:6;17468:14;17461:58;17553:8;17548:2;17540:6;17536:15;17529:33;17344:225;:::o;17575:366::-;17717:3;17738:67;17802:2;17797:3;17738:67;:::i;:::-;17731:74;;17814:93;17903:3;17814:93;:::i;:::-;17932:2;17927:3;17923:12;17916:19;;17575:366;;;:::o;17947:419::-;18113:4;18151:2;18140:9;18136:18;18128:26;;18200:9;18194:4;18190:20;18186:1;18175:9;18171:17;18164:47;18228:131;18354:4;18228:131;:::i;:::-;18220:139;;17947:419;;;:::o;18372:223::-;18512:34;18508:1;18500:6;18496:14;18489:58;18581:6;18576:2;18568:6;18564:15;18557:31;18372:223;:::o;18601:366::-;18743:3;18764:67;18828:2;18823:3;18764:67;:::i;:::-;18757:74;;18840:93;18929:3;18840:93;:::i;:::-;18958:2;18953:3;18949:12;18942:19;;18601:366;;;:::o;18973:419::-;19139:4;19177:2;19166:9;19162:18;19154:26;;19226:9;19220:4;19216:20;19212:1;19201:9;19197:17;19190:47;19254:131;19380:4;19254:131;:::i;:::-;19246:139;;18973:419;;;:::o;19398:221::-;19538:34;19534:1;19526:6;19522:14;19515:58;19607:4;19602:2;19594:6;19590:15;19583:29;19398:221;:::o;19625:366::-;19767:3;19788:67;19852:2;19847:3;19788:67;:::i;:::-;19781:74;;19864:93;19953:3;19864:93;:::i;:::-;19982:2;19977:3;19973:12;19966:19;;19625:366;;;:::o;19997:419::-;20163:4;20201:2;20190:9;20186:18;20178:26;;20250:9;20244:4;20240:20;20236:1;20225:9;20221:17;20214:47;20278:131;20404:4;20278:131;:::i;:::-;20270:139;;19997:419;;;:::o;20422:179::-;20562:31;20558:1;20550:6;20546:14;20539:55;20422:179;:::o;20607:366::-;20749:3;20770:67;20834:2;20829:3;20770:67;:::i;:::-;20763:74;;20846:93;20935:3;20846:93;:::i;:::-;20964:2;20959:3;20955:12;20948:19;;20607:366;;;:::o;20979:419::-;21145:4;21183:2;21172:9;21168:18;21160:26;;21232:9;21226:4;21222:20;21218:1;21207:9;21203:17;21196:47;21260:131;21386:4;21260:131;:::i;:::-;21252:139;;20979:419;;;:::o;21404:224::-;21544:34;21540:1;21532:6;21528:14;21521:58;21613:7;21608:2;21600:6;21596:15;21589:32;21404:224;:::o;21634:366::-;21776:3;21797:67;21861:2;21856:3;21797:67;:::i;:::-;21790:74;;21873:93;21962:3;21873:93;:::i;:::-;21991:2;21986:3;21982:12;21975:19;;21634:366;;;:::o;22006:419::-;22172:4;22210:2;22199:9;22195:18;22187:26;;22259:9;22253:4;22249:20;22245:1;22234:9;22230:17;22223:47;22287:131;22413:4;22287:131;:::i;:::-;22279:139;;22006:419;;;:::o;22431:222::-;22571:34;22567:1;22559:6;22555:14;22548:58;22640:5;22635:2;22627:6;22623:15;22616:30;22431:222;:::o;22659:366::-;22801:3;22822:67;22886:2;22881:3;22822:67;:::i;:::-;22815:74;;22898:93;22987:3;22898:93;:::i;:::-;23016:2;23011:3;23007:12;23000:19;;22659:366;;;:::o;23031:419::-;23197:4;23235:2;23224:9;23220:18;23212:26;;23284:9;23278:4;23274:20;23270:1;23259:9;23255:17;23248:47;23312:131;23438:4;23312:131;:::i;:::-;23304:139;;23031:419;;;:::o;23456:172::-;23596:24;23592:1;23584:6;23580:14;23573:48;23456:172;:::o;23634:366::-;23776:3;23797:67;23861:2;23856:3;23797:67;:::i;:::-;23790:74;;23873:93;23962:3;23873:93;:::i;:::-;23991:2;23986:3;23982:12;23975:19;;23634:366;;;:::o;24006:419::-;24172:4;24210:2;24199:9;24195:18;24187:26;;24259:9;24253:4;24249:20;24245:1;24234:9;24230:17;24223:47;24287:131;24413:4;24287:131;:::i;:::-;24279:139;;24006:419;;;:::o;24431:240::-;24571:34;24567:1;24559:6;24555:14;24548:58;24640:23;24635:2;24627:6;24623:15;24616:48;24431:240;:::o;24677:366::-;24819:3;24840:67;24904:2;24899:3;24840:67;:::i;:::-;24833:74;;24916:93;25005:3;24916:93;:::i;:::-;25034:2;25029:3;25025:12;25018:19;;24677:366;;;:::o;25049:419::-;25215:4;25253:2;25242:9;25238:18;25230:26;;25302:9;25296:4;25292:20;25288:1;25277:9;25273:17;25266:47;25330:131;25456:4;25330:131;:::i;:::-;25322:139;;25049:419;;;:::o;25474:169::-;25614:21;25610:1;25602:6;25598:14;25591:45;25474:169;:::o;25649:366::-;25791:3;25812:67;25876:2;25871:3;25812:67;:::i;:::-;25805:74;;25888:93;25977:3;25888:93;:::i;:::-;26006:2;26001:3;25997:12;25990:19;;25649:366;;;:::o;26021:419::-;26187:4;26225:2;26214:9;26210:18;26202:26;;26274:9;26268:4;26264:20;26260:1;26249:9;26245:17;26238:47;26302:131;26428:4;26302:131;:::i;:::-;26294:139;;26021:419;;;:::o;26446:241::-;26586:34;26582:1;26574:6;26570:14;26563:58;26655:24;26650:2;26642:6;26638:15;26631:49;26446:241;:::o;26693:366::-;26835:3;26856:67;26920:2;26915:3;26856:67;:::i;:::-;26849:74;;26932:93;27021:3;26932:93;:::i;:::-;27050:2;27045:3;27041:12;27034:19;;26693:366;;;:::o;27065:419::-;27231:4;27269:2;27258:9;27254:18;27246:26;;27318:9;27312:4;27308:20;27304:1;27293:9;27289:17;27282:47;27346:131;27472:4;27346:131;:::i;:::-;27338:139;;27065:419;;;:::o;27490:225::-;27630:34;27626:1;27618:6;27614:14;27607:58;27699:8;27694:2;27686:6;27682:15;27675:33;27490:225;:::o;27721:366::-;27863:3;27884:67;27948:2;27943:3;27884:67;:::i;:::-;27877:74;;27960:93;28049:3;27960:93;:::i;:::-;28078:2;28073:3;28069:12;28062:19;;27721:366;;;:::o;28093:419::-;28259:4;28297:2;28286:9;28282:18;28274:26;;28346:9;28340:4;28336:20;28332:1;28321:9;28317:17;28310:47;28374:131;28500:4;28374:131;:::i;:::-;28366:139;;28093:419;;;:::o;28518:180::-;28566:77;28563:1;28556:88;28663:4;28660:1;28653:15;28687:4;28684:1;28677:15;28704:180;28752:77;28749:1;28742:88;28849:4;28846:1;28839:15;28873:4;28870:1;28863:15;28890:143;28947:5;28978:6;28972:13;28963:22;;28994:33;29021:5;28994:33;:::i;:::-;28890:143;;;;:::o;29039:351::-;29109:6;29158:2;29146:9;29137:7;29133:23;29129:32;29126:119;;;29164:79;;:::i;:::-;29126:119;29284:1;29309:64;29365:7;29356:6;29345:9;29341:22;29309:64;:::i;:::-;29299:74;;29255:128;29039:351;;;;:::o;29396:171::-;29536:23;29532:1;29524:6;29520:14;29513:47;29396:171;:::o;29573:366::-;29715:3;29736:67;29800:2;29795:3;29736:67;:::i;:::-;29729:74;;29812:93;29901:3;29812:93;:::i;:::-;29930:2;29925:3;29921:12;29914:19;;29573:366;;;:::o;29945:419::-;30111:4;30149:2;30138:9;30134:18;30126:26;;30198:9;30192:4;30188:20;30184:1;30173:9;30169:17;30162:47;30226:131;30352:4;30226:131;:::i;:::-;30218:139;;29945:419;;;:::o;30370:85::-;30415:7;30444:5;30433:16;;30370:85;;;:::o;30461:158::-;30519:9;30552:61;30570:42;30579:32;30605:5;30579:32;:::i;:::-;30570:42;:::i;:::-;30552:61;:::i;:::-;30539:74;;30461:158;;;:::o;30625:147::-;30720:45;30759:5;30720:45;:::i;:::-;30715:3;30708:58;30625:147;;:::o;30778:114::-;30845:6;30879:5;30873:12;30863:22;;30778:114;;;:::o;30898:184::-;30997:11;31031:6;31026:3;31019:19;31071:4;31066:3;31062:14;31047:29;;30898:184;;;;:::o;31088:132::-;31155:4;31178:3;31170:11;;31208:4;31203:3;31199:14;31191:22;;31088:132;;;:::o;31226:108::-;31303:24;31321:5;31303:24;:::i;:::-;31298:3;31291:37;31226:108;;:::o;31340:179::-;31409:10;31430:46;31472:3;31464:6;31430:46;:::i;:::-;31508:4;31503:3;31499:14;31485:28;;31340:179;;;;:::o;31525:113::-;31595:4;31627;31622:3;31618:14;31610:22;;31525:113;;;:::o;31674:732::-;31793:3;31822:54;31870:5;31822:54;:::i;:::-;31892:86;31971:6;31966:3;31892:86;:::i;:::-;31885:93;;32002:56;32052:5;32002:56;:::i;:::-;32081:7;32112:1;32097:284;32122:6;32119:1;32116:13;32097:284;;;32198:6;32192:13;32225:63;32284:3;32269:13;32225:63;:::i;:::-;32218:70;;32311:60;32364:6;32311:60;:::i;:::-;32301:70;;32157:224;32144:1;32141;32137:9;32132:14;;32097:284;;;32101:14;32397:3;32390:10;;31798:608;;;31674:732;;;;:::o;32412:831::-;32675:4;32713:3;32702:9;32698:19;32690:27;;32727:71;32795:1;32784:9;32780:17;32771:6;32727:71;:::i;:::-;32808:80;32884:2;32873:9;32869:18;32860:6;32808:80;:::i;:::-;32935:9;32929:4;32925:20;32920:2;32909:9;32905:18;32898:48;32963:108;33066:4;33057:6;32963:108;:::i;:::-;32955:116;;33081:72;33149:2;33138:9;33134:18;33125:6;33081:72;:::i;:::-;33163:73;33231:3;33220:9;33216:19;33207:6;33163:73;:::i;:::-;32412:831;;;;;;;;:::o

Swarm Source

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