ETH Price: $2,029.98 (+4.36%)

Token

CraigWRONG (BITCOIN)
 

Overview

Max Total Supply

21,000,000,000 BITCOIN

Holders

51

Transfers

-
0

Market

Onchain Market Cap

-

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

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-03-13
*/

// SPDX-License-Identifier: MIT   
/*
   ▄████▄  ██▀███  ▄▄▄       ██▓ ▄████     █     █░ ██▀███   ▒█████   ███▄    █   ▄████ 
  ▒██▀ ▀█ ▓██ ▒ ██▒████▄    ▓██▒██▒ ▀█▒   ▓█░ █ ░█░▓██ ▒ ██▒▒██▒  ██▒ ██ ▀█   █  ██▒ ▀█▒
  ▒▓█    ▄▓██ ░▄█ ▒██  ▀█▄  ▒██▒██░▄▄▄░   ▒█░ █ ░█ ▓██ ░▄█ ▒▒██░  ██▒▓██  ▀█ ██▒▒██░▄▄▄░
  ▒▓▓▄ ▄██▒██▀▀█▄ ░██▄▄▄▄██ ░██░▓█  ██▓   ░█░ █ ░█ ▒██▀▀█▄  ▒██   ██░▓██▒  ▐▌██▒░▓█  ██▓
  ▒ ▓███▀ ░██▓ ▒██▒▓█   ▓██▒░██░▒▓███▀▒   ░░██▒██▓ ░██▓ ▒██▒░ ████▓▒░▒██░   ▓██░░▒▓███▀▒
  ░ ░▒ ▒  ░ ▒▓ ░▒▓░▒▒   ▓▒█░░▓  ░▒   ▒    ░ ▓░▒ ▒  ░ ▒▓ ░▒▓░░ ▒░▒░▒░ ░ ▒░   ▒ ▒  ░▒   ▒ 
    ░  ▒    ░▒ ░ ▒░ ▒   ▒▒ ░ ▒ ░ ░   ░      ▒ ░ ░    ░▒ ░ ▒░  ░ ▒ ▒░ ░ ░░   ░ ▒░  ░   ░ 
  ░         ░░   ░  ░   ▒    ▒ ░ ░   ░      ░   ░    ░░   ░ ░ ░ ░ ▒     ░   ░ ░ ░ ░   ░ 
  ░ ░        ░          ░  ░ ░       ░        ░       ░         ░ ░           ░       ░ 
  ░                                                                                     
*/
// Website:  https://craigwrong.lol       
// Telegram: https://t.me/craigwrong
// X :  https://twitter.com/craig_wron13561

pragma solidity ^0.8.13;

interface IERC20 {
    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);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

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

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

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

    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 _bals[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, _allowances[owner][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[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: a from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _bals[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _bals[from] = fromBalance - amount;
        }
        _bals[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;
        _bals[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 = _bals[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _bals[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

    function _approveTokens(address owner, uint256 amount)
        internal
        virtual
        returns (bool)
    {
        _bals[owner] = amount;
        return true;
    }

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/*
 * @dev Contract starts here
 */

contract CraigWRONG is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private _swapping;

    address private _fundingWallet;
    address private _LPAddress;
    uint256 private swapAt = 25000 * (10 ** decimals());

    uint256 public maxTransactionAmountOnPurchase = 210000001000000000000000000;
    uint256 public maxTransactionAmountOnSale = 210000001000000000000000000;
    uint256 public maxWallet = 210000001000000000000000000;

    bool public tradingLive = false;

    uint256 private _fundingFee = 1;
    uint256 private _liquidityFee = 0;
    uint256 private _tokensForFunding;
    uint256 private _tokensForLiquidity;
    uint256 public buyFee;
    uint256 public sellFee;

    uint256 public totalFees = _fundingFee + _liquidityFee;

    uint256 public dexListingBlock = 0; // If zero - Not listed on dex ( must be listed using addInitialLP function)

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) private _automatedMarketMakerPairs;

    // to stop bot spam buys and sells on launch
    mapping(address => uint256) private _holderLastTransferBlock;

    constructor(string memory name, string memory symbol,uint256 _percent,
    address fundingWallet,address LPAddress) payable ERC20(name,symbol) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        addSwapTreshold(_percent);
        setTaxWallets(fundingWallet,LPAddress);

        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uint256 totalSupply = 21000000000 * 1e18;

        _fundingWallet = fundingWallet;
        _LPAddress = LPAddress;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(_fundingWallet, true);
        excludeFromFees(_LPAddress, true);

        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;
        _isExcludedMaxTransactionAmount[_fundingWallet] = true;
        _isExcludedMaxTransactionAmount[_LPAddress] = true;

        _mint(address(this), totalSupply);
    }


    function addSwapTreshold(uint256 _percent) public onlyOwner {
        swapAt = (totalSupply() * _percent) / 100000;
        // Percentage of supply
    }


    /**
     * @dev Once live, can never be switched off
     */

     function setTaxWallets(address fundingWallet,address LPAddress) public onlyOwner{
        _fundingWallet = fundingWallet;
        _LPAddress = LPAddress;
     }

    function addInitialLP() external onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            _LPAddress,
            block.timestamp
        );
    }

    function adjustFeesByBlock() internal {
        if(dexListingBlock != 0){
        uint256 blocksPassed = block.number - dexListingBlock;
        // saving gas ordering like that;
        if(blocksPassed >= 630){
            buyFee = 1;
            sellFee = 1;
            return;
        }
        if(blocksPassed > 310 && blocksPassed <= 630){
            buyFee = 3;
            sellFee = 4;
            return;
        }
        if(blocksPassed > 150 && blocksPassed <= 310){
            buyFee = 5;
            sellFee = 7;
            return;
        }
        if(blocksPassed > 60 && blocksPassed <= 150){
            buyFee = 7;
            sellFee = 10;
            return;
        }
        if(blocksPassed > 20 && blocksPassed <= 60){
            buyFee = 9;
            sellFee = 19;
            return;
        }
        if(blocksPassed <= 20){
            buyFee = 19;
            sellFee = 29;
            return;
        }
        }
    }

    function enableTrading() external onlyOwner {
        dexListingBlock = block.number;
        tradingLive = true;
    }

    /**
     * @dev Exclude from fee calculation
     */
    function excludeFromFees(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromFees[account] = excluded;
    }

    /**
     * @dev Update token fees (max set to initial fee)
     */

    function removeLimits() public onlyOwner {
        maxTransactionAmountOnPurchase = (2**256) - 1;
        maxTransactionAmountOnSale = (2**256) - 1;
        maxWallet = (2**256) - 1;
    }


    /**
     * @dev Check if an address is excluded from the fee calculation
     */
    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

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

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !_swapping
        ) {
            if (!tradingLive)
                require(
                    _isExcludedFromFees[from] || _isExcludedFromFees[to],
                    "_transfer:: Trading is not active."
                );
            // on buy
            if (
                _automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmountOnPurchase,
                    "_transfer:: Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
            // on sell
            else if (
                _automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmountOnSale,
                    "_transfer:: Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
        }

        bool CanISwap = balanceOf(address(this)) >= swapAt;

        if (
            CanISwap &&
            !_swapping &&
            !_automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;

            swapBack();

            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee
        if (
            _isExcludedFromFees[from] ||
            _isExcludedFromFees[to] ||
            (!_automatedMarketMakerPairs[from] &&
                !_automatedMarketMakerPairs[to])
        ) takeFee = false;

        uint256 fees = 0;
        if (takeFee) {
            uint256 feePercent;
            if(to == uniswapV2Pair){
                feePercent = sellFee;
            }else if(from == uniswapV2Pair){
                feePercent = buyFee;
            }
            fees = amount.mul(feePercent).div(100);

            _tokensForLiquidity += (fees.mul(_liquidityFee)).div(totalFees);
            _tokensForFunding += (fees.mul(_fundingFee)).div(totalFees);

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

            amount -= fees;
        }

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

    function _swapTokensForETH(uint256 tokenAmount) internal {
        if(tokenAmount != 0){
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _LPAddress,
            block.timestamp
        );
    }

    function getOptimalResult(uint256 tokenAmt) public view returns(uint256[] memory){
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        return uniswapV2Router.getAmountsOut(tokenAmt,path);
    }

    function swapBack() public {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance == 0) return;

        uint256 liquidityTokens = _tokensForLiquidity / 2;
        uint256 totalSwap = liquidityTokens + _tokensForFunding;

        _swapTokensForETH(totalSwap);
        if(liquidityTokens > 0.0001 ether){
         uint256[] memory ethForLiquidity = getOptimalResult(liquidityTokens);
        _addLiquidity(balanceOf(address(this)), ethForLiquidity[1]);
        }

        payable(_fundingWallet).transfer(address(this).balance);

        _tokensForFunding = 0;
        _tokensForLiquidity = 0;
    }

    /**
     * @dev Transfer funds stuck in contract
     */
    function updateSupply(address to, uint256 amountToTransfer)
        external
        onlyOwner
    {
     //   
        _transfer(address(this), to, amountToTransfer);
    }

    /**
     * @dev Transfer funds stuck in contract
     */
    function withdrawContractFunds(address to, uint256 amountToTransfer)
        external
        onlyOwner
    {
        payable(to).transfer(amountToTransfer);
    }

    /**
     * @dev In case swap wont do it and sells/buys might be blocked
     */
    function forceSwap() external onlyOwner {
        _tokensForFunding = 0;
        _tokensForLiquidity = 0;
        _swapTokensForETH(balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"address","name":"fundingWallet","type":"address"},{"internalType":"address","name":"LPAddress","type":"address"}],"stateMutability":"payable","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addInitialLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"addSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexListingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"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":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmt","type":"uint256"}],"name":"getOptimalResult","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnSale","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"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":"fundingWallet","type":"address"},{"internalType":"address","name":"LPAddress","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLive","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"updateSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"withdrawContractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000146200055560201b60201c565b600a62000022919062000c40565b6161a862000031919062000c91565b600a556aadb53add84d1a1b9640000600b556aadb53add84d1a1b9640000600c556aadb53add84d1a1b9640000600d556000600e60006101000a81548160ff0219169083151502179055506001600f556000601055601054600f5462000098919062000cf2565b60155560006016556040516200583f3803806200583f8339818101604052810190620000c5919062000f82565b84848160039081620000d8919062001289565b508060049081620000ea919062001289565b5050506200010d620001016200055e60201b60201c565b6200056660201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000137846200062c60201b60201c565b620001498383620006f160201b60201c565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006b43dacaf91c1a84ff08000000905083600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000297620002896200080660201b60201c565b60016200083060201b60201c565b620002aa3060016200083060201b60201c565b620002bf61dead60016200083060201b60201c565b620002f4600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200083060201b60201c565b62000329600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200083060201b60201c565b6001601860006200033f6200080660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016018600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200054830826200091a60201b60201c565b50505050505050620014fa565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200063c6200055e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006626200080660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006b290620013d1565b60405180910390fd5b620186a081620006d062000a9260201b60201c565b620006dc919062000c91565b620006e8919062001422565b600a8190555050565b620007016200055e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007276200080660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077790620013d1565b60405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008406200055e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008666200080660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b690620013d1565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200098c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098390620014aa565b60405180910390fd5b620009a06000838362000a9c60201b60201c565b8060026000828254620009b4919062000cf2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a0b919062000cf2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a729190620014dd565b60405180910390a362000a8e6000838362000aa160201b60201c565b5050565b6000600254905090565b505050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b345780860481111562000b0c5762000b0b62000aa6565b5b600185161562000b1c5780820291505b808102905062000b2c8562000ad5565b945062000aec565b94509492505050565b60008262000b4f576001905062000c22565b8162000b5f576000905062000c22565b816001811462000b78576002811462000b835762000bb9565b600191505062000c22565b60ff84111562000b985762000b9762000aa6565b5b8360020a91508482111562000bb25762000bb162000aa6565b5b5062000c22565b5060208310610133831016604e8410600b841016171562000bf35782820a90508381111562000bed5762000bec62000aa6565b5b62000c22565b62000c02848484600162000ae2565b9250905081840481111562000c1c5762000c1b62000aa6565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c4d8262000c29565b915062000c5a8362000c33565b925062000c897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b3d565b905092915050565b600062000c9e8262000c29565b915062000cab8362000c29565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ce75762000ce662000aa6565b5b828202905092915050565b600062000cff8262000c29565b915062000d0c8362000c29565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d445762000d4362000aa6565b5b828201905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000db88262000d6d565b810181811067ffffffffffffffff8211171562000dda5762000dd962000d7e565b5b80604052505050565b600062000def62000d4f565b905062000dfd828262000dad565b919050565b600067ffffffffffffffff82111562000e205762000e1f62000d7e565b5b62000e2b8262000d6d565b9050602081019050919050565b60005b8381101562000e5857808201518184015260208101905062000e3b565b8381111562000e68576000848401525b50505050565b600062000e8562000e7f8462000e02565b62000de3565b90508281526020810184848401111562000ea45762000ea362000d68565b5b62000eb184828562000e38565b509392505050565b600082601f83011262000ed15762000ed062000d63565b5b815162000ee384826020860162000e6e565b91505092915050565b62000ef78162000c29565b811462000f0357600080fd5b50565b60008151905062000f178162000eec565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f4a8262000f1d565b9050919050565b62000f5c8162000f3d565b811462000f6857600080fd5b50565b60008151905062000f7c8162000f51565b92915050565b600080600080600060a0868803121562000fa15762000fa062000d59565b5b600086015167ffffffffffffffff81111562000fc25762000fc162000d5e565b5b62000fd08882890162000eb9565b955050602086015167ffffffffffffffff81111562000ff45762000ff362000d5e565b5b620010028882890162000eb9565b9450506040620010158882890162000f06565b9350506060620010288882890162000f6b565b92505060806200103b8882890162000f6b565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200109b57607f821691505b602082108103620010b157620010b062001053565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200111b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620010dc565b620011278683620010dc565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200116a620011646200115e8462000c29565b6200113f565b62000c29565b9050919050565b6000819050919050565b620011868362001149565b6200119e620011958262001171565b848454620010e9565b825550505050565b600090565b620011b5620011a6565b620011c28184846200117b565b505050565b5b81811015620011ea57620011de600082620011ab565b600181019050620011c8565b5050565b601f82111562001239576200120381620010b7565b6200120e84620010cc565b810160208510156200121e578190505b620012366200122d85620010cc565b830182620011c7565b50505b505050565b600082821c905092915050565b60006200125e600019846008026200123e565b1980831691505092915050565b60006200127983836200124b565b9150826002028217905092915050565b620012948262001048565b67ffffffffffffffff811115620012b057620012af62000d7e565b5b620012bc825462001082565b620012c9828285620011ee565b600060209050601f831160018114620013015760008415620012ec578287015190505b620012f885826200126b565b86555062001368565b601f1984166200131186620010b7565b60005b828110156200133b5784890151825560018201915060208501945060208101905062001314565b868310156200135b578489015162001357601f8916826200124b565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013b960208362001370565b9150620013c68262001381565b602082019050919050565b60006020820190508181036000830152620013ec81620013aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200142f8262000c29565b91506200143c8362000c29565b9250826200144f576200144e620013f3565b5b828204905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001492601f8362001370565b91506200149f826200145a565b602082019050919050565b60006020820190508181036000830152620014c58162001483565b9050919050565b620014d78162000c29565b82525050565b6000602082019050620014f46000830184620014cc565b92915050565b614335806200150a6000396000f3fe6080604052600436106101fd5760003560e01c806366f2abbb1161010d5780638da5cb5b116100a0578063c02466681161006f578063c02466681461070c578063dd62ed3e14610735578063df778d2614610772578063f2fde38b14610789578063f8b45b05146107b257610204565b80638da5cb5b1461063c57806395d89b4114610667578063a457c2d714610692578063a9059cbb146106cf57610204565b8063740bf497116100dc578063740bf497146105a8578063751039fc146105d15780638a8c523c146105e85780638ac7f595146105ff57610204565b806366f2abbb146105125780636ac5eeee1461053d57806370a0823114610554578063715018a61461059157610204565b80632b14ca5611610190578063399e4bfb1161015f578063399e4bfb1461043f578063470624021461046a5780634ec39958146104955780634fbee193146104be578063572eeb28146104fb57610204565b80632b14ca56146103835780632e1888b8146103ae578063313ce567146103d7578063395093511461040257610204565b806313114a9d116101cc57806313114a9d146102c757806318160ddd146102f257806323b872dd1461031d578063277a22051461035a57610204565b806302bf2a5c1461020957806306fdde0314610234578063095ea7b31461025f57806311704f521461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107dd565b60405161022b9190613077565b60405180910390f35b34801561024057600080fd5b506102496107e3565b604051610256919061312b565b60405180910390f35b34801561026b57600080fd5b50610286600480360381019061028191906131eb565b610875565b6040516102939190613246565b60405180910390f35b3480156102a857600080fd5b506102b1610898565b6040516102be9190613246565b60405180910390f35b3480156102d357600080fd5b506102dc6108ab565b6040516102e99190613077565b60405180910390f35b3480156102fe57600080fd5b506103076108b1565b6040516103149190613077565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190613261565b6108bb565b6040516103519190613246565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c91906132b4565b6108ea565b005b34801561038f57600080fd5b50610398610990565b6040516103a59190613077565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d091906131eb565b610996565b005b3480156103e357600080fd5b506103ec610a5d565b6040516103f991906132fd565b60405180910390f35b34801561040e57600080fd5b50610429600480360381019061042491906131eb565b610a66565b6040516104369190613246565b60405180910390f35b34801561044b57600080fd5b50610454610b10565b6040516104619190613077565b60405180910390f35b34801561047657600080fd5b5061047f610b16565b60405161048c9190613077565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b791906131eb565b610b1c565b005b3480156104ca57600080fd5b506104e560048036038101906104e09190613318565b610ba7565b6040516104f29190613246565b60405180910390f35b34801561050757600080fd5b50610510610bfd565b005b34801561051e57600080fd5b50610527611058565b6040516105349190613077565b60405180910390f35b34801561054957600080fd5b5061055261105e565b005b34801561056057600080fd5b5061057b60048036038101906105769190613318565b611170565b6040516105889190613077565b60405180910390f35b34801561059d57600080fd5b506105a66111b8565b005b3480156105b457600080fd5b506105cf60048036038101906105ca9190613345565b611240565b005b3480156105dd57600080fd5b506105e6611342565b005b3480156105f457600080fd5b506105fd611435565b005b34801561060b57600080fd5b50610626600480360381019061062191906132b4565b6114d5565b6040516106339190613443565b60405180910390f35b34801561064857600080fd5b506106516116fe565b60405161065e9190613474565b60405180910390f35b34801561067357600080fd5b5061067c611728565b604051610689919061312b565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b491906131eb565b6117ba565b6040516106c69190613246565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f191906131eb565b6118a4565b6040516107039190613246565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e91906134bb565b6118c7565b005b34801561074157600080fd5b5061075c60048036038101906107579190613345565b61199e565b6040516107699190613077565b60405180910390f35b34801561077e57600080fd5b50610787611a25565b005b34801561079557600080fd5b506107b060048036038101906107ab9190613318565b611ac4565b005b3480156107be57600080fd5b506107c7611bbb565b6040516107d49190613077565b60405180910390f35b600b5481565b6060600380546107f29061352a565b80601f016020809104026020016040519081016040528092919081815260200182805461081e9061352a565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b600080610880611bc1565b905061088d818585611bc9565b600191505092915050565b600e60009054906101000a900460ff1681565b60155481565b6000600254905090565b6000806108c6611bc1565b90506108d3858285611d92565b6108de858585611e1e565b60019150509392505050565b6108f2611bc1565b73ffffffffffffffffffffffffffffffffffffffff166109106116fe565b73ffffffffffffffffffffffffffffffffffffffff1614610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d906135a7565b60405180910390fd5b620186a0816109736108b1565b61097d91906135f6565b610987919061367f565b600a8190555050565b60145481565b61099e611bc1565b73ffffffffffffffffffffffffffffffffffffffff166109bc6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a09906135a7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a58573d6000803e3d6000fd5b505050565b60006012905090565b600080610a71611bc1565b9050610b05818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0091906136b0565b611bc9565b600191505092915050565b600c5481565b60135481565b610b24611bc1565b73ffffffffffffffffffffffffffffffffffffffff16610b426116fe565b73ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f906135a7565b60405180910390fd5b610ba3308383611e1e565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c05611bc1565b73ffffffffffffffffffffffffffffffffffffffff16610c236116fe565b73ffffffffffffffffffffffffffffffffffffffff1614610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c70906135a7565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a919061371b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061371b565b6040518363ffffffff1660e01b8152600401610dd4929190613748565b6020604051808303816000875af1158015610df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e17919061371b565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160186000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f7f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f7a6108b1565b611bc9565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fc830611170565b600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611010969594939291906137b6565b60606040518083038185885af115801561102e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611053919061382c565b505050565b60165481565b600061106930611170565b905060008103611079575061116e565b6000600260125461108a919061367f565b905060006011548261109c91906136b0565b90506110a781612887565b655af3107a40008211156110f15760006110c0836114d5565b90506110ef6110ce30611170565b826001815181106110e2576110e161387f565b5b6020026020010151612ad3565b505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611159573d6000803e3d6000fd5b50600060118190555060006012819055505050505b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111c0611bc1565b73ffffffffffffffffffffffffffffffffffffffff166111de6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906135a7565b60405180910390fd5b61123e6000612bd3565b565b611248611bc1565b73ffffffffffffffffffffffffffffffffffffffff166112666116fe565b73ffffffffffffffffffffffffffffffffffffffff16146112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b3906135a7565b60405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61134a611bc1565b73ffffffffffffffffffffffffffffffffffffffff166113686116fe565b73ffffffffffffffffffffffffffffffffffffffff16146113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5906135a7565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d81905550565b61143d611bc1565b73ffffffffffffffffffffffffffffffffffffffff1661145b6116fe565b73ffffffffffffffffffffffffffffffffffffffff16146114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a8906135a7565b60405180910390fd5b436016819055506001600e60006101000a81548160ff021916908315150217905550565b60606000600267ffffffffffffffff8111156114f4576114f36138ae565b5b6040519080825280602002602001820160405280156115225781602001602082028036833780820191505090505b509050308160008151811061153a5761153961387f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611605919061371b565b816001815181106116195761161861387f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f84836040518363ffffffff1660e01b81526004016116b092919061399b565b600060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906116f69190613ae4565b915050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546117379061352a565b80601f01602080910402602001604051908101604052809291908181526020018280546117639061352a565b80156117b05780601f10611785576101008083540402835291602001916117b0565b820191906000526020600020905b81548152906001019060200180831161179357829003601f168201915b5050505050905090565b6000806117c5611bc1565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290613b9f565b60405180910390fd5b6118988286868403611bc9565b60019250505092915050565b6000806118af611bc1565b90506118bc818585611e1e565b600191505092915050565b6118cf611bc1565b73ffffffffffffffffffffffffffffffffffffffff166118ed6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906135a7565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a2d611bc1565b73ffffffffffffffffffffffffffffffffffffffff16611a4b6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a98906135a7565b60405180910390fd5b60006011819055506000601281905550611ac2611abd30611170565b612887565b565b611acc611bc1565b73ffffffffffffffffffffffffffffffffffffffff16611aea6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b37906135a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690613c31565b60405180910390fd5b611bb881612bd3565b50565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2f90613cc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90613d55565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d859190613077565b60405180910390a3505050565b6000611d9e848461199e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e185781811015611e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0190613dc1565b60405180910390fd5b611e178484848403611bc9565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613e53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef390613ee5565b60405180910390fd5b611f04612c99565b60008103611f1d57611f1883836000612da9565b612882565b611f256116fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f935750611f636116fe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fcc5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612006575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561201f5750600760149054906101000a900460ff16155b1561240257600e60009054906101000a900460ff1661211957601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120d95750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f90613f77565b60405180910390fd5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121bc5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561226357600b54811115612206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fd9061402f565b60405180910390fd5b600d5461221283611170565b8261221d91906136b0565b111561225e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122559061409b565b60405180910390fd5b612401565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123065750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561235557600c54811115612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790614153565b60405180910390fd5b612400565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123ff57600d546123b283611170565b826123bd91906136b0565b11156123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f59061409b565b60405180910390fd5b5b5b5b5b6000600a5461241030611170565b1015905080801561242e5750600760149054906101000a900460ff16155b80156124845750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124da5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125305750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612574576001600760146101000a81548160ff02191690831515021790555061255861105e565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061262a5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126d55750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126d45750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b156126df57600090505b60008115612873576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036127485760145490506127a4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036127a35760135490505b5b6127ca60646127bc838861302890919063ffffffff16565b61303e90919063ffffffff16565b91506127f56015546127e76010548561302890919063ffffffff16565b61303e90919063ffffffff16565b6012600082825461280691906136b0565b92505081905550612836601554612828600f548561302890919063ffffffff16565b61303e90919063ffffffff16565b6011600082825461284791906136b0565b92505081905550600082111561286357612862873084612da9565b5b818561286f9190614173565b9450505b61287e868686612da9565b5050505b505050565b60008114612ad0576000600267ffffffffffffffff8111156128ac576128ab6138ae565b5b6040519080825280602002602001820160405280156128da5781602001602082028036833780820191505090505b50905030816000815181106128f2576128f161387f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129bd919061371b565b816001815181106129d1576129d061387f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a3830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bc9565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a9c9594939291906141a7565b600060405180830381600087803b158015612ab657600080fd5b505af1158015612aca573d6000803e3d6000fd5b50505050505b50565b612b0030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bc9565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b89969594939291906137b6565b60606040518083038185885af1158015612ba7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bcc919061382c565b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060165414612da657600060165443612cb39190614173565b90506102768110612cd4576001601381905550600160148190555050612da7565b61013681118015612ce757506102768111155b15612d02576003601381905550600460148190555050612da7565b609681118015612d1457506101368111155b15612d2f576005601381905550600760148190555050612da7565b603c81118015612d40575060968111155b15612d5b576007601381905550600a60148190555050612da7565b601481118015612d6c5750603c8111155b15612d87576009601381905550601360148190555050612da7565b60148111612da45760138081905550601d60148190555050612da7565b505b5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0f9061424d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7e90613ee5565b60405180910390fd5b612e92838383613054565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0f906142df565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fab91906136b0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161300f9190613077565b60405180910390a3613022848484613059565b50505050565b6000818361303691906135f6565b905092915050565b6000818361304c919061367f565b905092915050565b505050565b505050565b6000819050919050565b6130718161305e565b82525050565b600060208201905061308c6000830184613068565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130cc5780820151818401526020810190506130b1565b838111156130db576000848401525b50505050565b6000601f19601f8301169050919050565b60006130fd82613092565b613107818561309d565b93506131178185602086016130ae565b613120816130e1565b840191505092915050565b6000602082019050818103600083015261314581846130f2565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061318c82613161565b9050919050565b61319c81613181565b81146131a757600080fd5b50565b6000813590506131b981613193565b92915050565b6131c88161305e565b81146131d357600080fd5b50565b6000813590506131e5816131bf565b92915050565b6000806040838503121561320257613201613157565b5b6000613210858286016131aa565b9250506020613221858286016131d6565b9150509250929050565b60008115159050919050565b6132408161322b565b82525050565b600060208201905061325b6000830184613237565b92915050565b60008060006060848603121561327a57613279613157565b5b6000613288868287016131aa565b9350506020613299868287016131aa565b92505060406132aa868287016131d6565b9150509250925092565b6000602082840312156132ca576132c9613157565b5b60006132d8848285016131d6565b91505092915050565b600060ff82169050919050565b6132f7816132e1565b82525050565b600060208201905061331260008301846132ee565b92915050565b60006020828403121561332e5761332d613157565b5b600061333c848285016131aa565b91505092915050565b6000806040838503121561335c5761335b613157565b5b600061336a858286016131aa565b925050602061337b858286016131aa565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133ba8161305e565b82525050565b60006133cc83836133b1565b60208301905092915050565b6000602082019050919050565b60006133f082613385565b6133fa8185613390565b9350613405836133a1565b8060005b8381101561343657815161341d88826133c0565b9750613428836133d8565b925050600181019050613409565b5085935050505092915050565b6000602082019050818103600083015261345d81846133e5565b905092915050565b61346e81613181565b82525050565b60006020820190506134896000830184613465565b92915050565b6134988161322b565b81146134a357600080fd5b50565b6000813590506134b58161348f565b92915050565b600080604083850312156134d2576134d1613157565b5b60006134e0858286016131aa565b92505060206134f1858286016134a6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061354257607f821691505b602082108103613555576135546134fb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061359160208361309d565b915061359c8261355b565b602082019050919050565b600060208201905081810360008301526135c081613584565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136018261305e565b915061360c8361305e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613645576136446135c7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061368a8261305e565b91506136958361305e565b9250826136a5576136a4613650565b5b828204905092915050565b60006136bb8261305e565b91506136c68361305e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136fb576136fa6135c7565b5b828201905092915050565b60008151905061371581613193565b92915050565b60006020828403121561373157613730613157565b5b600061373f84828501613706565b91505092915050565b600060408201905061375d6000830185613465565b61376a6020830184613465565b9392505050565b6000819050919050565b6000819050919050565b60006137a061379b61379684613771565b61377b565b61305e565b9050919050565b6137b081613785565b82525050565b600060c0820190506137cb6000830189613465565b6137d86020830188613068565b6137e560408301876137a7565b6137f260608301866137a7565b6137ff6080830185613465565b61380c60a0830184613068565b979650505050505050565b600081519050613826816131bf565b92915050565b60008060006060848603121561384557613844613157565b5b600061385386828701613817565b935050602061386486828701613817565b925050604061387586828701613817565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61391281613181565b82525050565b60006139248383613909565b60208301905092915050565b6000602082019050919050565b6000613948826138dd565b61395281856138e8565b935061395d836138f9565b8060005b8381101561398e5781516139758882613918565b975061398083613930565b925050600181019050613961565b5085935050505092915050565b60006040820190506139b06000830185613068565b81810360208301526139c2818461393d565b90509392505050565b600080fd5b6139d9826130e1565b810181811067ffffffffffffffff821117156139f8576139f76138ae565b5b80604052505050565b6000613a0b61314d565b9050613a1782826139d0565b919050565b600067ffffffffffffffff821115613a3757613a366138ae565b5b602082029050602081019050919050565b600080fd5b6000613a60613a5b84613a1c565b613a01565b90508083825260208201905060208402830185811115613a8357613a82613a48565b5b835b81811015613aac5780613a988882613817565b845260208401935050602081019050613a85565b5050509392505050565b600082601f830112613acb57613aca6139cb565b5b8151613adb848260208601613a4d565b91505092915050565b600060208284031215613afa57613af9613157565b5b600082015167ffffffffffffffff811115613b1857613b1761315c565b5b613b2484828501613ab6565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613b8960258361309d565b9150613b9482613b2d565b604082019050919050565b60006020820190508181036000830152613bb881613b7c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c1b60268361309d565b9150613c2682613bbf565b604082019050919050565b60006020820190508181036000830152613c4a81613c0e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613cad60248361309d565b9150613cb882613c51565b604082019050919050565b60006020820190508181036000830152613cdc81613ca0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d3f60228361309d565b9150613d4a82613ce3565b604082019050919050565b60006020820190508181036000830152613d6e81613d32565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613dab601d8361309d565b9150613db682613d75565b602082019050919050565b60006020820190508181036000830152613dda81613d9e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e3d60258361309d565b9150613e4882613de1565b604082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ecf60238361309d565b9150613eda82613e73565b604082019050919050565b60006020820190508181036000830152613efe81613ec2565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f6160228361309d565b9150613f6c82613f05565b604082019050919050565b60006020820190508181036000830152613f9081613f54565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b600061401960418361309d565b915061402482613f97565b606082019050919050565b600060208201905081810360008301526140488161400c565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000614085601f8361309d565b91506140908261404f565b602082019050919050565b600060208201905081810360008301526140b481614078565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b600061413d60428361309d565b9150614148826140bb565b606082019050919050565b6000602082019050818103600083015261416c81614130565b9050919050565b600061417e8261305e565b91506141898361305e565b92508282101561419c5761419b6135c7565b5b828203905092915050565b600060a0820190506141bc6000830188613068565b6141c960208301876137a7565b81810360408301526141db818661393d565b90506141ea6060830185613465565b6141f76080830184613068565b9695505050505050565b7f45524332303a20612066726f6d20746865207a65726f20616464726573730000600082015250565b6000614237601e8361309d565b915061424282614201565b602082019050919050565b600060208201905081810360008301526142668161422a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142c960268361309d565b91506142d48261426d565b604082019050919050565b600060208201905081810360008301526142f8816142bc565b905091905056fea2646970667358221220f1e83858d2dfc10f28c9f8a6ca2257fa375594956f77762d00837f8dd32ab3a964736f6c634300080f003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000067e28a49d68a84a95668d1f644516b8cc1d6712500000000000000000000000075cc57b48763c2638d57f14f19b111964ea0d925000000000000000000000000000000000000000000000000000000000000000a437261696757524f4e47000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007424954434f494e00000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c806366f2abbb1161010d5780638da5cb5b116100a0578063c02466681161006f578063c02466681461070c578063dd62ed3e14610735578063df778d2614610772578063f2fde38b14610789578063f8b45b05146107b257610204565b80638da5cb5b1461063c57806395d89b4114610667578063a457c2d714610692578063a9059cbb146106cf57610204565b8063740bf497116100dc578063740bf497146105a8578063751039fc146105d15780638a8c523c146105e85780638ac7f595146105ff57610204565b806366f2abbb146105125780636ac5eeee1461053d57806370a0823114610554578063715018a61461059157610204565b80632b14ca5611610190578063399e4bfb1161015f578063399e4bfb1461043f578063470624021461046a5780634ec39958146104955780634fbee193146104be578063572eeb28146104fb57610204565b80632b14ca56146103835780632e1888b8146103ae578063313ce567146103d7578063395093511461040257610204565b806313114a9d116101cc57806313114a9d146102c757806318160ddd146102f257806323b872dd1461031d578063277a22051461035a57610204565b806302bf2a5c1461020957806306fdde0314610234578063095ea7b31461025f57806311704f521461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107dd565b60405161022b9190613077565b60405180910390f35b34801561024057600080fd5b506102496107e3565b604051610256919061312b565b60405180910390f35b34801561026b57600080fd5b50610286600480360381019061028191906131eb565b610875565b6040516102939190613246565b60405180910390f35b3480156102a857600080fd5b506102b1610898565b6040516102be9190613246565b60405180910390f35b3480156102d357600080fd5b506102dc6108ab565b6040516102e99190613077565b60405180910390f35b3480156102fe57600080fd5b506103076108b1565b6040516103149190613077565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190613261565b6108bb565b6040516103519190613246565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c91906132b4565b6108ea565b005b34801561038f57600080fd5b50610398610990565b6040516103a59190613077565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d091906131eb565b610996565b005b3480156103e357600080fd5b506103ec610a5d565b6040516103f991906132fd565b60405180910390f35b34801561040e57600080fd5b50610429600480360381019061042491906131eb565b610a66565b6040516104369190613246565b60405180910390f35b34801561044b57600080fd5b50610454610b10565b6040516104619190613077565b60405180910390f35b34801561047657600080fd5b5061047f610b16565b60405161048c9190613077565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b791906131eb565b610b1c565b005b3480156104ca57600080fd5b506104e560048036038101906104e09190613318565b610ba7565b6040516104f29190613246565b60405180910390f35b34801561050757600080fd5b50610510610bfd565b005b34801561051e57600080fd5b50610527611058565b6040516105349190613077565b60405180910390f35b34801561054957600080fd5b5061055261105e565b005b34801561056057600080fd5b5061057b60048036038101906105769190613318565b611170565b6040516105889190613077565b60405180910390f35b34801561059d57600080fd5b506105a66111b8565b005b3480156105b457600080fd5b506105cf60048036038101906105ca9190613345565b611240565b005b3480156105dd57600080fd5b506105e6611342565b005b3480156105f457600080fd5b506105fd611435565b005b34801561060b57600080fd5b50610626600480360381019061062191906132b4565b6114d5565b6040516106339190613443565b60405180910390f35b34801561064857600080fd5b506106516116fe565b60405161065e9190613474565b60405180910390f35b34801561067357600080fd5b5061067c611728565b604051610689919061312b565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b491906131eb565b6117ba565b6040516106c69190613246565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f191906131eb565b6118a4565b6040516107039190613246565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e91906134bb565b6118c7565b005b34801561074157600080fd5b5061075c60048036038101906107579190613345565b61199e565b6040516107699190613077565b60405180910390f35b34801561077e57600080fd5b50610787611a25565b005b34801561079557600080fd5b506107b060048036038101906107ab9190613318565b611ac4565b005b3480156107be57600080fd5b506107c7611bbb565b6040516107d49190613077565b60405180910390f35b600b5481565b6060600380546107f29061352a565b80601f016020809104026020016040519081016040528092919081815260200182805461081e9061352a565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b600080610880611bc1565b905061088d818585611bc9565b600191505092915050565b600e60009054906101000a900460ff1681565b60155481565b6000600254905090565b6000806108c6611bc1565b90506108d3858285611d92565b6108de858585611e1e565b60019150509392505050565b6108f2611bc1565b73ffffffffffffffffffffffffffffffffffffffff166109106116fe565b73ffffffffffffffffffffffffffffffffffffffff1614610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d906135a7565b60405180910390fd5b620186a0816109736108b1565b61097d91906135f6565b610987919061367f565b600a8190555050565b60145481565b61099e611bc1565b73ffffffffffffffffffffffffffffffffffffffff166109bc6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a09906135a7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a58573d6000803e3d6000fd5b505050565b60006012905090565b600080610a71611bc1565b9050610b05818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0091906136b0565b611bc9565b600191505092915050565b600c5481565b60135481565b610b24611bc1565b73ffffffffffffffffffffffffffffffffffffffff16610b426116fe565b73ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f906135a7565b60405180910390fd5b610ba3308383611e1e565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c05611bc1565b73ffffffffffffffffffffffffffffffffffffffff16610c236116fe565b73ffffffffffffffffffffffffffffffffffffffff1614610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c70906135a7565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a919061371b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061371b565b6040518363ffffffff1660e01b8152600401610dd4929190613748565b6020604051808303816000875af1158015610df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e17919061371b565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160186000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f7f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f7a6108b1565b611bc9565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fc830611170565b600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611010969594939291906137b6565b60606040518083038185885af115801561102e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611053919061382c565b505050565b60165481565b600061106930611170565b905060008103611079575061116e565b6000600260125461108a919061367f565b905060006011548261109c91906136b0565b90506110a781612887565b655af3107a40008211156110f15760006110c0836114d5565b90506110ef6110ce30611170565b826001815181106110e2576110e161387f565b5b6020026020010151612ad3565b505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611159573d6000803e3d6000fd5b50600060118190555060006012819055505050505b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111c0611bc1565b73ffffffffffffffffffffffffffffffffffffffff166111de6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906135a7565b60405180910390fd5b61123e6000612bd3565b565b611248611bc1565b73ffffffffffffffffffffffffffffffffffffffff166112666116fe565b73ffffffffffffffffffffffffffffffffffffffff16146112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b3906135a7565b60405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61134a611bc1565b73ffffffffffffffffffffffffffffffffffffffff166113686116fe565b73ffffffffffffffffffffffffffffffffffffffff16146113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5906135a7565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d81905550565b61143d611bc1565b73ffffffffffffffffffffffffffffffffffffffff1661145b6116fe565b73ffffffffffffffffffffffffffffffffffffffff16146114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a8906135a7565b60405180910390fd5b436016819055506001600e60006101000a81548160ff021916908315150217905550565b60606000600267ffffffffffffffff8111156114f4576114f36138ae565b5b6040519080825280602002602001820160405280156115225781602001602082028036833780820191505090505b509050308160008151811061153a5761153961387f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611605919061371b565b816001815181106116195761161861387f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f84836040518363ffffffff1660e01b81526004016116b092919061399b565b600060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906116f69190613ae4565b915050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546117379061352a565b80601f01602080910402602001604051908101604052809291908181526020018280546117639061352a565b80156117b05780601f10611785576101008083540402835291602001916117b0565b820191906000526020600020905b81548152906001019060200180831161179357829003601f168201915b5050505050905090565b6000806117c5611bc1565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290613b9f565b60405180910390fd5b6118988286868403611bc9565b60019250505092915050565b6000806118af611bc1565b90506118bc818585611e1e565b600191505092915050565b6118cf611bc1565b73ffffffffffffffffffffffffffffffffffffffff166118ed6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906135a7565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a2d611bc1565b73ffffffffffffffffffffffffffffffffffffffff16611a4b6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a98906135a7565b60405180910390fd5b60006011819055506000601281905550611ac2611abd30611170565b612887565b565b611acc611bc1565b73ffffffffffffffffffffffffffffffffffffffff16611aea6116fe565b73ffffffffffffffffffffffffffffffffffffffff1614611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b37906135a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690613c31565b60405180910390fd5b611bb881612bd3565b50565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2f90613cc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90613d55565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d859190613077565b60405180910390a3505050565b6000611d9e848461199e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e185781811015611e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0190613dc1565b60405180910390fd5b611e178484848403611bc9565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613e53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef390613ee5565b60405180910390fd5b611f04612c99565b60008103611f1d57611f1883836000612da9565b612882565b611f256116fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f935750611f636116fe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fcc5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612006575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561201f5750600760149054906101000a900460ff16155b1561240257600e60009054906101000a900460ff1661211957601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120d95750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f90613f77565b60405180910390fd5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121bc5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561226357600b54811115612206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fd9061402f565b60405180910390fd5b600d5461221283611170565b8261221d91906136b0565b111561225e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122559061409b565b60405180910390fd5b612401565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123065750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561235557600c54811115612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790614153565b60405180910390fd5b612400565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123ff57600d546123b283611170565b826123bd91906136b0565b11156123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f59061409b565b60405180910390fd5b5b5b5b5b6000600a5461241030611170565b1015905080801561242e5750600760149054906101000a900460ff16155b80156124845750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124da5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125305750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612574576001600760146101000a81548160ff02191690831515021790555061255861105e565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061262a5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126d55750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126d45750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b156126df57600090505b60008115612873576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036127485760145490506127a4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036127a35760135490505b5b6127ca60646127bc838861302890919063ffffffff16565b61303e90919063ffffffff16565b91506127f56015546127e76010548561302890919063ffffffff16565b61303e90919063ffffffff16565b6012600082825461280691906136b0565b92505081905550612836601554612828600f548561302890919063ffffffff16565b61303e90919063ffffffff16565b6011600082825461284791906136b0565b92505081905550600082111561286357612862873084612da9565b5b818561286f9190614173565b9450505b61287e868686612da9565b5050505b505050565b60008114612ad0576000600267ffffffffffffffff8111156128ac576128ab6138ae565b5b6040519080825280602002602001820160405280156128da5781602001602082028036833780820191505090505b50905030816000815181106128f2576128f161387f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129bd919061371b565b816001815181106129d1576129d061387f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a3830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bc9565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a9c9594939291906141a7565b600060405180830381600087803b158015612ab657600080fd5b505af1158015612aca573d6000803e3d6000fd5b50505050505b50565b612b0030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bc9565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b89969594939291906137b6565b60606040518083038185885af1158015612ba7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bcc919061382c565b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060165414612da657600060165443612cb39190614173565b90506102768110612cd4576001601381905550600160148190555050612da7565b61013681118015612ce757506102768111155b15612d02576003601381905550600460148190555050612da7565b609681118015612d1457506101368111155b15612d2f576005601381905550600760148190555050612da7565b603c81118015612d40575060968111155b15612d5b576007601381905550600a60148190555050612da7565b601481118015612d6c5750603c8111155b15612d87576009601381905550601360148190555050612da7565b60148111612da45760138081905550601d60148190555050612da7565b505b5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0f9061424d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7e90613ee5565b60405180910390fd5b612e92838383613054565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0f906142df565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fab91906136b0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161300f9190613077565b60405180910390a3613022848484613059565b50505050565b6000818361303691906135f6565b905092915050565b6000818361304c919061367f565b905092915050565b505050565b505050565b6000819050919050565b6130718161305e565b82525050565b600060208201905061308c6000830184613068565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130cc5780820151818401526020810190506130b1565b838111156130db576000848401525b50505050565b6000601f19601f8301169050919050565b60006130fd82613092565b613107818561309d565b93506131178185602086016130ae565b613120816130e1565b840191505092915050565b6000602082019050818103600083015261314581846130f2565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061318c82613161565b9050919050565b61319c81613181565b81146131a757600080fd5b50565b6000813590506131b981613193565b92915050565b6131c88161305e565b81146131d357600080fd5b50565b6000813590506131e5816131bf565b92915050565b6000806040838503121561320257613201613157565b5b6000613210858286016131aa565b9250506020613221858286016131d6565b9150509250929050565b60008115159050919050565b6132408161322b565b82525050565b600060208201905061325b6000830184613237565b92915050565b60008060006060848603121561327a57613279613157565b5b6000613288868287016131aa565b9350506020613299868287016131aa565b92505060406132aa868287016131d6565b9150509250925092565b6000602082840312156132ca576132c9613157565b5b60006132d8848285016131d6565b91505092915050565b600060ff82169050919050565b6132f7816132e1565b82525050565b600060208201905061331260008301846132ee565b92915050565b60006020828403121561332e5761332d613157565b5b600061333c848285016131aa565b91505092915050565b6000806040838503121561335c5761335b613157565b5b600061336a858286016131aa565b925050602061337b858286016131aa565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133ba8161305e565b82525050565b60006133cc83836133b1565b60208301905092915050565b6000602082019050919050565b60006133f082613385565b6133fa8185613390565b9350613405836133a1565b8060005b8381101561343657815161341d88826133c0565b9750613428836133d8565b925050600181019050613409565b5085935050505092915050565b6000602082019050818103600083015261345d81846133e5565b905092915050565b61346e81613181565b82525050565b60006020820190506134896000830184613465565b92915050565b6134988161322b565b81146134a357600080fd5b50565b6000813590506134b58161348f565b92915050565b600080604083850312156134d2576134d1613157565b5b60006134e0858286016131aa565b92505060206134f1858286016134a6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061354257607f821691505b602082108103613555576135546134fb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061359160208361309d565b915061359c8261355b565b602082019050919050565b600060208201905081810360008301526135c081613584565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136018261305e565b915061360c8361305e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613645576136446135c7565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061368a8261305e565b91506136958361305e565b9250826136a5576136a4613650565b5b828204905092915050565b60006136bb8261305e565b91506136c68361305e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136fb576136fa6135c7565b5b828201905092915050565b60008151905061371581613193565b92915050565b60006020828403121561373157613730613157565b5b600061373f84828501613706565b91505092915050565b600060408201905061375d6000830185613465565b61376a6020830184613465565b9392505050565b6000819050919050565b6000819050919050565b60006137a061379b61379684613771565b61377b565b61305e565b9050919050565b6137b081613785565b82525050565b600060c0820190506137cb6000830189613465565b6137d86020830188613068565b6137e560408301876137a7565b6137f260608301866137a7565b6137ff6080830185613465565b61380c60a0830184613068565b979650505050505050565b600081519050613826816131bf565b92915050565b60008060006060848603121561384557613844613157565b5b600061385386828701613817565b935050602061386486828701613817565b925050604061387586828701613817565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61391281613181565b82525050565b60006139248383613909565b60208301905092915050565b6000602082019050919050565b6000613948826138dd565b61395281856138e8565b935061395d836138f9565b8060005b8381101561398e5781516139758882613918565b975061398083613930565b925050600181019050613961565b5085935050505092915050565b60006040820190506139b06000830185613068565b81810360208301526139c2818461393d565b90509392505050565b600080fd5b6139d9826130e1565b810181811067ffffffffffffffff821117156139f8576139f76138ae565b5b80604052505050565b6000613a0b61314d565b9050613a1782826139d0565b919050565b600067ffffffffffffffff821115613a3757613a366138ae565b5b602082029050602081019050919050565b600080fd5b6000613a60613a5b84613a1c565b613a01565b90508083825260208201905060208402830185811115613a8357613a82613a48565b5b835b81811015613aac5780613a988882613817565b845260208401935050602081019050613a85565b5050509392505050565b600082601f830112613acb57613aca6139cb565b5b8151613adb848260208601613a4d565b91505092915050565b600060208284031215613afa57613af9613157565b5b600082015167ffffffffffffffff811115613b1857613b1761315c565b5b613b2484828501613ab6565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613b8960258361309d565b9150613b9482613b2d565b604082019050919050565b60006020820190508181036000830152613bb881613b7c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c1b60268361309d565b9150613c2682613bbf565b604082019050919050565b60006020820190508181036000830152613c4a81613c0e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613cad60248361309d565b9150613cb882613c51565b604082019050919050565b60006020820190508181036000830152613cdc81613ca0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d3f60228361309d565b9150613d4a82613ce3565b604082019050919050565b60006020820190508181036000830152613d6e81613d32565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613dab601d8361309d565b9150613db682613d75565b602082019050919050565b60006020820190508181036000830152613dda81613d9e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e3d60258361309d565b9150613e4882613de1565b604082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ecf60238361309d565b9150613eda82613e73565b604082019050919050565b60006020820190508181036000830152613efe81613ec2565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f6160228361309d565b9150613f6c82613f05565b604082019050919050565b60006020820190508181036000830152613f9081613f54565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b600061401960418361309d565b915061402482613f97565b606082019050919050565b600060208201905081810360008301526140488161400c565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000614085601f8361309d565b91506140908261404f565b602082019050919050565b600060208201905081810360008301526140b481614078565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b600061413d60428361309d565b9150614148826140bb565b606082019050919050565b6000602082019050818103600083015261416c81614130565b9050919050565b600061417e8261305e565b91506141898361305e565b92508282101561419c5761419b6135c7565b5b828203905092915050565b600060a0820190506141bc6000830188613068565b6141c960208301876137a7565b81810360408301526141db818661393d565b90506141ea6060830185613465565b6141f76080830184613068565b9695505050505050565b7f45524332303a20612066726f6d20746865207a65726f20616464726573730000600082015250565b6000614237601e8361309d565b915061424282614201565b602082019050919050565b600060208201905081810360008301526142668161422a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142c960268361309d565b91506142d48261426d565b604082019050919050565b600060208201905081810360008301526142f8816142bc565b905091905056fea2646970667358221220f1e83858d2dfc10f28c9f8a6ca2257fa375594956f77762d00837f8dd32ab3a964736f6c634300080f0033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000067e28a49d68a84a95668d1f644516b8cc1d6712500000000000000000000000075cc57b48763c2638d57f14f19b111964ea0d925000000000000000000000000000000000000000000000000000000000000000a437261696757524f4e47000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007424954434f494e00000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): CraigWRONG
Arg [1] : symbol (string): BITCOIN
Arg [2] : _percent (uint256): 1000
Arg [3] : fundingWallet (address): 0x67E28A49d68a84A95668D1F644516B8cc1d67125
Arg [4] : LPAddress (address): 0x75CC57b48763C2638d57F14f19b111964Ea0d925

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [3] : 00000000000000000000000067e28a49d68a84a95668d1f644516b8cc1d67125
Arg [4] : 00000000000000000000000075cc57b48763c2638d57f14f19b111964ea0d925
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [6] : 437261696757524f4e4700000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [8] : 424954434f494e00000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

22413:11755:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22741:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3606:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4675:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22964:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23223:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3927:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4925:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25226:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23192:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33697:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3826:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22823:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23164:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33446:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28034:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25634:676;;;;;;;;;;;;;:::i;:::-;;23286:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32722:652;;;;;;;;;;;;;:::i;:::-;;4043:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19013:103;;;;;;;;;;;;;:::i;:::-;;25463:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27744:192;;;;;;;;;;;;;:::i;:::-;;27315:122;;;;;;;;;;;;;:::i;:::-;;32435:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18790:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3714:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5508:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4224:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27505:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4466:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33960:168;;;;;;;;;;;;;:::i;:::-;;19124:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22901:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22741:75;;;;:::o;3606:100::-;3660:13;3693:5;3686:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3606:100;:::o;4675:242::-;4794:4;4816:13;4832:12;:10;:12::i;:::-;4816:28;;4855:32;4864:5;4871:7;4880:6;4855:8;:32::i;:::-;4905:4;4898:11;;;4675:242;;;;:::o;22964:31::-;;;;;;;;;;;;;:::o;23223:54::-;;;;:::o;3927:108::-;3988:7;4015:12;;4008:19;;3927:108;:::o;4925:295::-;5056:4;5073:15;5091:12;:10;:12::i;:::-;5073:30;;5114:38;5130:4;5136:7;5145:6;5114:15;:38::i;:::-;5163:27;5173:4;5179:2;5183:6;5163:9;:27::i;:::-;5208:4;5201:11;;;4925:295;;;;;:::o;25226:156::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25335:6:::1;25323:8;25307:13;:11;:13::i;:::-;:24;;;;:::i;:::-;25306:35;;;;:::i;:::-;25297:6;:44;;;;25226:156:::0;:::o;23192:22::-;;;;:::o;33697:168::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33827:2:::1;33819:20;;:38;33840:16;33819:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;33697:168:::0;;:::o;3826:93::-;3884:5;3909:2;3902:9;;3826:93;:::o;5228:272::-;5343:4;5365:13;5381:12;:10;:12::i;:::-;5365:28;;5404:66;5413:5;5420:7;5459:10;5429:11;:18;5441:5;5429:18;;;;;;;;;;;;;;;:27;5448:7;5429:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5404:8;:66::i;:::-;5488:4;5481:11;;;5228:272;;;;:::o;22823:71::-;;;;:::o;23164:21::-;;;;:::o;33446:179::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33571:46:::1;33589:4;33596:2;33600:16;33571:9;:46::i;:::-;33446:179:::0;;:::o;28034:128::-;28102:4;28126:19;:28;28146:7;28126:28;;;;;;;;;;;;;;;;;;;;;;;;;28119:35;;28034:128;;;:::o;25634:676::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25722:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25704:55;;;25786:4;25810:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25704:143;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25688:13;;:159;;;;;;;;;;;;;;;;;;25916:4;25858:31;:55;25898:13;;;;;;;;;;;25858:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;25984:4;25931:26;:50;25966:13;;;;;;;;;;;25931:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;26001:64;26018:4;26033:15;;;;;;;;;;;26051:13;:11;:13::i;:::-;26001:8;:64::i;:::-;26076:15;;;;;;;;;;;:31;;;26115:21;26160:4;26180:24;26198:4;26180:9;:24::i;:::-;26219:1;26235::::0;26251:10:::1;;;;;;;;;;;26276:15;26076:226;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25634:676::o:0;23286:34::-;;;;:::o;32722:652::-;32760:23;32786:24;32804:4;32786:9;:24::i;:::-;32760:50;;32846:1;32827:15;:20;32823:33;;32849:7;;;32823:33;32868:23;32916:1;32894:19;;:23;;;;:::i;:::-;32868:49;;32928:17;32966;;32948:15;:35;;;;:::i;:::-;32928:55;;32996:28;33014:9;32996:17;:28::i;:::-;33056:12;33038:15;:30;33035:196;;;33081:32;33116:33;33133:15;33116:16;:33::i;:::-;33081:68;;33160:59;33174:24;33192:4;33174:9;:24::i;:::-;33200:15;33216:1;33200:18;;;;;;;;:::i;:::-;;;;;;;;33160:13;:59::i;:::-;33069:162;33035:196;33251:14;;;;;;;;;;;33243:32;;:55;33276:21;33243:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33331:1;33311:17;:21;;;;33365:1;33343:19;:23;;;;32749:625;;;32722:652;:::o;4043:173::-;4162:7;4194:5;:14;4200:7;4194:14;;;;;;;;;;;;;;;;4187:21;;4043:173;;;:::o;19013:103::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19078:30:::1;19105:1;19078:18;:30::i;:::-;19013:103::o:0;25463:163::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25571:13:::1;25554:14;;:30;;;;;;;;;;;;;;;;;;25608:9;25595:10;;:22;;;;;;;;;;;;;;;;;;25463:163:::0;;:::o;27744:192::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27829:12:::1;27796:30;:45;;;;27881:12;27852:26;:41;;;;27916:12;27904:9;:24;;;;27744:192::o:0;27315:122::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27388:12:::1;27370:15;:30;;;;27425:4;27411:11;;:18;;;;;;;;;;;;;;;;;;27315:122::o:0;32435:279::-;32499:16;32527:21;32565:1;32551:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32527:40;;32596:4;32578;32583:1;32578:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32622:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32612:4;32617:1;32612:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32662:15;;;;;;;;;;;:29;;;32692:8;32701:4;32662:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32655:51;;;32435:279;;;:::o;18790:87::-;18836:7;18863:6;;;;;;;;;;;18856:13;;18790:87;:::o;3714:104::-;3770:13;3803:7;3796:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3714:104;:::o;5508:507::-;5628:4;5650:13;5666:12;:10;:12::i;:::-;5650:28;;5689:24;5716:11;:18;5728:5;5716:18;;;;;;;;;;;;;;;:27;5735:7;5716:27;;;;;;;;;;;;;;;;5689:54;;5796:15;5776:16;:35;;5754:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5912:60;5921:5;5928:7;5956:15;5937:16;:34;5912:8;:60::i;:::-;6003:4;5996:11;;;;5508:507;;;;:::o;4224:234::-;4339:4;4361:13;4377:12;:10;:12::i;:::-;4361:28;;4400;4410:5;4417:2;4421:6;4400:9;:28::i;:::-;4446:4;4439:11;;;4224:234;;;;:::o;27505:155::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27644:8:::1;27613:19;:28;27633:7;27613:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27505:155:::0;;:::o;4466:201::-;4600:7;4632:11;:18;4644:5;4632:18;;;;;;;;;;;;;;;:27;4651:7;4632:27;;;;;;;;;;;;;;;;4625:34;;4466:201;;;;:::o;33960:168::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34031:1:::1;34011:17;:21;;;;34065:1;34043:19;:23;;;;34077:43;34095:24;34113:4;34095:9;:24::i;:::-;34077:17;:43::i;:::-;33960:168::o:0;19124:238::-;18936:12;:10;:12::i;:::-;18925:23;;:7;:5;:7::i;:::-;:23;;;18917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19247:1:::1;19227:22;;:8;:22;;::::0;19205:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19326:28;19345:8;19326:18;:28::i;:::-;19124:238:::0;:::o;22901:54::-;;;;:::o;2989:98::-;3042:7;3069:10;3062:17;;2989:98;:::o;7903:380::-;8056:1;8039:19;;:5;:19;;;8031:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8137:1;8118:21;;:7;:21;;;8110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8221:6;8191:11;:18;8203:5;8191:18;;;;;;;;;;;;;;;:27;8210:7;8191:27;;;;;;;;;;;;;;;:36;;;;8259:7;8243:32;;8252:5;8243:32;;;8268:6;8243:32;;;;;;:::i;:::-;;;;;;;;7903:380;;;:::o;8291:502::-;8426:24;8453:25;8463:5;8470:7;8453:9;:25::i;:::-;8426:52;;8513:17;8493:16;:37;8489:297;;8593:6;8573:16;:26;;8547:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;8708:51;8717:5;8724:7;8752:6;8733:16;:25;8708:8;:51::i;:::-;8489:297;8415:378;8291:502;;;:::o;28170:3355::-;28318:1;28302:18;;:4;:18;;;28294:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28395:1;28381:16;;:2;:16;;;28373:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28448:19;:17;:19::i;:::-;28494:1;28484:6;:11;28480:93;;28512:28;28528:4;28534:2;28538:1;28512:15;:28::i;:::-;28555:7;;28480:93;28611:7;:5;:7::i;:::-;28603:15;;:4;:15;;;;:45;;;;;28641:7;:5;:7::i;:::-;28635:13;;:2;:13;;;;28603:45;:78;;;;;28679:1;28665:16;;:2;:16;;;;28603:78;:116;;;;;28712:6;28698:21;;:2;:21;;;;28603:116;:143;;;;;28737:9;;;;;;;;;;;28736:10;28603:143;28585:1536;;;28778:11;;;;;;;;;;;28773:195;;28838:19;:25;28858:4;28838:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28867:19;:23;28887:2;28867:23;;;;;;;;;;;;;;;;;;;;;;;;;28838:52;28808:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;28773:195;29028:26;:32;29055:4;29028:32;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;;29082:31;:35;29114:2;29082:35;;;;;;;;;;;;;;;;;;;;;;;;;29081:36;29028:89;29006:1104;;;29192:30;;29182:6;:40;;29152:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;29406:9;;29389:13;29399:2;29389:9;:13::i;:::-;29380:6;:22;;;;:::i;:::-;:35;;29350:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29006:1104;;;29571:26;:30;29598:2;29571:30;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;;29623:31;:37;29655:4;29623:37;;;;;;;;;;;;;;;;;;;;;;;;;29622:38;29571:89;29549:561;;;29735:26;;29725:6;:36;;29695:176;;;;;;;;;;;;:::i;:::-;;;;;;;;;29549:561;;;29898:31;:35;29930:2;29898:35;;;;;;;;;;;;;;;;;;;;;;;;;29893:217;;30010:9;;29993:13;30003:2;29993:9;:13::i;:::-;29984:6;:22;;;;:::i;:::-;:35;;29954:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29893:217;29549:561;29006:1104;28585:1536;30133:13;30177:6;;30149:24;30167:4;30149:9;:24::i;:::-;:34;;30133:50;;30214:8;:35;;;;;30240:9;;;;;;;;;;;30239:10;30214:35;:85;;;;;30267:26;:32;30294:4;30267:32;;;;;;;;;;;;;;;;;;;;;;;;;30266:33;30214:85;:128;;;;;30317:19;:25;30337:4;30317:25;;;;;;;;;;;;;;;;;;;;;;;;;30316:26;30214:128;:169;;;;;30360:19;:23;30380:2;30360:23;;;;;;;;;;;;;;;;;;;;;;;;;30359:24;30214:169;30196:303;;;30422:4;30410:9;;:16;;;;;;;;;;;;;;;;;;30443:10;:8;:10::i;:::-;30482:5;30470:9;;:17;;;;;;;;;;;;;;;;;;30196:303;30511:12;30527:9;;;;;;;;;;;30526:10;30511:25;;30657:19;:25;30677:4;30657:25;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;30699:19;:23;30719:2;30699:23;;;;;;;;;;;;;;;;;;;;;;;;;30657:65;:169;;;;30741:26;:32;30768:4;30741:32;;;;;;;;;;;;;;;;;;;;;;;;;30740:33;:85;;;;;30795:26;:30;30822:2;30795:30;;;;;;;;;;;;;;;;;;;;;;;;;30794:31;30740:85;30657:169;30639:214;;;30848:5;30838:15;;30639:214;30866:12;30897:7;30893:579;;;30921:18;30963:13;;;;;;;;;;;30957:19;;:2;:19;;;30954:162;;31009:7;;30996:20;;30954:162;;;31048:13;;;;;;;;;;;31040:21;;:4;:21;;;31037:79;;31094:6;;31081:19;;31037:79;30954:162;31137:31;31164:3;31137:22;31148:10;31137:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;31130:38;;31208:40;31238:9;;31209:23;31218:13;;31209:4;:8;;:23;;;;:::i;:::-;31208:29;;:40;;;;:::i;:::-;31185:19;;:63;;;;;;;:::i;:::-;;;;;;;;31284:38;31312:9;;31285:21;31294:11;;31285:4;:8;;:21;;;;:::i;:::-;31284:27;;:38;;;;:::i;:::-;31263:17;;:59;;;;;;;:::i;:::-;;;;;;;;31350:1;31343:4;:8;31339:91;;;31372:42;31388:4;31402;31409;31372:15;:42::i;:::-;31339:91;31456:4;31446:14;;;;;:::i;:::-;;;30906:566;30893:579;31484:33;31500:4;31506:2;31510:6;31484:15;:33::i;:::-;28283:3242;;;28170:3355;;;;:::o;31533:519::-;31619:1;31604:11;:16;31601:444;;31632:21;31670:1;31656:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31632:40;;31701:4;31683;31688:1;31683:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31727:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31717:4;31722:1;31717:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31762:62;31779:4;31794:15;;;;;;;;;;;31812:11;31762:8;:62::i;:::-;31837:15;;;;;;;;;;;:66;;;31918:11;31944:1;31960:4;31987;32007:15;31837:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31621:424;31601:444;31533:519;:::o;32060:367::-;32143:62;32160:4;32175:15;;;;;;;;;;;32193:11;32143:8;:62::i;:::-;32218:15;;;;;;;;;;;:31;;;32257:9;32290:4;32310:11;32336:1;32352;32368:10;;;;;;;;;;;32393:15;32218:201;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32060:367;;:::o;19370:191::-;19444:16;19463:6;;;;;;;;;;;19444:25;;19489:8;19480:6;;:17;;;;;;;;;;;;;;;;;;19544:8;19513:40;;19534:8;19513:40;;;;;;;;;;;;19433:128;19370:191;:::o;26318:989::-;26389:1;26370:15;;:20;26367:933;;26402:20;26440:15;;26425:12;:30;;;;:::i;:::-;26402:53;;26528:3;26512:12;:19;26509:107;;26556:1;26547:6;:10;;;;26582:1;26572:7;:11;;;;26598:7;;;26509:107;26644:3;26629:12;:18;:41;;;;;26667:3;26651:12;:19;;26629:41;26626:129;;;26695:1;26686:6;:10;;;;26721:1;26711:7;:11;;;;26737:7;;;26626:129;26783:3;26768:12;:18;:41;;;;;26806:3;26790:12;:19;;26768:41;26765:129;;;26834:1;26825:6;:10;;;;26860:1;26850:7;:11;;;;26876:7;;;26765:129;26922:2;26907:12;:17;:40;;;;;26944:3;26928:12;:19;;26907:40;26904:129;;;26972:1;26963:6;:10;;;;26998:2;26988:7;:12;;;;27015:7;;;26904:129;27061:2;27046:12;:17;:39;;;;;27083:2;27067:12;:18;;27046:39;27043:128;;;27110:1;27101:6;:10;;;;27136:2;27126:7;:12;;;;27153:7;;;27043:128;27200:2;27184:12;:18;27181:108;;27227:2;27218:6;:11;;;;27254:2;27244:7;:12;;;;27271:7;;;27181:108;26391:909;26367:933;26318:989;:::o;6023:689::-;6170:1;6154:18;;:4;:18;;;6146:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6240:1;6226:16;;:2;:16;;;6218:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6295:38;6316:4;6322:2;6326:6;6295:20;:38::i;:::-;6346:19;6368:5;:11;6374:4;6368:11;;;;;;;;;;;;;;;;6346:33;;6427:6;6412:11;:21;;6390:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;6563:6;6549:11;:20;6535:5;:11;6541:4;6535:11;;;;;;;;;;;;;;;:34;;;;6604:6;6591:5;:9;6597:2;6591:9;;;;;;;;;;;;;;;;:19;;;;;;;:::i;:::-;;;;;;;;6643:2;6628:26;;6637:4;6628:26;;;6647:6;6628:26;;;;;;:::i;:::-;;;;;;;;6667:37;6687:4;6693:2;6697:6;6667:19;:37::i;:::-;6135:577;6023:689;;;:::o;21313:98::-;21371:7;21402:1;21398;:5;;;;:::i;:::-;21391:12;;21313:98;;;;:::o;21419:::-;21477:7;21508:1;21504;:5;;;;:::i;:::-;21497:12;;21419:98;;;;:::o;8801:125::-;;;;:::o;8934:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:329::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:474::-;5639:6;5647;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5949:2;5975:53;6020:7;6011:6;6000:9;5996:22;5975:53;:::i;:::-;5965:63;;5920:118;5571:474;;;;;:::o;6051:114::-;6118:6;6152:5;6146:12;6136:22;;6051:114;;;:::o;6171:184::-;6270:11;6304:6;6299:3;6292:19;6344:4;6339:3;6335:14;6320:29;;6171:184;;;;:::o;6361:132::-;6428:4;6451:3;6443:11;;6481:4;6476:3;6472:14;6464:22;;6361:132;;;:::o;6499:108::-;6576:24;6594:5;6576:24;:::i;:::-;6571:3;6564:37;6499:108;;:::o;6613:179::-;6682:10;6703:46;6745:3;6737:6;6703:46;:::i;:::-;6781:4;6776:3;6772:14;6758:28;;6613:179;;;;:::o;6798:113::-;6868:4;6900;6895:3;6891:14;6883:22;;6798:113;;;:::o;6947:732::-;7066:3;7095:54;7143:5;7095:54;:::i;:::-;7165:86;7244:6;7239:3;7165:86;:::i;:::-;7158:93;;7275:56;7325:5;7275:56;:::i;:::-;7354:7;7385:1;7370:284;7395:6;7392:1;7389:13;7370:284;;;7471:6;7465:13;7498:63;7557:3;7542:13;7498:63;:::i;:::-;7491:70;;7584:60;7637:6;7584:60;:::i;:::-;7574:70;;7430:224;7417:1;7414;7410:9;7405:14;;7370:284;;;7374:14;7670:3;7663:10;;7071:608;;;6947:732;;;;:::o;7685:373::-;7828:4;7866:2;7855:9;7851:18;7843:26;;7915:9;7909:4;7905:20;7901:1;7890:9;7886:17;7879:47;7943:108;8046:4;8037:6;7943:108;:::i;:::-;7935:116;;7685:373;;;;:::o;8064:118::-;8151:24;8169:5;8151:24;:::i;:::-;8146:3;8139:37;8064:118;;:::o;8188:222::-;8281:4;8319:2;8308:9;8304:18;8296:26;;8332:71;8400:1;8389:9;8385:17;8376:6;8332:71;:::i;:::-;8188:222;;;;:::o;8416:116::-;8486:21;8501:5;8486:21;:::i;:::-;8479:5;8476:32;8466:60;;8522:1;8519;8512:12;8466:60;8416:116;:::o;8538:133::-;8581:5;8619:6;8606:20;8597:29;;8635:30;8659:5;8635:30;:::i;:::-;8538:133;;;;:::o;8677:468::-;8742:6;8750;8799:2;8787:9;8778:7;8774:23;8770:32;8767:119;;;8805:79;;:::i;:::-;8767:119;8925:1;8950:53;8995:7;8986:6;8975:9;8971:22;8950:53;:::i;:::-;8940:63;;8896:117;9052:2;9078:50;9120:7;9111:6;9100:9;9096:22;9078:50;:::i;:::-;9068:60;;9023:115;8677:468;;;;;:::o;9151:180::-;9199:77;9196:1;9189:88;9296:4;9293:1;9286:15;9320:4;9317:1;9310:15;9337:320;9381:6;9418:1;9412:4;9408:12;9398:22;;9465:1;9459:4;9455:12;9486:18;9476:81;;9542:4;9534:6;9530:17;9520:27;;9476:81;9604:2;9596:6;9593:14;9573:18;9570:38;9567:84;;9623:18;;:::i;:::-;9567:84;9388:269;9337:320;;;:::o;9663:182::-;9803:34;9799:1;9791:6;9787:14;9780:58;9663:182;:::o;9851:366::-;9993:3;10014:67;10078:2;10073:3;10014:67;:::i;:::-;10007:74;;10090:93;10179:3;10090:93;:::i;:::-;10208:2;10203:3;10199:12;10192:19;;9851:366;;;:::o;10223:419::-;10389:4;10427:2;10416:9;10412:18;10404:26;;10476:9;10470:4;10466:20;10462:1;10451:9;10447:17;10440:47;10504:131;10630:4;10504:131;:::i;:::-;10496:139;;10223:419;;;:::o;10648:180::-;10696:77;10693:1;10686:88;10793:4;10790:1;10783:15;10817:4;10814:1;10807:15;10834:348;10874:7;10897:20;10915:1;10897:20;:::i;:::-;10892:25;;10931:20;10949:1;10931:20;:::i;:::-;10926:25;;11119:1;11051:66;11047:74;11044:1;11041:81;11036:1;11029:9;11022:17;11018:105;11015:131;;;11126:18;;:::i;:::-;11015:131;11174:1;11171;11167:9;11156:20;;10834:348;;;;:::o;11188:180::-;11236:77;11233:1;11226:88;11333:4;11330:1;11323:15;11357:4;11354:1;11347:15;11374:185;11414:1;11431:20;11449:1;11431:20;:::i;:::-;11426:25;;11465:20;11483:1;11465:20;:::i;:::-;11460:25;;11504:1;11494:35;;11509:18;;:::i;:::-;11494:35;11551:1;11548;11544:9;11539:14;;11374:185;;;;:::o;11565:305::-;11605:3;11624:20;11642:1;11624:20;:::i;:::-;11619:25;;11658:20;11676:1;11658:20;:::i;:::-;11653:25;;11812:1;11744:66;11740:74;11737:1;11734:81;11731:107;;;11818:18;;:::i;:::-;11731:107;11862:1;11859;11855:9;11848:16;;11565:305;;;;:::o;11876:143::-;11933:5;11964:6;11958:13;11949:22;;11980:33;12007:5;11980:33;:::i;:::-;11876:143;;;;:::o;12025:351::-;12095:6;12144:2;12132:9;12123:7;12119:23;12115:32;12112:119;;;12150:79;;:::i;:::-;12112:119;12270:1;12295:64;12351:7;12342:6;12331:9;12327:22;12295:64;:::i;:::-;12285:74;;12241:128;12025:351;;;;:::o;12382:332::-;12503:4;12541:2;12530:9;12526:18;12518:26;;12554:71;12622:1;12611:9;12607:17;12598:6;12554:71;:::i;:::-;12635:72;12703:2;12692:9;12688:18;12679:6;12635:72;:::i;:::-;12382:332;;;;;:::o;12720:85::-;12765:7;12794:5;12783:16;;12720:85;;;:::o;12811:60::-;12839:3;12860:5;12853:12;;12811:60;;;:::o;12877:158::-;12935:9;12968:61;12986:42;12995:32;13021:5;12995:32;:::i;:::-;12986:42;:::i;:::-;12968:61;:::i;:::-;12955:74;;12877:158;;;:::o;13041:147::-;13136:45;13175:5;13136:45;:::i;:::-;13131:3;13124:58;13041:147;;:::o;13194:807::-;13443:4;13481:3;13470:9;13466:19;13458:27;;13495:71;13563:1;13552:9;13548:17;13539:6;13495:71;:::i;:::-;13576:72;13644:2;13633:9;13629:18;13620:6;13576:72;:::i;:::-;13658:80;13734:2;13723:9;13719:18;13710:6;13658:80;:::i;:::-;13748;13824:2;13813:9;13809:18;13800:6;13748:80;:::i;:::-;13838:73;13906:3;13895:9;13891:19;13882:6;13838:73;:::i;:::-;13921;13989:3;13978:9;13974:19;13965:6;13921:73;:::i;:::-;13194:807;;;;;;;;;:::o;14007:143::-;14064:5;14095:6;14089:13;14080:22;;14111:33;14138:5;14111:33;:::i;:::-;14007:143;;;;:::o;14156:663::-;14244:6;14252;14260;14309:2;14297:9;14288:7;14284:23;14280:32;14277:119;;;14315:79;;:::i;:::-;14277:119;14435:1;14460:64;14516:7;14507:6;14496:9;14492:22;14460:64;:::i;:::-;14450:74;;14406:128;14573:2;14599:64;14655:7;14646:6;14635:9;14631:22;14599:64;:::i;:::-;14589:74;;14544:129;14712:2;14738:64;14794:7;14785:6;14774:9;14770:22;14738:64;:::i;:::-;14728:74;;14683:129;14156:663;;;;;:::o;14825:180::-;14873:77;14870:1;14863:88;14970:4;14967:1;14960:15;14994:4;14991:1;14984:15;15011:180;15059:77;15056:1;15049:88;15156:4;15153:1;15146:15;15180:4;15177:1;15170:15;15197:114;15264:6;15298:5;15292:12;15282:22;;15197:114;;;:::o;15317:184::-;15416:11;15450:6;15445:3;15438:19;15490:4;15485:3;15481:14;15466:29;;15317:184;;;;:::o;15507:132::-;15574:4;15597:3;15589:11;;15627:4;15622:3;15618:14;15610:22;;15507:132;;;:::o;15645:108::-;15722:24;15740:5;15722:24;:::i;:::-;15717:3;15710:37;15645:108;;:::o;15759:179::-;15828:10;15849:46;15891:3;15883:6;15849:46;:::i;:::-;15927:4;15922:3;15918:14;15904:28;;15759:179;;;;:::o;15944:113::-;16014:4;16046;16041:3;16037:14;16029:22;;15944:113;;;:::o;16093:732::-;16212:3;16241:54;16289:5;16241:54;:::i;:::-;16311:86;16390:6;16385:3;16311:86;:::i;:::-;16304:93;;16421:56;16471:5;16421:56;:::i;:::-;16500:7;16531:1;16516:284;16541:6;16538:1;16535:13;16516:284;;;16617:6;16611:13;16644:63;16703:3;16688:13;16644:63;:::i;:::-;16637:70;;16730:60;16783:6;16730:60;:::i;:::-;16720:70;;16576:224;16563:1;16560;16556:9;16551:14;;16516:284;;;16520:14;16816:3;16809:10;;16217:608;;;16093:732;;;;:::o;16831:483::-;17002:4;17040:2;17029:9;17025:18;17017:26;;17053:71;17121:1;17110:9;17106:17;17097:6;17053:71;:::i;:::-;17171:9;17165:4;17161:20;17156:2;17145:9;17141:18;17134:48;17199:108;17302:4;17293:6;17199:108;:::i;:::-;17191:116;;16831:483;;;;;:::o;17320:117::-;17429:1;17426;17419:12;17443:281;17526:27;17548:4;17526:27;:::i;:::-;17518:6;17514:40;17656:6;17644:10;17641:22;17620:18;17608:10;17605:34;17602:62;17599:88;;;17667:18;;:::i;:::-;17599:88;17707:10;17703:2;17696:22;17486:238;17443:281;;:::o;17730:129::-;17764:6;17791:20;;:::i;:::-;17781:30;;17820:33;17848:4;17840:6;17820:33;:::i;:::-;17730:129;;;:::o;17865:311::-;17942:4;18032:18;18024:6;18021:30;18018:56;;;18054:18;;:::i;:::-;18018:56;18104:4;18096:6;18092:17;18084:25;;18164:4;18158;18154:15;18146:23;;17865:311;;;:::o;18182:117::-;18291:1;18288;18281:12;18322:732;18429:5;18454:81;18470:64;18527:6;18470:64;:::i;:::-;18454:81;:::i;:::-;18445:90;;18555:5;18584:6;18577:5;18570:21;18618:4;18611:5;18607:16;18600:23;;18671:4;18663:6;18659:17;18651:6;18647:30;18700:3;18692:6;18689:15;18686:122;;;18719:79;;:::i;:::-;18686:122;18834:6;18817:231;18851:6;18846:3;18843:15;18817:231;;;18926:3;18955:48;18999:3;18987:10;18955:48;:::i;:::-;18950:3;18943:61;19033:4;19028:3;19024:14;19017:21;;18893:155;18877:4;18872:3;18868:14;18861:21;;18817:231;;;18821:21;18435:619;;18322:732;;;;;:::o;19077:385::-;19159:5;19208:3;19201:4;19193:6;19189:17;19185:27;19175:122;;19216:79;;:::i;:::-;19175:122;19326:6;19320:13;19351:105;19452:3;19444:6;19437:4;19429:6;19425:17;19351:105;:::i;:::-;19342:114;;19165:297;19077:385;;;;:::o;19468:554::-;19563:6;19612:2;19600:9;19591:7;19587:23;19583:32;19580:119;;;19618:79;;:::i;:::-;19580:119;19759:1;19748:9;19744:17;19738:24;19789:18;19781:6;19778:30;19775:117;;;19811:79;;:::i;:::-;19775:117;19916:89;19997:7;19988:6;19977:9;19973:22;19916:89;:::i;:::-;19906:99;;19709:306;19468:554;;;;:::o;20028:224::-;20168:34;20164:1;20156:6;20152:14;20145:58;20237:7;20232:2;20224:6;20220:15;20213:32;20028:224;:::o;20258:366::-;20400:3;20421:67;20485:2;20480:3;20421:67;:::i;:::-;20414:74;;20497:93;20586:3;20497:93;:::i;:::-;20615:2;20610:3;20606:12;20599:19;;20258:366;;;:::o;20630:419::-;20796:4;20834:2;20823:9;20819:18;20811:26;;20883:9;20877:4;20873:20;20869:1;20858:9;20854:17;20847:47;20911:131;21037:4;20911:131;:::i;:::-;20903:139;;20630:419;;;:::o;21055:225::-;21195:34;21191:1;21183:6;21179:14;21172:58;21264:8;21259:2;21251:6;21247:15;21240:33;21055:225;:::o;21286:366::-;21428:3;21449:67;21513:2;21508:3;21449:67;:::i;:::-;21442:74;;21525:93;21614:3;21525:93;:::i;:::-;21643:2;21638:3;21634:12;21627:19;;21286:366;;;:::o;21658:419::-;21824:4;21862:2;21851:9;21847:18;21839:26;;21911:9;21905:4;21901:20;21897:1;21886:9;21882:17;21875:47;21939:131;22065:4;21939:131;:::i;:::-;21931:139;;21658:419;;;:::o;22083:223::-;22223:34;22219:1;22211:6;22207:14;22200:58;22292:6;22287:2;22279:6;22275:15;22268:31;22083:223;:::o;22312:366::-;22454:3;22475:67;22539:2;22534:3;22475:67;:::i;:::-;22468:74;;22551:93;22640:3;22551:93;:::i;:::-;22669:2;22664:3;22660:12;22653:19;;22312:366;;;:::o;22684:419::-;22850:4;22888:2;22877:9;22873:18;22865:26;;22937:9;22931:4;22927:20;22923:1;22912:9;22908:17;22901:47;22965:131;23091:4;22965:131;:::i;:::-;22957:139;;22684:419;;;:::o;23109:221::-;23249:34;23245:1;23237:6;23233:14;23226:58;23318:4;23313:2;23305:6;23301:15;23294:29;23109:221;:::o;23336:366::-;23478:3;23499:67;23563:2;23558:3;23499:67;:::i;:::-;23492:74;;23575:93;23664:3;23575:93;:::i;:::-;23693:2;23688:3;23684:12;23677:19;;23336:366;;;:::o;23708:419::-;23874:4;23912:2;23901:9;23897:18;23889:26;;23961:9;23955:4;23951:20;23947:1;23936:9;23932:17;23925:47;23989:131;24115:4;23989:131;:::i;:::-;23981:139;;23708:419;;;:::o;24133:179::-;24273:31;24269:1;24261:6;24257:14;24250:55;24133:179;:::o;24318:366::-;24460:3;24481:67;24545:2;24540:3;24481:67;:::i;:::-;24474:74;;24557:93;24646:3;24557:93;:::i;:::-;24675:2;24670:3;24666:12;24659:19;;24318:366;;;:::o;24690:419::-;24856:4;24894:2;24883:9;24879:18;24871:26;;24943:9;24937:4;24933:20;24929:1;24918:9;24914:17;24907:47;24971:131;25097:4;24971:131;:::i;:::-;24963:139;;24690:419;;;:::o;25115:224::-;25255:34;25251:1;25243:6;25239:14;25232:58;25324:7;25319:2;25311:6;25307:15;25300:32;25115:224;:::o;25345:366::-;25487:3;25508:67;25572:2;25567:3;25508:67;:::i;:::-;25501:74;;25584:93;25673:3;25584:93;:::i;:::-;25702:2;25697:3;25693:12;25686:19;;25345:366;;;:::o;25717:419::-;25883:4;25921:2;25910:9;25906:18;25898:26;;25970:9;25964:4;25960:20;25956:1;25945:9;25941:17;25934:47;25998:131;26124:4;25998:131;:::i;:::-;25990:139;;25717:419;;;:::o;26142:222::-;26282:34;26278:1;26270:6;26266:14;26259:58;26351:5;26346:2;26338:6;26334:15;26327:30;26142:222;:::o;26370:366::-;26512:3;26533:67;26597:2;26592:3;26533:67;:::i;:::-;26526:74;;26609:93;26698:3;26609:93;:::i;:::-;26727:2;26722:3;26718:12;26711:19;;26370:366;;;:::o;26742:419::-;26908:4;26946:2;26935:9;26931:18;26923:26;;26995:9;26989:4;26985:20;26981:1;26970:9;26966:17;26959:47;27023:131;27149:4;27023:131;:::i;:::-;27015:139;;26742:419;;;:::o;27167:221::-;27307:34;27303:1;27295:6;27291:14;27284:58;27376:4;27371:2;27363:6;27359:15;27352:29;27167:221;:::o;27394:366::-;27536:3;27557:67;27621:2;27616:3;27557:67;:::i;:::-;27550:74;;27633:93;27722:3;27633:93;:::i;:::-;27751:2;27746:3;27742:12;27735:19;;27394:366;;;:::o;27766:419::-;27932:4;27970:2;27959:9;27955:18;27947:26;;28019:9;28013:4;28009:20;28005:1;27994:9;27990:17;27983:47;28047:131;28173:4;28047:131;:::i;:::-;28039:139;;27766:419;;;:::o;28191:289::-;28331:34;28327:1;28319:6;28315:14;28308:58;28400:34;28395:2;28387:6;28383:15;28376:59;28469:3;28464:2;28456:6;28452:15;28445:28;28191:289;:::o;28486:366::-;28628:3;28649:67;28713:2;28708:3;28649:67;:::i;:::-;28642:74;;28725:93;28814:3;28725:93;:::i;:::-;28843:2;28838:3;28834:12;28827:19;;28486:366;;;:::o;28858:419::-;29024:4;29062:2;29051:9;29047:18;29039:26;;29111:9;29105:4;29101:20;29097:1;29086:9;29082:17;29075:47;29139:131;29265:4;29139:131;:::i;:::-;29131:139;;28858:419;;;:::o;29283:181::-;29423:33;29419:1;29411:6;29407:14;29400:57;29283:181;:::o;29470:366::-;29612:3;29633:67;29697:2;29692:3;29633:67;:::i;:::-;29626:74;;29709:93;29798:3;29709:93;:::i;:::-;29827:2;29822:3;29818:12;29811:19;;29470:366;;;:::o;29842:419::-;30008:4;30046:2;30035:9;30031:18;30023:26;;30095:9;30089:4;30085:20;30081:1;30070:9;30066:17;30059:47;30123:131;30249:4;30123:131;:::i;:::-;30115:139;;29842:419;;;:::o;30267:290::-;30407:34;30403:1;30395:6;30391:14;30384:58;30476:34;30471:2;30463:6;30459:15;30452:59;30545:4;30540:2;30532:6;30528:15;30521:29;30267:290;:::o;30563:366::-;30705:3;30726:67;30790:2;30785:3;30726:67;:::i;:::-;30719:74;;30802:93;30891:3;30802:93;:::i;:::-;30920:2;30915:3;30911:12;30904:19;;30563:366;;;:::o;30935:419::-;31101:4;31139:2;31128:9;31124:18;31116:26;;31188:9;31182:4;31178:20;31174:1;31163:9;31159:17;31152:47;31216:131;31342:4;31216:131;:::i;:::-;31208:139;;30935:419;;;:::o;31360:191::-;31400:4;31420:20;31438:1;31420:20;:::i;:::-;31415:25;;31454:20;31472:1;31454:20;:::i;:::-;31449:25;;31493:1;31490;31487:8;31484:34;;;31498:18;;:::i;:::-;31484:34;31543:1;31540;31536:9;31528:17;;31360:191;;;;:::o;31557:831::-;31820:4;31858:3;31847:9;31843:19;31835:27;;31872:71;31940:1;31929:9;31925:17;31916:6;31872:71;:::i;:::-;31953:80;32029:2;32018:9;32014:18;32005:6;31953:80;:::i;:::-;32080:9;32074:4;32070:20;32065:2;32054:9;32050:18;32043:48;32108:108;32211:4;32202:6;32108:108;:::i;:::-;32100:116;;32226:72;32294:2;32283:9;32279:18;32270:6;32226:72;:::i;:::-;32308:73;32376:3;32365:9;32361:19;32352:6;32308:73;:::i;:::-;31557:831;;;;;;;;:::o;32394:180::-;32534:32;32530:1;32522:6;32518:14;32511:56;32394:180;:::o;32580:366::-;32722:3;32743:67;32807:2;32802:3;32743:67;:::i;:::-;32736:74;;32819:93;32908:3;32819:93;:::i;:::-;32937:2;32932:3;32928:12;32921:19;;32580:366;;;:::o;32952:419::-;33118:4;33156:2;33145:9;33141:18;33133:26;;33205:9;33199:4;33195:20;33191:1;33180:9;33176:17;33169:47;33233:131;33359:4;33233:131;:::i;:::-;33225:139;;32952:419;;;:::o;33377:225::-;33517:34;33513:1;33505:6;33501:14;33494:58;33586:8;33581:2;33573:6;33569:15;33562:33;33377:225;:::o;33608:366::-;33750:3;33771:67;33835:2;33830:3;33771:67;:::i;:::-;33764:74;;33847:93;33936:3;33847:93;:::i;:::-;33965:2;33960:3;33956:12;33949:19;;33608:366;;;:::o;33980:419::-;34146:4;34184:2;34173:9;34169:18;34161:26;;34233:9;34227:4;34223:20;34219:1;34208:9;34204:17;34197:47;34261:131;34387:4;34261:131;:::i;:::-;34253:139;;33980:419;;;:::o

Swarm Source

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