ETH Price: $3,298.13 (-3.12%)
 

Overview

Max Total Supply

4,000,000,000 APE

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22,220,450.643987777838272997 APE

Value
$0.00
0x9d60099233da7d25374e04744c8e22a40d34c42a
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:
astroApe

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

ASTRO APE TOKEN

https://astroape.xyz
https://twitter.com/astroapetoken
https://t.me/Astroapeportal

10% buy tax at launch, 2% before renouncing contract
20% sell tax at launch, 2% before renouncing contract

*/

// SPDX-License-Identifier: MIT
// pragma solidity ^0.8.21;
 
pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
abstract contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }
 
    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }
 
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
 
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
 
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
 
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;
 
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }
 
    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }
 
        return true;
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(from, to, amount);
 
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }
 
        emit Transfer(from, to, amount);
 
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
 
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }
 
        emit Transfer(account, address(0), amount);
 
        _afterTokenTransfer(account, address(0), amount);
    }

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

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

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

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

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;
        }
    }
}
 
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 IUniswapV2Router01 {
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
 
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);
 
    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);
 
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);
 
    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);
 
    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
 
    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
 
    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);
 
    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
 
    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
 
    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);
 
    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);
 
    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);
 
    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);
 
    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
 
    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);
 
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;
 
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
 
contract astroApe is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
 
    bool private swapping;
 
    address public marketingWallet;
    address public developmentWallet;
 
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
 
    bool public tradingActive = false;
    bool public swapEnabled = false;
 
    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyDevelopmentFee;
 
    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellDevelopmentFee;
 
    uint256 private tokensForMarketing;
    uint256 private tokensForDevelopment;
    uint256 private previousFee;
 
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
 
    event developmentWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
 
    constructor(address _markWallet, address _devWallet) ERC20("Astro Ape", "APE") {
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
 
        uint256 totalSupply = 4_000_000_000 ether;
 
        maxTransactionAmount = (totalSupply) / 100;
        maxWallet = (totalSupply) / 100;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = 5; //5% at Launch. 1% before renouncing
        buyDevelopmentFee = 5; //5% at Launch. 1% before renouncing
        buyTotalFees = buyMarketingFee + buyDevelopmentFee;
 
        sellMarketingFee = 10; //10% at Launch. 1% before renouncing
        sellDevelopmentFee = 10; //10% at Launch. 1% before renouncing
        sellTotalFees = sellMarketingFee + sellDevelopmentFee;
 
        previousFee = sellTotalFees;
 
        marketingWallet = _markWallet;
        developmentWallet = _devWallet;
 
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);
        excludeFromFees(marketingWallet, true);
        excludeFromFees(developmentWallet, true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromMaxTransaction(marketingWallet, true);
        excludeFromMaxTransaction(developmentWallet, true);
 
        _mint(owner(), totalSupply);
    }
 
    receive() external payable {}
 
    function burn(uint256 amount) external {
        _burn(msg.sender, amount);
    }
 
    function openTrading() external onlyOwner {
        require(!tradingActive, "Trading already active.");
 
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        _approve(address(this), address(uniswapV2Pair), type(uint256).max);
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
 
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
 
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
 
        tradingActive = true;
        swapEnabled = true;
    }
 
    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _developmentFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyDevelopmentFee = _developmentFee;
        buyTotalFees = buyMarketingFee + buyDevelopmentFee;
        require(buyTotalFees <= 30, "ERC20: Must keep fees at 30% or less");
    }
 
    function updateSellFees(
        uint256 _marketingFee,
        uint256 _developmentFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellDevelopmentFee = _developmentFee;
        sellTotalFees =
            sellMarketingFee +
            sellDevelopmentFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 30, "ERC20: Must keep fees at 30% or less");
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
 
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != deadAddress &&
            !swapping
        ) {
            if (!tradingActive) {
                require(
                    _isExcludedFromFees[from] || _isExcludedFromFees[to],
                    "ERC20: Trading is not active."
                );
            }
 
            //when buy
            if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "ERC20: Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "ERC20: Max wallet exceeded"
                );
            }
            //when sell
            else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "ERC20: Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "ERC20: Max wallet exceeded"
                );
            }
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
 
        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
 
            swapBack();
 
            swapping = false;
        }
 
        bool takeFee = !swapping;
 
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
 
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
                tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
                tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees;
            }
 
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
        sellTotalFees = previousFee;
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing + tokensForDevelopment;
        bool success;
 
        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }
 
        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }
 
        swapTokensForEth(contractBalance);
 
        uint256 ethBalance = address(this).balance;
 
        uint256 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div(
            totalTokensToSwap
        );
 
        tokensForMarketing = 0;
        tokensForDevelopment = 0;
 
        (success, ) = address(developmentWallet).call{value: ethForDevelopment}(
            ""
        );
 
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_markWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040525f600c5f6101000a81548160ff0219169083151502179055505f600c60016101000a81548160ff02191690831515021790555034801562000043575f80fd5b5060405162004da838038062004da8833981810160405281019062000069919062000ab4565b6040518060400160405280600981526020017f417374726f2041706500000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f41504500000000000000000000000000000000000000000000000000000000008152508160039081620000e6919062000d5d565b508060049081620000f8919062000d5d565b5050506200011b6200010f6200047260201b60201c565b6200047960201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000198306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200053c60201b60201c565b5f6b0cecb8f27f4200f3a00000009050606481620001b7919062000e9b565b600981905550606481620001cc919062000e9b565b600b81905550612710600582620001e4919062000ed2565b620001f0919062000e9b565b600a819055506005600e819055506005600f81905550600f54600e5462000218919062000f1c565b600d81905550600a601181905550600a60128190555060125460115462000240919062000f1c565b6010819055506010546015819055508260075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002f1620002e36200070760201b60201c565b60016200072f60201b60201c565b620003043060016200072f60201b60201c565b6200031961dead60016200072f60201b60201c565b6200034d60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200072f60201b60201c565b6200038160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200072f60201b60201c565b620003a3620003956200070760201b60201c565b6001620007e760201b60201c565b620003b6306001620007e760201b60201c565b620003cb61dead6001620007e760201b60201c565b620003e06080516001620007e760201b60201c565b6200041460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007e760201b60201c565b6200044860085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007e760201b60201c565b620004696200045c6200070760201b60201c565b826200084f60201b60201c565b505050620011cd565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620005ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005a49062000fda565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000615906200106e565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620006fa91906200109f565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200073f620009b460201b60201c565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620007db9190620010d6565b60405180910390a25050565b620007f7620009b460201b60201c565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b7906200113f565b60405180910390fd5b620008d35f838362000a4560201b60201c565b8060025f828254620008e6919062000f1c565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200099591906200109f565b60405180910390a3620009b05f838362000a4a60201b60201c565b5050565b620009c46200047260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009ea6200070760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3a90620011ad565b60405180910390fd5b565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a7e8262000a53565b9050919050565b62000a908162000a72565b811462000a9b575f80fd5b50565b5f8151905062000aae8162000a85565b92915050565b5f806040838503121562000acd5762000acc62000a4f565b5b5f62000adc8582860162000a9e565b925050602062000aef8582860162000a9e565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b7557607f821691505b60208210810362000b8b5762000b8a62000b30565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bb2565b62000bfb868362000bb2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c4562000c3f62000c398462000c13565b62000c1c565b62000c13565b9050919050565b5f819050919050565b62000c608362000c25565b62000c7862000c6f8262000c4c565b84845462000bbe565b825550505050565b5f90565b62000c8e62000c80565b62000c9b81848462000c55565b505050565b5b8181101562000cc25762000cb65f8262000c84565b60018101905062000ca1565b5050565b601f82111562000d115762000cdb8162000b91565b62000ce68462000ba3565b8101602085101562000cf6578190505b62000d0e62000d058562000ba3565b83018262000ca0565b50505b505050565b5f82821c905092915050565b5f62000d335f198460080262000d16565b1980831691505092915050565b5f62000d4d838362000d22565b9150826002028217905092915050565b62000d688262000af9565b67ffffffffffffffff81111562000d845762000d8362000b03565b5b62000d90825462000b5d565b62000d9d82828562000cc6565b5f60209050601f83116001811462000dd3575f841562000dbe578287015190505b62000dca858262000d40565b86555062000e39565b601f19841662000de38662000b91565b5f5b8281101562000e0c5784890151825560018201915060208501945060208101905062000de5565b8683101562000e2c578489015162000e28601f89168262000d22565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ea78262000c13565b915062000eb48362000c13565b92508262000ec75762000ec662000e41565b5b828204905092915050565b5f62000ede8262000c13565b915062000eeb8362000c13565b925082820262000efb8162000c13565b9150828204841483151762000f155762000f1462000e6e565b5b5092915050565b5f62000f288262000c13565b915062000f358362000c13565b925082820190508082111562000f505762000f4f62000e6e565b5b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000fc260248362000f56565b915062000fcf8262000f66565b604082019050919050565b5f6020820190508181035f83015262000ff38162000fb4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200105660228362000f56565b9150620010638262000ffa565b604082019050919050565b5f6020820190508181035f830152620010878162001048565b9050919050565b620010998162000c13565b82525050565b5f602082019050620010b45f8301846200108e565b92915050565b5f8115159050919050565b620010d081620010ba565b82525050565b5f602082019050620010eb5f830184620010c5565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001127601f8362000f56565b91506200113482620010f1565b602082019050919050565b5f6020820190508181035f830152620011588162001119565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200119560208362000f56565b9150620011a2826200115f565b602082019050919050565b5f6020820190508181035f830152620011c68162001187565b9050919050565b608051613b91620012175f395f81816108ae01528181610d7c01528181610e2501528181610fd7015281816110cf015281816127e7015281816128c601526128ed0152613b915ff3fe6080604052600436106101e6575f3560e01c80637571336a11610101578063c04a541411610094578063dd62ed3e11610063578063dd62ed3e146106c3578063e2f45605146106ff578063f2fde38b14610729578063f8b45b0514610751576101ed565b8063c04a54141461062f578063c8c8ebe414610659578063c9567bf914610683578063d85ba06314610699576101ed565b8063a457c2d7116100d0578063a457c2d714610565578063a9059cbb146105a1578063bbc0c742146105dd578063c024666814610607576101ed565b80637571336a146104bf57806375f0a874146104e75780638da5cb5b1461051157806395d89b411461053b576101ed565b806339509351116101795780636a486a8e116101485780636a486a8e146104195780636ddd17131461044357806370a082311461046d578063715018a6146104a9576101ed565b8063395093511461036357806342966c681461039f57806349bd5a5e146103c757806366ca9b83146103f1576101ed565b806318160ddd116101b557806318160ddd146102a957806323b872dd146102d357806327c8f8351461030f578063313ce56714610339576101ed565b806302dbd8f8146101f157806306fdde0314610219578063095ea7b3146102435780631694505e1461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906129b4565b61077b565b005b348015610224575f80fd5b5061022d6107fa565b60405161023a9190612a7c565b60405180910390f35b34801561024e575f80fd5b5061026960048036038101906102649190612af6565b61088a565b6040516102769190612b4e565b60405180910390f35b34801561028a575f80fd5b506102936108ac565b6040516102a09190612bc2565b60405180910390f35b3480156102b4575f80fd5b506102bd6108d0565b6040516102ca9190612bea565b60405180910390f35b3480156102de575f80fd5b506102f960048036038101906102f49190612c03565b6108d9565b6040516103069190612b4e565b60405180910390f35b34801561031a575f80fd5b50610323610907565b6040516103309190612c62565b60405180910390f35b348015610344575f80fd5b5061034d61090d565b60405161035a9190612c96565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190612af6565b610915565b6040516103969190612b4e565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612caf565b61094b565b005b3480156103d2575f80fd5b506103db610958565b6040516103e89190612c62565b60405180910390f35b3480156103fc575f80fd5b50610417600480360381019061041291906129b4565b61097d565b005b348015610424575f80fd5b5061042d6109f3565b60405161043a9190612bea565b60405180910390f35b34801561044e575f80fd5b506104576109f9565b6040516104649190612b4e565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e9190612cda565b610a0c565b6040516104a09190612bea565b60405180910390f35b3480156104b4575f80fd5b506104bd610a51565b005b3480156104ca575f80fd5b506104e560048036038101906104e09190612d2f565b610a64565b005b3480156104f2575f80fd5b506104fb610ac4565b6040516105089190612c62565b60405180910390f35b34801561051c575f80fd5b50610525610ae9565b6040516105329190612c62565b60405180910390f35b348015610546575f80fd5b5061054f610b11565b60405161055c9190612a7c565b60405180910390f35b348015610570575f80fd5b5061058b60048036038101906105869190612af6565b610ba1565b6040516105989190612b4e565b60405180910390f35b3480156105ac575f80fd5b506105c760048036038101906105c29190612af6565b610c16565b6040516105d49190612b4e565b60405180910390f35b3480156105e8575f80fd5b506105f1610c38565b6040516105fe9190612b4e565b60405180910390f35b348015610612575f80fd5b5061062d60048036038101906106289190612d2f565b610c4a565b005b34801561063a575f80fd5b50610643610cf8565b6040516106509190612c62565b60405180910390f35b348015610664575f80fd5b5061066d610d1d565b60405161067a9190612bea565b60405180910390f35b34801561068e575f80fd5b50610697610d23565b005b3480156106a4575f80fd5b506106ad6111bb565b6040516106ba9190612bea565b60405180910390f35b3480156106ce575f80fd5b506106e960048036038101906106e49190612d6d565b6111c1565b6040516106f69190612bea565b60405180910390f35b34801561070a575f80fd5b50610713611243565b6040516107209190612bea565b60405180910390f35b348015610734575f80fd5b5061074f600480360381019061074a9190612cda565b611249565b005b34801561075c575f80fd5b506107656112cb565b6040516107729190612bea565b60405180910390f35b6107836112d1565b81601181905550806012819055506012546011546107a19190612dd8565b601081905550601054601581905550601e60105411156107f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ed90612e7b565b60405180910390fd5b5050565b60606003805461080990612ec6565b80601f016020809104026020016040519081016040528092919081815260200182805461083590612ec6565b80156108805780601f1061085757610100808354040283529160200191610880565b820191905f5260205f20905b81548152906001019060200180831161086357829003601f168201915b5050505050905090565b5f8061089461134f565b90506108a1818585611356565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f806108e361134f565b90506108f0858285611519565b6108fb8585856115a4565b60019150509392505050565b61dead81565b5f6012905090565b5f8061091f61134f565b905061094081858561093185896111c1565b61093b9190612dd8565b611356565b600191505092915050565b6109553382611fc3565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109856112d1565b81600e8190555080600f81905550600f54600e546109a39190612dd8565b600d81905550601e600d5411156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690612e7b565b60405180910390fd5b5050565b60105481565b600c60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a596112d1565b610a625f612186565b565b610a6c6112d1565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b2090612ec6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4c90612ec6565b8015610b975780601f10610b6e57610100808354040283529160200191610b97565b820191905f5260205f20905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b5f80610bab61134f565b90505f610bb882866111c1565b905083811015610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490612f66565b60405180910390fd5b610c0a8286868403611356565b60019250505092915050565b5f80610c2061134f565b9050610c2d8185856115a4565b600191505092915050565b600c5f9054906101000a900460ff1681565b610c526112d1565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610cec9190612b4e565b60405180910390a25050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b610d2b6112d1565b600c5f9054906101000a900460ff1615610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190612fce565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e079190613000565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb09190613000565b6040518363ffffffff1660e01b8152600401610ecd92919061302b565b6020604051808303815f875af1158015610ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0d9190613000565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f983060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611356565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611034929190613052565b6020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061308d565b506110a160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612249565b6110cd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610a64565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719473061111430610a0c565b5f8061111e610ae9565b426040518863ffffffff1660e01b8152600401611140969594939291906130f1565b60606040518083038185885af115801561115c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111819190613164565b5050506001600c5f6101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6112516112d1565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690613224565b60405180910390fd5b6112c881612186565b50565b600b5481565b6112d961134f565b73ffffffffffffffffffffffffffffffffffffffff166112f7610ae9565b73ffffffffffffffffffffffffffffffffffffffff161461134d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113449061328c565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb9061331a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611429906133a8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161150c9190612bea565b60405180910390a3505050565b5f61152484846111c1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461159e5781811015611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613410565b60405180910390fd5b61159d8484848403611356565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116099061349e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116779061352c565b60405180910390fd5b5f81036116975761169283835f6122e7565b611fbe565b61169f610ae9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170d57506116dd610ae9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561174557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117985750600660149054906101000a900460ff16155b15611b6557600c5f9054906101000a900460ff1661188b5760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061184b575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190613594565b60405180910390fd5b5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611928575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119cf57600954811115611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613622565b60405180910390fd5b600b5461197e83610a0c565b826119899190612dd8565b11156119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c19061368a565b60405180910390fd5b611b64565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a6c575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611abb57600954811115611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613718565b60405180910390fd5b611b63565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b6257600b54611b1583610a0c565b82611b209190612dd8565b1115611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b589061368a565b60405180910390fd5b5b5b5b5b5f611b6f30610a0c565b90505f600a548210159050808015611b935750600c60019054906101000a900460ff165b8015611bac5750600660149054906101000a900460ff16155b8015611bff575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c52575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ca5575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ce8576001600660146101000a81548160ff021916908315150217905550611ccd612553565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d97575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611da0575f90505b5f8115611fa55760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611dfe57505f601054115b15611e9657611e2b6064611e1d6010548861271690919063ffffffff16565b61272b90919063ffffffff16565b905060105460115482611e3e9190613736565b611e4891906137a4565b60135f828254611e589190612dd8565b9250508190555060105460125482611e709190613736565b611e7a91906137a4565b60145f828254611e8a9190612dd8565b92505081905550611f82565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611eed57505f600d54115b15611f8157611f1a6064611f0c600d548861271690919063ffffffff16565b61272b90919063ffffffff16565b9050600d54600e5482611f2d9190613736565b611f3791906137a4565b60135f828254611f479190612dd8565b92505081905550600d54600f5482611f5f9190613736565b611f6991906137a4565b60145f828254611f799190612dd8565b925050819055505b5b5f811115611f9657611f958730836122e7565b5b8085611fa291906137d4565b94505b611fb08787876122e7565b601554601081905550505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890613877565b60405180910390fd5b61203c825f83612740565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690613905565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161216e9190612bea565b60405180910390a3612181835f84612745565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c9061349e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba9061352c565b60405180910390fd5b6123ce838383612740565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244890613993565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161253a9190612bea565b60405180910390a361254d848484612745565b50505050565b5f61255d30610a0c565b90505f6014546013546125709190612dd8565b90505f8083148061258057505f82145b1561258d57505050612714565b6014600a5461259c9190613736565b8311156125b5576014600a546125b29190613736565b92505b6125be8361274a565b5f4790505f6125ea846125dc6014548561271690919063ffffffff16565b61272b90919063ffffffff16565b90505f6013819055505f60148190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161263f906139de565b5f6040518083038185875af1925050503d805f8114612679576040519150601f19603f3d011682016040523d82523d5f602084013e61267e565b606091505b50508093505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516126c9906139de565b5f6040518083038185875af1925050503d805f8114612703576040519150601f19603f3d011682016040523d82523d5f602084013e612708565b606091505b50508093505050505050505b565b5f81836127239190613736565b905092915050565b5f818361273891906137a4565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115612766576127656139f2565b5b6040519080825280602002602001820160405280156127945781602001602082028036833780820191505090505b50905030815f815181106127ab576127aa613a1f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561284e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128729190613000565b8160018151811061288657612885613a1f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128eb307f000000000000000000000000000000000000000000000000000000000000000084611356565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161294c959493929190613b03565b5f604051808303815f87803b158015612963575f80fd5b505af1158015612975573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b61299381612981565b811461299d575f80fd5b50565b5f813590506129ae8161298a565b92915050565b5f80604083850312156129ca576129c961297d565b5b5f6129d7858286016129a0565b92505060206129e8858286016129a0565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a29578082015181840152602081019050612a0e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a4e826129f2565b612a5881856129fc565b9350612a68818560208601612a0c565b612a7181612a34565b840191505092915050565b5f6020820190508181035f830152612a948184612a44565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ac582612a9c565b9050919050565b612ad581612abb565b8114612adf575f80fd5b50565b5f81359050612af081612acc565b92915050565b5f8060408385031215612b0c57612b0b61297d565b5b5f612b1985828601612ae2565b9250506020612b2a858286016129a0565b9150509250929050565b5f8115159050919050565b612b4881612b34565b82525050565b5f602082019050612b615f830184612b3f565b92915050565b5f819050919050565b5f612b8a612b85612b8084612a9c565b612b67565b612a9c565b9050919050565b5f612b9b82612b70565b9050919050565b5f612bac82612b91565b9050919050565b612bbc81612ba2565b82525050565b5f602082019050612bd55f830184612bb3565b92915050565b612be481612981565b82525050565b5f602082019050612bfd5f830184612bdb565b92915050565b5f805f60608486031215612c1a57612c1961297d565b5b5f612c2786828701612ae2565b9350506020612c3886828701612ae2565b9250506040612c49868287016129a0565b9150509250925092565b612c5c81612abb565b82525050565b5f602082019050612c755f830184612c53565b92915050565b5f60ff82169050919050565b612c9081612c7b565b82525050565b5f602082019050612ca95f830184612c87565b92915050565b5f60208284031215612cc457612cc361297d565b5b5f612cd1848285016129a0565b91505092915050565b5f60208284031215612cef57612cee61297d565b5b5f612cfc84828501612ae2565b91505092915050565b612d0e81612b34565b8114612d18575f80fd5b50565b5f81359050612d2981612d05565b92915050565b5f8060408385031215612d4557612d4461297d565b5b5f612d5285828601612ae2565b9250506020612d6385828601612d1b565b9150509250929050565b5f8060408385031215612d8357612d8261297d565b5b5f612d9085828601612ae2565b9250506020612da185828601612ae2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612de282612981565b9150612ded83612981565b9250828201905080821115612e0557612e04612dab565b5b92915050565b7f45524332303a204d757374206b656570206665657320617420333025206f72205f8201527f6c65737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e656024836129fc565b9150612e7082612e0b565b604082019050919050565b5f6020820190508181035f830152612e9281612e59565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612edd57607f821691505b602082108103612ef057612eef612e99565b5b50919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612f506025836129fc565b9150612f5b82612ef6565b604082019050919050565b5f6020820190508181035f830152612f7d81612f44565b9050919050565b7f54726164696e6720616c7265616479206163746976652e0000000000000000005f82015250565b5f612fb86017836129fc565b9150612fc382612f84565b602082019050919050565b5f6020820190508181035f830152612fe581612fac565b9050919050565b5f81519050612ffa81612acc565b92915050565b5f602082840312156130155761301461297d565b5b5f61302284828501612fec565b91505092915050565b5f60408201905061303e5f830185612c53565b61304b6020830184612c53565b9392505050565b5f6040820190506130655f830185612c53565b6130726020830184612bdb565b9392505050565b5f8151905061308781612d05565b92915050565b5f602082840312156130a2576130a161297d565b5b5f6130af84828501613079565b91505092915050565b5f819050919050565b5f6130db6130d66130d1846130b8565b612b67565b612981565b9050919050565b6130eb816130c1565b82525050565b5f60c0820190506131045f830189612c53565b6131116020830188612bdb565b61311e60408301876130e2565b61312b60608301866130e2565b6131386080830185612c53565b61314560a0830184612bdb565b979650505050505050565b5f8151905061315e8161298a565b92915050565b5f805f6060848603121561317b5761317a61297d565b5b5f61318886828701613150565b935050602061319986828701613150565b92505060406131aa86828701613150565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61320e6026836129fc565b9150613219826131b4565b604082019050919050565b5f6020820190508181035f83015261323b81613202565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132766020836129fc565b915061328182613242565b602082019050919050565b5f6020820190508181035f8301526132a38161326a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6133046024836129fc565b915061330f826132aa565b604082019050919050565b5f6020820190508181035f830152613331816132f8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133926022836129fc565b915061339d82613338565b604082019050919050565b5f6020820190508181035f8301526133bf81613386565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6133fa601d836129fc565b9150613405826133c6565b602082019050919050565b5f6020820190508181035f830152613427816133ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6134886025836129fc565b91506134938261342e565b604082019050919050565b5f6020820190508181035f8301526134b58161347c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135166023836129fc565b9150613521826134bc565b604082019050919050565b5f6020820190508181035f8301526135438161350a565b9050919050565b7f45524332303a2054726164696e67206973206e6f74206163746976652e0000005f82015250565b5f61357e601d836129fc565b91506135898261354a565b602082019050919050565b5f6020820190508181035f8301526135ab81613572565b9050919050565b7f45524332303a20427579207472616e7366657220616d6f756e742065786365655f8201527f647320746865206d61785472616e73616374696f6e416d6f756e742e00000000602082015250565b5f61360c603c836129fc565b9150613617826135b2565b604082019050919050565b5f6020820190508181035f83015261363981613600565b9050919050565b7f45524332303a204d61782077616c6c65742065786365656465640000000000005f82015250565b5f613674601a836129fc565b915061367f82613640565b602082019050919050565b5f6020820190508181035f8301526136a181613668565b9050919050565b7f45524332303a2053656c6c207472616e7366657220616d6f756e7420657863655f8201527f65647320746865206d61785472616e73616374696f6e416d6f756e742e000000602082015250565b5f613702603d836129fc565b915061370d826136a8565b604082019050919050565b5f6020820190508181035f83015261372f816136f6565b9050919050565b5f61374082612981565b915061374b83612981565b925082820261375981612981565b915082820484148315176137705761376f612dab565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137ae82612981565b91506137b983612981565b9250826137c9576137c8613777565b5b828204905092915050565b5f6137de82612981565b91506137e983612981565b925082820390508181111561380157613800612dab565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138616021836129fc565b915061386c82613807565b604082019050919050565b5f6020820190508181035f83015261388e81613855565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138ef6022836129fc565b91506138fa82613895565b604082019050919050565b5f6020820190508181035f83015261391c816138e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61397d6026836129fc565b915061398882613923565b604082019050919050565b5f6020820190508181035f8301526139aa81613971565b9050919050565b5f81905092915050565b50565b5f6139c95f836139b1565b91506139d4826139bb565b5f82019050919050565b5f6139e8826139be565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a7e81612abb565b82525050565b5f613a8f8383613a75565b60208301905092915050565b5f602082019050919050565b5f613ab182613a4c565b613abb8185613a56565b9350613ac683613a66565b805f5b83811015613af6578151613add8882613a84565b9750613ae883613a9b565b925050600181019050613ac9565b5085935050505092915050565b5f60a082019050613b165f830188612bdb565b613b2360208301876130e2565b8181036040830152613b358186613aa7565b9050613b446060830185612c53565b613b516080830184612bdb565b969550505050505056fea264697066735822122065e0720bd3fd7f949b475277194fc8a0dbfffba8c6254cfc65715d011130f8d564736f6c6343000815003300000000000000000000000098f0473a915861c49f93dd0503df89998759371d00000000000000000000000098af149a5266cb5aab4f9a31eeb9a166f93fa1a1

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c80637571336a11610101578063c04a541411610094578063dd62ed3e11610063578063dd62ed3e146106c3578063e2f45605146106ff578063f2fde38b14610729578063f8b45b0514610751576101ed565b8063c04a54141461062f578063c8c8ebe414610659578063c9567bf914610683578063d85ba06314610699576101ed565b8063a457c2d7116100d0578063a457c2d714610565578063a9059cbb146105a1578063bbc0c742146105dd578063c024666814610607576101ed565b80637571336a146104bf57806375f0a874146104e75780638da5cb5b1461051157806395d89b411461053b576101ed565b806339509351116101795780636a486a8e116101485780636a486a8e146104195780636ddd17131461044357806370a082311461046d578063715018a6146104a9576101ed565b8063395093511461036357806342966c681461039f57806349bd5a5e146103c757806366ca9b83146103f1576101ed565b806318160ddd116101b557806318160ddd146102a957806323b872dd146102d357806327c8f8351461030f578063313ce56714610339576101ed565b806302dbd8f8146101f157806306fdde0314610219578063095ea7b3146102435780631694505e1461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906129b4565b61077b565b005b348015610224575f80fd5b5061022d6107fa565b60405161023a9190612a7c565b60405180910390f35b34801561024e575f80fd5b5061026960048036038101906102649190612af6565b61088a565b6040516102769190612b4e565b60405180910390f35b34801561028a575f80fd5b506102936108ac565b6040516102a09190612bc2565b60405180910390f35b3480156102b4575f80fd5b506102bd6108d0565b6040516102ca9190612bea565b60405180910390f35b3480156102de575f80fd5b506102f960048036038101906102f49190612c03565b6108d9565b6040516103069190612b4e565b60405180910390f35b34801561031a575f80fd5b50610323610907565b6040516103309190612c62565b60405180910390f35b348015610344575f80fd5b5061034d61090d565b60405161035a9190612c96565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190612af6565b610915565b6040516103969190612b4e565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612caf565b61094b565b005b3480156103d2575f80fd5b506103db610958565b6040516103e89190612c62565b60405180910390f35b3480156103fc575f80fd5b50610417600480360381019061041291906129b4565b61097d565b005b348015610424575f80fd5b5061042d6109f3565b60405161043a9190612bea565b60405180910390f35b34801561044e575f80fd5b506104576109f9565b6040516104649190612b4e565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e9190612cda565b610a0c565b6040516104a09190612bea565b60405180910390f35b3480156104b4575f80fd5b506104bd610a51565b005b3480156104ca575f80fd5b506104e560048036038101906104e09190612d2f565b610a64565b005b3480156104f2575f80fd5b506104fb610ac4565b6040516105089190612c62565b60405180910390f35b34801561051c575f80fd5b50610525610ae9565b6040516105329190612c62565b60405180910390f35b348015610546575f80fd5b5061054f610b11565b60405161055c9190612a7c565b60405180910390f35b348015610570575f80fd5b5061058b60048036038101906105869190612af6565b610ba1565b6040516105989190612b4e565b60405180910390f35b3480156105ac575f80fd5b506105c760048036038101906105c29190612af6565b610c16565b6040516105d49190612b4e565b60405180910390f35b3480156105e8575f80fd5b506105f1610c38565b6040516105fe9190612b4e565b60405180910390f35b348015610612575f80fd5b5061062d60048036038101906106289190612d2f565b610c4a565b005b34801561063a575f80fd5b50610643610cf8565b6040516106509190612c62565b60405180910390f35b348015610664575f80fd5b5061066d610d1d565b60405161067a9190612bea565b60405180910390f35b34801561068e575f80fd5b50610697610d23565b005b3480156106a4575f80fd5b506106ad6111bb565b6040516106ba9190612bea565b60405180910390f35b3480156106ce575f80fd5b506106e960048036038101906106e49190612d6d565b6111c1565b6040516106f69190612bea565b60405180910390f35b34801561070a575f80fd5b50610713611243565b6040516107209190612bea565b60405180910390f35b348015610734575f80fd5b5061074f600480360381019061074a9190612cda565b611249565b005b34801561075c575f80fd5b506107656112cb565b6040516107729190612bea565b60405180910390f35b6107836112d1565b81601181905550806012819055506012546011546107a19190612dd8565b601081905550601054601581905550601e60105411156107f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ed90612e7b565b60405180910390fd5b5050565b60606003805461080990612ec6565b80601f016020809104026020016040519081016040528092919081815260200182805461083590612ec6565b80156108805780601f1061085757610100808354040283529160200191610880565b820191905f5260205f20905b81548152906001019060200180831161086357829003601f168201915b5050505050905090565b5f8061089461134f565b90506108a1818585611356565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f806108e361134f565b90506108f0858285611519565b6108fb8585856115a4565b60019150509392505050565b61dead81565b5f6012905090565b5f8061091f61134f565b905061094081858561093185896111c1565b61093b9190612dd8565b611356565b600191505092915050565b6109553382611fc3565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109856112d1565b81600e8190555080600f81905550600f54600e546109a39190612dd8565b600d81905550601e600d5411156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690612e7b565b60405180910390fd5b5050565b60105481565b600c60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a596112d1565b610a625f612186565b565b610a6c6112d1565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b2090612ec6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4c90612ec6565b8015610b975780601f10610b6e57610100808354040283529160200191610b97565b820191905f5260205f20905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b5f80610bab61134f565b90505f610bb882866111c1565b905083811015610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490612f66565b60405180910390fd5b610c0a8286868403611356565b60019250505092915050565b5f80610c2061134f565b9050610c2d8185856115a4565b600191505092915050565b600c5f9054906101000a900460ff1681565b610c526112d1565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610cec9190612b4e565b60405180910390a25050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b610d2b6112d1565b600c5f9054906101000a900460ff1615610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190612fce565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e079190613000565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb09190613000565b6040518363ffffffff1660e01b8152600401610ecd92919061302b565b6020604051808303815f875af1158015610ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0d9190613000565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f983060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611356565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611034929190613052565b6020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061308d565b506110a160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612249565b6110cd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610a64565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719473061111430610a0c565b5f8061111e610ae9565b426040518863ffffffff1660e01b8152600401611140969594939291906130f1565b60606040518083038185885af115801561115c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111819190613164565b5050506001600c5f6101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6112516112d1565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690613224565b60405180910390fd5b6112c881612186565b50565b600b5481565b6112d961134f565b73ffffffffffffffffffffffffffffffffffffffff166112f7610ae9565b73ffffffffffffffffffffffffffffffffffffffff161461134d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113449061328c565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb9061331a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611429906133a8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161150c9190612bea565b60405180910390a3505050565b5f61152484846111c1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461159e5781811015611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613410565b60405180910390fd5b61159d8484848403611356565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116099061349e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116779061352c565b60405180910390fd5b5f81036116975761169283835f6122e7565b611fbe565b61169f610ae9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170d57506116dd610ae9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561174557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117985750600660149054906101000a900460ff16155b15611b6557600c5f9054906101000a900460ff1661188b5760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061184b575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190613594565b60405180910390fd5b5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611928575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119cf57600954811115611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613622565b60405180910390fd5b600b5461197e83610a0c565b826119899190612dd8565b11156119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c19061368a565b60405180910390fd5b611b64565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a6c575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611abb57600954811115611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613718565b60405180910390fd5b611b63565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b6257600b54611b1583610a0c565b82611b209190612dd8565b1115611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b589061368a565b60405180910390fd5b5b5b5b5b5f611b6f30610a0c565b90505f600a548210159050808015611b935750600c60019054906101000a900460ff165b8015611bac5750600660149054906101000a900460ff16155b8015611bff575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c52575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ca5575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ce8576001600660146101000a81548160ff021916908315150217905550611ccd612553565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d97575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611da0575f90505b5f8115611fa55760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611dfe57505f601054115b15611e9657611e2b6064611e1d6010548861271690919063ffffffff16565b61272b90919063ffffffff16565b905060105460115482611e3e9190613736565b611e4891906137a4565b60135f828254611e589190612dd8565b9250508190555060105460125482611e709190613736565b611e7a91906137a4565b60145f828254611e8a9190612dd8565b92505081905550611f82565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611eed57505f600d54115b15611f8157611f1a6064611f0c600d548861271690919063ffffffff16565b61272b90919063ffffffff16565b9050600d54600e5482611f2d9190613736565b611f3791906137a4565b60135f828254611f479190612dd8565b92505081905550600d54600f5482611f5f9190613736565b611f6991906137a4565b60145f828254611f799190612dd8565b925050819055505b5b5f811115611f9657611f958730836122e7565b5b8085611fa291906137d4565b94505b611fb08787876122e7565b601554601081905550505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202890613877565b60405180910390fd5b61203c825f83612740565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690613905565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161216e9190612bea565b60405180910390a3612181835f84612745565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c9061349e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba9061352c565b60405180910390fd5b6123ce838383612740565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244890613993565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161253a9190612bea565b60405180910390a361254d848484612745565b50505050565b5f61255d30610a0c565b90505f6014546013546125709190612dd8565b90505f8083148061258057505f82145b1561258d57505050612714565b6014600a5461259c9190613736565b8311156125b5576014600a546125b29190613736565b92505b6125be8361274a565b5f4790505f6125ea846125dc6014548561271690919063ffffffff16565b61272b90919063ffffffff16565b90505f6013819055505f60148190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161263f906139de565b5f6040518083038185875af1925050503d805f8114612679576040519150601f19603f3d011682016040523d82523d5f602084013e61267e565b606091505b50508093505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516126c9906139de565b5f6040518083038185875af1925050503d805f8114612703576040519150601f19603f3d011682016040523d82523d5f602084013e612708565b606091505b50508093505050505050505b565b5f81836127239190613736565b905092915050565b5f818361273891906137a4565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115612766576127656139f2565b5b6040519080825280602002602001820160405280156127945781602001602082028036833780820191505090505b50905030815f815181106127ab576127aa613a1f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561284e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128729190613000565b8160018151811061288657612885613a1f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128eb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611356565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161294c959493929190613b03565b5f604051808303815f87803b158015612963575f80fd5b505af1158015612975573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b61299381612981565b811461299d575f80fd5b50565b5f813590506129ae8161298a565b92915050565b5f80604083850312156129ca576129c961297d565b5b5f6129d7858286016129a0565b92505060206129e8858286016129a0565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a29578082015181840152602081019050612a0e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a4e826129f2565b612a5881856129fc565b9350612a68818560208601612a0c565b612a7181612a34565b840191505092915050565b5f6020820190508181035f830152612a948184612a44565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ac582612a9c565b9050919050565b612ad581612abb565b8114612adf575f80fd5b50565b5f81359050612af081612acc565b92915050565b5f8060408385031215612b0c57612b0b61297d565b5b5f612b1985828601612ae2565b9250506020612b2a858286016129a0565b9150509250929050565b5f8115159050919050565b612b4881612b34565b82525050565b5f602082019050612b615f830184612b3f565b92915050565b5f819050919050565b5f612b8a612b85612b8084612a9c565b612b67565b612a9c565b9050919050565b5f612b9b82612b70565b9050919050565b5f612bac82612b91565b9050919050565b612bbc81612ba2565b82525050565b5f602082019050612bd55f830184612bb3565b92915050565b612be481612981565b82525050565b5f602082019050612bfd5f830184612bdb565b92915050565b5f805f60608486031215612c1a57612c1961297d565b5b5f612c2786828701612ae2565b9350506020612c3886828701612ae2565b9250506040612c49868287016129a0565b9150509250925092565b612c5c81612abb565b82525050565b5f602082019050612c755f830184612c53565b92915050565b5f60ff82169050919050565b612c9081612c7b565b82525050565b5f602082019050612ca95f830184612c87565b92915050565b5f60208284031215612cc457612cc361297d565b5b5f612cd1848285016129a0565b91505092915050565b5f60208284031215612cef57612cee61297d565b5b5f612cfc84828501612ae2565b91505092915050565b612d0e81612b34565b8114612d18575f80fd5b50565b5f81359050612d2981612d05565b92915050565b5f8060408385031215612d4557612d4461297d565b5b5f612d5285828601612ae2565b9250506020612d6385828601612d1b565b9150509250929050565b5f8060408385031215612d8357612d8261297d565b5b5f612d9085828601612ae2565b9250506020612da185828601612ae2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612de282612981565b9150612ded83612981565b9250828201905080821115612e0557612e04612dab565b5b92915050565b7f45524332303a204d757374206b656570206665657320617420333025206f72205f8201527f6c65737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e656024836129fc565b9150612e7082612e0b565b604082019050919050565b5f6020820190508181035f830152612e9281612e59565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612edd57607f821691505b602082108103612ef057612eef612e99565b5b50919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612f506025836129fc565b9150612f5b82612ef6565b604082019050919050565b5f6020820190508181035f830152612f7d81612f44565b9050919050565b7f54726164696e6720616c7265616479206163746976652e0000000000000000005f82015250565b5f612fb86017836129fc565b9150612fc382612f84565b602082019050919050565b5f6020820190508181035f830152612fe581612fac565b9050919050565b5f81519050612ffa81612acc565b92915050565b5f602082840312156130155761301461297d565b5b5f61302284828501612fec565b91505092915050565b5f60408201905061303e5f830185612c53565b61304b6020830184612c53565b9392505050565b5f6040820190506130655f830185612c53565b6130726020830184612bdb565b9392505050565b5f8151905061308781612d05565b92915050565b5f602082840312156130a2576130a161297d565b5b5f6130af84828501613079565b91505092915050565b5f819050919050565b5f6130db6130d66130d1846130b8565b612b67565b612981565b9050919050565b6130eb816130c1565b82525050565b5f60c0820190506131045f830189612c53565b6131116020830188612bdb565b61311e60408301876130e2565b61312b60608301866130e2565b6131386080830185612c53565b61314560a0830184612bdb565b979650505050505050565b5f8151905061315e8161298a565b92915050565b5f805f6060848603121561317b5761317a61297d565b5b5f61318886828701613150565b935050602061319986828701613150565b92505060406131aa86828701613150565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61320e6026836129fc565b9150613219826131b4565b604082019050919050565b5f6020820190508181035f83015261323b81613202565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132766020836129fc565b915061328182613242565b602082019050919050565b5f6020820190508181035f8301526132a38161326a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6133046024836129fc565b915061330f826132aa565b604082019050919050565b5f6020820190508181035f830152613331816132f8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133926022836129fc565b915061339d82613338565b604082019050919050565b5f6020820190508181035f8301526133bf81613386565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6133fa601d836129fc565b9150613405826133c6565b602082019050919050565b5f6020820190508181035f830152613427816133ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6134886025836129fc565b91506134938261342e565b604082019050919050565b5f6020820190508181035f8301526134b58161347c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135166023836129fc565b9150613521826134bc565b604082019050919050565b5f6020820190508181035f8301526135438161350a565b9050919050565b7f45524332303a2054726164696e67206973206e6f74206163746976652e0000005f82015250565b5f61357e601d836129fc565b91506135898261354a565b602082019050919050565b5f6020820190508181035f8301526135ab81613572565b9050919050565b7f45524332303a20427579207472616e7366657220616d6f756e742065786365655f8201527f647320746865206d61785472616e73616374696f6e416d6f756e742e00000000602082015250565b5f61360c603c836129fc565b9150613617826135b2565b604082019050919050565b5f6020820190508181035f83015261363981613600565b9050919050565b7f45524332303a204d61782077616c6c65742065786365656465640000000000005f82015250565b5f613674601a836129fc565b915061367f82613640565b602082019050919050565b5f6020820190508181035f8301526136a181613668565b9050919050565b7f45524332303a2053656c6c207472616e7366657220616d6f756e7420657863655f8201527f65647320746865206d61785472616e73616374696f6e416d6f756e742e000000602082015250565b5f613702603d836129fc565b915061370d826136a8565b604082019050919050565b5f6020820190508181035f83015261372f816136f6565b9050919050565b5f61374082612981565b915061374b83612981565b925082820261375981612981565b915082820484148315176137705761376f612dab565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137ae82612981565b91506137b983612981565b9250826137c9576137c8613777565b5b828204905092915050565b5f6137de82612981565b91506137e983612981565b925082820390508181111561380157613800612dab565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138616021836129fc565b915061386c82613807565b604082019050919050565b5f6020820190508181035f83015261388e81613855565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138ef6022836129fc565b91506138fa82613895565b604082019050919050565b5f6020820190508181035f83015261391c816138e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61397d6026836129fc565b915061398882613923565b604082019050919050565b5f6020820190508181035f8301526139aa81613971565b9050919050565b5f81905092915050565b50565b5f6139c95f836139b1565b91506139d4826139bb565b5f82019050919050565b5f6139e8826139be565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a7e81612abb565b82525050565b5f613a8f8383613a75565b60208301905092915050565b5f602082019050919050565b5f613ab182613a4c565b613abb8185613a56565b9350613ac683613a66565b805f5b83811015613af6578151613add8882613a84565b9750613ae883613a9b565b925050600181019050613ac9565b5085935050505092915050565b5f60a082019050613b165f830188612bdb565b613b2360208301876130e2565b8181036040830152613b358186613aa7565b9050613b446060830185612c53565b613b516080830184612bdb565b969550505050505056fea264697066735822122065e0720bd3fd7f949b475277194fc8a0dbfffba8c6254cfc65715d011130f8d564736f6c63430008150033

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

00000000000000000000000098f0473a915861c49f93dd0503df89998759371d00000000000000000000000098af149a5266cb5aab4f9a31eeb9a166f93fa1a1

-----Decoded View---------------
Arg [0] : _markWallet (address): 0x98F0473A915861C49f93dD0503dF89998759371D
Arg [1] : _devWallet (address): 0x98af149A5266cb5aaB4F9A31EEB9a166f93fA1a1

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000098f0473a915861c49f93dd0503df89998759371d
Arg [1] : 00000000000000000000000098af149a5266cb5aab4f9a31eeb9a166f93fa1a1


Deployed Bytecode Sourcemap

18041:10535:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22600:421;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3058:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4134:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18120:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3380:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4385:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18213:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3279:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4688:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21231:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18178:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22241:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18698:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18542:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3496:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1184:103;;;;;;;;;;;;;:::i;:::-;;23417:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18307:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;948:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3167:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4966:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3682:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18502:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23226:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18344:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18386:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21323:909;;;;;;;;;;;;;:::i;:::-;;18583:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3925:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18428:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1296:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18468:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22600:421;906:13;:11;:13::i;:::-;22746::::1;22727:16;:32;;;;22791:15;22770:18;:36;;;;22878:18;;22846:16;;:50;;;;:::i;:::-;22817:13;:79;;;;22921:13;;22907:11;:27;;;;22970:2;22953:13;;:19;;22945:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22600:421:::0;;:::o;3058:100::-;3112:13;3145:5;3138:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3058:100;:::o;4134:242::-;4253:4;4275:13;4291:12;:10;:12::i;:::-;4275:28;;4314:32;4323:5;4330:7;4339:6;4314:8;:32::i;:::-;4364:4;4357:11;;;4134:242;;;;:::o;18120:51::-;;;:::o;3380:108::-;3441:7;3468:12;;3461:19;;3380:108;:::o;4385:295::-;4516:4;4533:15;4551:12;:10;:12::i;:::-;4533:30;;4574:38;4590:4;4596:7;4605:6;4574:15;:38::i;:::-;4623:27;4633:4;4639:2;4643:6;4623:9;:27::i;:::-;4668:4;4661:11;;;4385:295;;;;;:::o;18213:53::-;18259:6;18213:53;:::o;3279:93::-;3337:5;3362:2;3355:9;;3279:93;:::o;4688:270::-;4803:4;4825:13;4841:12;:10;:12::i;:::-;4825:28;;4864:64;4873:5;4880:7;4917:10;4889:25;4899:5;4906:7;4889:9;:25::i;:::-;:38;;;;:::i;:::-;4864:8;:64::i;:::-;4946:4;4939:11;;;4688:270;;;;:::o;21231:83::-;21281:25;21287:10;21299:6;21281:5;:25::i;:::-;21231:83;:::o;18178:28::-;;;;;;;;;;;;;:::o;22241:350::-;906:13;:11;:13::i;:::-;22385::::1;22367:15;:31;;;;22429:15;22409:17;:35;;;;22488:17;;22470:15;;:35;;;;:::i;:::-;22455:12;:50;;;;22540:2;22524:12;;:18;;22516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22241:350:::0;;:::o;18698:28::-;;;;:::o;18542:31::-;;;;;;;;;;;;;:::o;3496:177::-;3615:7;3647:9;:18;3657:7;3647:18;;;;;;;;;;;;;;;;3640:25;;3496:177;;;:::o;1184:103::-;906:13;:11;:13::i;:::-;1249:30:::1;1276:1;1249:18;:30::i;:::-;1184:103::o:0;23417:167::-;906:13;:11;:13::i;:::-;23572:4:::1;23530:31;:39;23562:6;23530:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23417:167:::0;;:::o;18307:30::-;;;;;;;;;;;;;:::o;948:87::-;994:7;1021:6;;;;;;;;;;;1014:13;;948:87;:::o;3167:104::-;3223:13;3256:7;3249:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3167:104;:::o;4966:506::-;5086:4;5108:13;5124:12;:10;:12::i;:::-;5108:28;;5147:24;5174:25;5184:5;5191:7;5174:9;:25::i;:::-;5147:52;;5252:15;5232:16;:35;;5210:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5368:60;5377:5;5384:7;5412:15;5393:16;:34;5368:8;:60::i;:::-;5460:4;5453:11;;;;4966:506;;;;:::o;3682:234::-;3797:4;3819:13;3835:12;:10;:12::i;:::-;3819:28;;3858;3868:5;3875:2;3879:6;3858:9;:28::i;:::-;3904:4;3897:11;;;3682:234;;;;:::o;18502:33::-;;;;;;;;;;;;;:::o;23226:182::-;906:13;:11;:13::i;:::-;23342:8:::1;23311:19;:28;23331:7;23311:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23382:7;23366:34;;;23391:8;23366:34;;;;;;:::i;:::-;;;;;;;;23226:182:::0;;:::o;18344:32::-;;;;;;;;;;;;;:::o;18386:35::-;;;;:::o;21323:909::-;906:13;:11;:13::i;:::-;21385::::1;;;;;;;;;;;21384:14;21376:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;21474:15;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21456:55;;;21534:4;21554:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21456:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21440:13;;:147;;;;;;;;;;;;;;;;;;21598:66;21615:4;21630:13;;;;;;;;;;;21646:17;21598:8;:66::i;:::-;21682:13;;;;;;;;;;;21675:29;;;21727:15;21758:17;21675:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21800:58;21837:13;;;;;;;;;;;21853:4;21800:28;:58::i;:::-;21869:55;21903:13;;;;;;;;;;;21919:4;21869:25;:55::i;:::-;21938:15;:31;;;21977:21;22022:4;22042:24;22060:4;22042:9;:24::i;:::-;22081:1;22097::::0;22113:7:::1;:5;:7::i;:::-;22135:15;21938:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22191:4;22175:13;;:20;;;;;;;;;;;;;;;;;;22220:4;22206:11;;:18;;;;;;;;;;;;;;;;;;21323:909::o:0;18583:27::-;;;;:::o;3925:201::-;4059:7;4091:11;:18;4103:5;4091:18;;;;;;;;;;;;;;;:27;4110:7;4091:27;;;;;;;;;;;;;;;;4084:34;;3925:201;;;;:::o;18428:33::-;;;;:::o;1296:238::-;906:13;:11;:13::i;:::-;1419:1:::1;1399:22;;:8;:22;;::::0;1377:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1498:28;1517:8;1498:18;:28::i;:::-;1296:238:::0;:::o;18468:24::-;;;;:::o;1043:132::-;1118:12;:10;:12::i;:::-;1107:23;;:7;:5;:7::i;:::-;:23;;;1099:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1043:132::o;391:98::-;444:7;471:10;464:17;;391:98;:::o;7616:381::-;7769:1;7752:19;;:5;:19;;;7744:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7850:1;7831:21;;:7;:21;;;7823:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7935:6;7905:11;:18;7917:5;7905:18;;;;;;;;;;;;;;;:27;7924:7;7905:27;;;;;;;;;;;;;;;:36;;;;7973:7;7957:32;;7966:5;7957:32;;;7982:6;7957:32;;;;;;:::i;:::-;;;;;;;;7616:381;;;:::o;8005:502::-;8140:24;8167:25;8177:5;8184:7;8167:9;:25::i;:::-;8140:52;;8227:17;8207:16;:37;8203:297;;8307:6;8287:16;:26;;8261:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;8422:51;8431:5;8438:7;8466:6;8447:16;:25;8422:8;:51::i;:::-;8203:297;8129:378;8005:502;;;:::o;23592:3507::-;23740:1;23724:18;;:4;:18;;;23716:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23817:1;23803:16;;:2;:16;;;23795:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23887:1;23877:6;:11;23873:93;;23905:28;23921:4;23927:2;23931:1;23905:15;:28::i;:::-;23948:7;;23873:93;24005:7;:5;:7::i;:::-;23997:15;;:4;:15;;;;:45;;;;;24035:7;:5;:7::i;:::-;24029:13;;:2;:13;;;;23997:45;:78;;;;;24073:1;24059:16;;:2;:16;;;;23997:78;:112;;;;;18259:6;24092:17;;:2;:17;;;;23997:112;:138;;;;;24127:8;;;;;;;;;;;24126:9;23997:138;23979:1512;;;24167:13;;;;;;;;;;;24162:210;;24231:19;:25;24251:4;24231:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24260:19;:23;24280:2;24260:23;;;;;;;;;;;;;;;;;;;;;;;;;24231:52;24201:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;24162:210;24435:25;:31;24461:4;24435:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;24488:31;:35;24520:2;24488:35;;;;;;;;;;;;;;;;;;;;;;;;;24487:36;24435:88;24413:1067;;;24598:20;;24588:6;:30;;24558:164;;;;;;;;;;;;:::i;:::-;;;;;;;;;24797:9;;24780:13;24790:2;24780:9;:13::i;:::-;24771:6;:22;;;;:::i;:::-;:35;;24741:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;24413:1067;;;24958:25;:29;24984:2;24958:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;25009:31;:37;25041:4;25009:37;;;;;;;;;;;;;;;;;;;;;;;;;25008:38;24958:88;24936:544;;;25121:20;;25111:6;:30;;25081:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;24936:544;;;25273:31;:35;25305:2;25273:35;;;;;;;;;;;;;;;;;;;;;;;;;25268:212;;25385:9;;25368:13;25378:2;25368:9;:13::i;:::-;25359:6;:22;;;;:::i;:::-;:35;;25329:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;25268:212;24936:544;24413:1067;23979:1512;25504:28;25535:24;25553:4;25535:9;:24::i;:::-;25504:55;;25573:12;25612:18;;25588:20;:42;;25573:57;;25662:7;:35;;;;;25686:11;;;;;;;;;;;25662:35;:61;;;;;25715:8;;;;;;;;;;;25714:9;25662:61;:110;;;;;25741:25;:31;25767:4;25741:31;;;;;;;;;;;;;;;;;;;;;;;;;25740:32;25662:110;:153;;;;;25790:19;:25;25810:4;25790:25;;;;;;;;;;;;;;;;;;;;;;;;;25789:26;25662:153;:194;;;;;25833:19;:23;25853:2;25833:23;;;;;;;;;;;;;;;;;;;;;;;;;25832:24;25662:194;25644:328;;;25894:4;25883:8;;:15;;;;;;;;;;;;;;;;;;25916:10;:8;:10::i;:::-;25955:5;25944:8;;:16;;;;;;;;;;;;;;;;;;25644:328;25985:12;26001:8;;;;;;;;;;;26000:9;25985:24;;26027:19;:25;26047:4;26027:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26056:19;:23;26076:2;26056:23;;;;;;;;;;;;;;;;;;;;;;;;;26027:52;26023:100;;;26106:5;26096:15;;26023:100;26136:12;26170:7;26166:841;;;26222:25;:29;26248:2;26222:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;26271:1;26255:13;;:17;26222:50;26218:638;;;26300:34;26330:3;26300:25;26311:13;;26300:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26293:41;;26403:13;;26383:16;;26376:4;:23;;;;:::i;:::-;26375:41;;;;:::i;:::-;26353:18;;:63;;;;;;;:::i;:::-;;;;;;;;26489:13;;26467:18;;26460:4;:25;;;;:::i;:::-;26459:43;;;;:::i;:::-;26435:20;;:67;;;;;;;:::i;:::-;;;;;;;;26218:638;;;26564:25;:31;26590:4;26564:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26614:1;26599:12;;:16;26564:51;26560:296;;;26643:33;26672:3;26643:24;26654:12;;26643:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26636:40;;26744:12;;26725:15;;26718:4;:22;;;;:::i;:::-;26717:39;;;;:::i;:::-;26695:18;;:61;;;;;;;:::i;:::-;;;;;;;;26828:12;;26807:17;;26800:4;:24;;;;:::i;:::-;26799:41;;;;:::i;:::-;26775:20;;:65;;;;;;;:::i;:::-;;;;;;;;26560:296;26218:638;26884:1;26877:4;:8;26873:91;;;26906:42;26922:4;26936;26943;26906:15;:42::i;:::-;26873:91;26991:4;26981:14;;;;;:::i;:::-;;;26166:841;27020:33;27036:4;27042:2;27046:6;27020:15;:33::i;:::-;27080:11;;27064:13;:27;;;;23705:3394;;;;23592:3507;;;;:::o;6929:679::-;7032:1;7013:21;;:7;:21;;;7005:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7086:49;7107:7;7124:1;7128:6;7086:20;:49::i;:::-;7149:22;7174:9;:18;7184:7;7174:18;;;;;;;;;;;;;;;;7149:43;;7229:6;7211:14;:24;;7203:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7348:6;7331:14;:23;7310:9;:18;7320:7;7310:18;;;;;;;;;;;;;;;:44;;;;7465:6;7449:12;;:22;;;;;;;;;;;7527:1;7501:37;;7510:7;7501:37;;;7531:6;7501:37;;;;;;:::i;:::-;;;;;;;;7552:48;7572:7;7589:1;7593:6;7552:19;:48::i;:::-;6994:614;6929:679;;:::o;1543:191::-;1617:16;1636:6;;;;;;;;;;;1617:25;;1662:8;1653:6;;:17;;;;;;;;;;;;;;;;;;1717:8;1686:40;;1707:8;1686:40;;;;;;;;;;;;1606:128;1543:191;:::o;23029:189::-;23146:5;23112:25;:31;23138:4;23112:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23204:5;23170:40;;23198:4;23170:40;;;;;;;;;;;;23029:189;;:::o;5481:881::-;5628:1;5612:18;;:4;:18;;;5604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5705:1;5691:16;;:2;:16;;;5683:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5761:38;5782:4;5788:2;5792:6;5761:20;:38::i;:::-;5813:19;5835:9;:15;5845:4;5835:15;;;;;;;;;;;;;;;;5813:37;;5898:6;5883:11;:21;;5861:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;6038:6;6024:11;:20;6006:9;:15;6016:4;6006:15;;;;;;;;;;;;;;;:38;;;;6241:6;6224:9;:13;6234:2;6224:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;6292:2;6277:26;;6286:4;6277:26;;;6296:6;6277:26;;;;;;:::i;:::-;;;;;;;;6317:37;6337:4;6343:2;6347:6;6317:19;:37::i;:::-;5593:769;5481:881;;;:::o;27620:953::-;27659:23;27685:24;27703:4;27685:9;:24::i;:::-;27659:50;;27720:25;27769:20;;27748:18;;:41;;;;:::i;:::-;27720:69;;27800:12;27849:1;27830:15;:20;:46;;;;27875:1;27854:17;:22;27830:46;27826:85;;;27893:7;;;;;27826:85;27967:2;27946:18;;:23;;;;:::i;:::-;27928:15;:41;27924:115;;;28025:2;28004:18;;:23;;;;:::i;:::-;27986:41;;27924:115;28052:33;28069:15;28052:16;:33::i;:::-;28099:18;28120:21;28099:42;;28155:25;28183:83;28238:17;28183:36;28198:20;;28183:10;:14;;:36;;;;:::i;:::-;:40;;:83;;;;:::i;:::-;28155:111;;28301:1;28280:18;:22;;;;28336:1;28313:20;:24;;;;28373:17;;;;;;;;;;;28365:31;;28404:17;28365:85;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28351:99;;;;;28486:15;;;;;;;;;;;28478:29;;28529:21;28478:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28464:101;;;;;27648:925;;;;;27620:953;:::o;10526:98::-;10584:7;10615:1;10611;:5;;;;:::i;:::-;10604:12;;10526:98;;;;:::o;10632:::-;10690:7;10721:1;10717;:5;;;;:::i;:::-;10710:12;;10632:98;;;;:::o;8515:125::-;;;;:::o;8648:124::-;;;;:::o;27108:503::-;27174:21;27212:1;27198:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27174:40;;27243:4;27225;27230:1;27225:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27269:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27259:4;27264:1;27259:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27305:62;27322:4;27337:15;27355:11;27305:8;:62::i;:::-;27407:15;:66;;;27488:11;27514:1;27530:4;27557;27577:15;27407:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27163:448;27108:503;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5881:118;;:::o;6005:222::-;6098:4;6136:2;6125:9;6121:18;6113:26;;6149:71;6217:1;6206:9;6202:17;6193:6;6149:71;:::i;:::-;6005:222;;;;:::o;6233:86::-;6268:7;6308:4;6301:5;6297:16;6286:27;;6233:86;;;:::o;6325:112::-;6408:22;6424:5;6408:22;:::i;:::-;6403:3;6396:35;6325:112;;:::o;6443:214::-;6532:4;6570:2;6559:9;6555:18;6547:26;;6583:67;6647:1;6636:9;6632:17;6623:6;6583:67;:::i;:::-;6443:214;;;;:::o;6663:329::-;6722:6;6771:2;6759:9;6750:7;6746:23;6742:32;6739:119;;;6777:79;;:::i;:::-;6739:119;6897:1;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6868:117;6663:329;;;;:::o;6998:::-;7057:6;7106:2;7094:9;7085:7;7081:23;7077:32;7074:119;;;7112:79;;:::i;:::-;7074:119;7232:1;7257:53;7302:7;7293:6;7282:9;7278:22;7257:53;:::i;:::-;7247:63;;7203:117;6998:329;;;;:::o;7333:116::-;7403:21;7418:5;7403:21;:::i;:::-;7396:5;7393:32;7383:60;;7439:1;7436;7429:12;7383:60;7333:116;:::o;7455:133::-;7498:5;7536:6;7523:20;7514:29;;7552:30;7576:5;7552:30;:::i;:::-;7455:133;;;;:::o;7594:468::-;7659:6;7667;7716:2;7704:9;7695:7;7691:23;7687:32;7684:119;;;7722:79;;:::i;:::-;7684:119;7842:1;7867:53;7912:7;7903:6;7892:9;7888:22;7867:53;:::i;:::-;7857:63;;7813:117;7969:2;7995:50;8037:7;8028:6;8017:9;8013:22;7995:50;:::i;:::-;7985:60;;7940:115;7594:468;;;;;:::o;8068:474::-;8136:6;8144;8193:2;8181:9;8172:7;8168:23;8164:32;8161:119;;;8199:79;;:::i;:::-;8161:119;8319:1;8344:53;8389:7;8380:6;8369:9;8365:22;8344:53;:::i;:::-;8334:63;;8290:117;8446:2;8472:53;8517:7;8508:6;8497:9;8493:22;8472:53;:::i;:::-;8462:63;;8417:118;8068:474;;;;;:::o;8548:180::-;8596:77;8593:1;8586:88;8693:4;8690:1;8683:15;8717:4;8714:1;8707:15;8734:191;8774:3;8793:20;8811:1;8793:20;:::i;:::-;8788:25;;8827:20;8845:1;8827:20;:::i;:::-;8822:25;;8870:1;8867;8863:9;8856:16;;8891:3;8888:1;8885:10;8882:36;;;8898:18;;:::i;:::-;8882:36;8734:191;;;;:::o;8931:223::-;9071:34;9067:1;9059:6;9055:14;9048:58;9140:6;9135:2;9127:6;9123:15;9116:31;8931:223;:::o;9160:366::-;9302:3;9323:67;9387:2;9382:3;9323:67;:::i;:::-;9316:74;;9399:93;9488:3;9399:93;:::i;:::-;9517:2;9512:3;9508:12;9501:19;;9160:366;;;:::o;9532:419::-;9698:4;9736:2;9725:9;9721:18;9713:26;;9785:9;9779:4;9775:20;9771:1;9760:9;9756:17;9749:47;9813:131;9939:4;9813:131;:::i;:::-;9805:139;;9532:419;;;:::o;9957:180::-;10005:77;10002:1;9995:88;10102:4;10099:1;10092:15;10126:4;10123:1;10116:15;10143:320;10187:6;10224:1;10218:4;10214:12;10204:22;;10271:1;10265:4;10261:12;10292:18;10282:81;;10348:4;10340:6;10336:17;10326:27;;10282:81;10410:2;10402:6;10399:14;10379:18;10376:38;10373:84;;10429:18;;:::i;:::-;10373:84;10194:269;10143:320;;;:::o;10469:224::-;10609:34;10605:1;10597:6;10593:14;10586:58;10678:7;10673:2;10665:6;10661:15;10654:32;10469:224;:::o;10699:366::-;10841:3;10862:67;10926:2;10921:3;10862:67;:::i;:::-;10855:74;;10938:93;11027:3;10938:93;:::i;:::-;11056:2;11051:3;11047:12;11040:19;;10699:366;;;:::o;11071:419::-;11237:4;11275:2;11264:9;11260:18;11252:26;;11324:9;11318:4;11314:20;11310:1;11299:9;11295:17;11288:47;11352:131;11478:4;11352:131;:::i;:::-;11344:139;;11071:419;;;:::o;11496:173::-;11636:25;11632:1;11624:6;11620:14;11613:49;11496:173;:::o;11675:366::-;11817:3;11838:67;11902:2;11897:3;11838:67;:::i;:::-;11831:74;;11914:93;12003:3;11914:93;:::i;:::-;12032:2;12027:3;12023:12;12016:19;;11675:366;;;:::o;12047:419::-;12213:4;12251:2;12240:9;12236:18;12228:26;;12300:9;12294:4;12290:20;12286:1;12275:9;12271:17;12264:47;12328:131;12454:4;12328:131;:::i;:::-;12320:139;;12047:419;;;:::o;12472:143::-;12529:5;12560:6;12554:13;12545:22;;12576:33;12603:5;12576:33;:::i;:::-;12472:143;;;;:::o;12621:351::-;12691:6;12740:2;12728:9;12719:7;12715:23;12711:32;12708:119;;;12746:79;;:::i;:::-;12708:119;12866:1;12891:64;12947:7;12938:6;12927:9;12923:22;12891:64;:::i;:::-;12881:74;;12837:128;12621:351;;;;:::o;12978:332::-;13099:4;13137:2;13126:9;13122:18;13114:26;;13150:71;13218:1;13207:9;13203:17;13194:6;13150:71;:::i;:::-;13231:72;13299:2;13288:9;13284:18;13275:6;13231:72;:::i;:::-;12978:332;;;;;:::o;13316:::-;13437:4;13475:2;13464:9;13460:18;13452:26;;13488:71;13556:1;13545:9;13541:17;13532:6;13488:71;:::i;:::-;13569:72;13637:2;13626:9;13622:18;13613:6;13569:72;:::i;:::-;13316:332;;;;;:::o;13654:137::-;13708:5;13739:6;13733:13;13724:22;;13755:30;13779:5;13755:30;:::i;:::-;13654:137;;;;:::o;13797:345::-;13864:6;13913:2;13901:9;13892:7;13888:23;13884:32;13881:119;;;13919:79;;:::i;:::-;13881:119;14039:1;14064:61;14117:7;14108:6;14097:9;14093:22;14064:61;:::i;:::-;14054:71;;14010:125;13797:345;;;;:::o;14148:85::-;14193:7;14222:5;14211:16;;14148:85;;;:::o;14239:158::-;14297:9;14330:61;14348:42;14357:32;14383:5;14357:32;:::i;:::-;14348:42;:::i;:::-;14330:61;:::i;:::-;14317:74;;14239:158;;;:::o;14403:147::-;14498:45;14537:5;14498:45;:::i;:::-;14493:3;14486:58;14403:147;;:::o;14556:807::-;14805:4;14843:3;14832:9;14828:19;14820:27;;14857:71;14925:1;14914:9;14910:17;14901:6;14857:71;:::i;:::-;14938:72;15006:2;14995:9;14991:18;14982:6;14938:72;:::i;:::-;15020:80;15096:2;15085:9;15081:18;15072:6;15020:80;:::i;:::-;15110;15186:2;15175:9;15171:18;15162:6;15110:80;:::i;:::-;15200:73;15268:3;15257:9;15253:19;15244:6;15200:73;:::i;:::-;15283;15351:3;15340:9;15336:19;15327:6;15283:73;:::i;:::-;14556:807;;;;;;;;;:::o;15369:143::-;15426:5;15457:6;15451:13;15442:22;;15473:33;15500:5;15473:33;:::i;:::-;15369:143;;;;:::o;15518:663::-;15606:6;15614;15622;15671:2;15659:9;15650:7;15646:23;15642:32;15639:119;;;15677:79;;:::i;:::-;15639:119;15797:1;15822:64;15878:7;15869:6;15858:9;15854:22;15822:64;:::i;:::-;15812:74;;15768:128;15935:2;15961:64;16017:7;16008:6;15997:9;15993:22;15961:64;:::i;:::-;15951:74;;15906:129;16074:2;16100:64;16156:7;16147:6;16136:9;16132:22;16100:64;:::i;:::-;16090:74;;16045:129;15518:663;;;;;:::o;16187:225::-;16327:34;16323:1;16315:6;16311:14;16304:58;16396:8;16391:2;16383:6;16379:15;16372:33;16187:225;:::o;16418:366::-;16560:3;16581:67;16645:2;16640:3;16581:67;:::i;:::-;16574:74;;16657:93;16746:3;16657:93;:::i;:::-;16775:2;16770:3;16766:12;16759:19;;16418:366;;;:::o;16790:419::-;16956:4;16994:2;16983:9;16979:18;16971:26;;17043:9;17037:4;17033:20;17029:1;17018:9;17014:17;17007:47;17071:131;17197:4;17071:131;:::i;:::-;17063:139;;16790:419;;;:::o;17215:182::-;17355:34;17351:1;17343:6;17339:14;17332:58;17215:182;:::o;17403:366::-;17545:3;17566:67;17630:2;17625:3;17566:67;:::i;:::-;17559:74;;17642:93;17731:3;17642:93;:::i;:::-;17760:2;17755:3;17751:12;17744:19;;17403:366;;;:::o;17775:419::-;17941:4;17979:2;17968:9;17964:18;17956:26;;18028:9;18022:4;18018:20;18014:1;18003:9;17999:17;17992:47;18056:131;18182:4;18056:131;:::i;:::-;18048:139;;17775:419;;;:::o;18200:223::-;18340:34;18336:1;18328:6;18324:14;18317:58;18409:6;18404:2;18396:6;18392:15;18385:31;18200:223;:::o;18429:366::-;18571:3;18592:67;18656:2;18651:3;18592:67;:::i;:::-;18585:74;;18668:93;18757:3;18668:93;:::i;:::-;18786:2;18781:3;18777:12;18770:19;;18429:366;;;:::o;18801:419::-;18967:4;19005:2;18994:9;18990:18;18982:26;;19054:9;19048:4;19044:20;19040:1;19029:9;19025:17;19018:47;19082:131;19208:4;19082:131;:::i;:::-;19074:139;;18801:419;;;:::o;19226:221::-;19366:34;19362:1;19354:6;19350:14;19343:58;19435:4;19430:2;19422:6;19418:15;19411:29;19226:221;:::o;19453:366::-;19595:3;19616:67;19680:2;19675:3;19616:67;:::i;:::-;19609:74;;19692:93;19781:3;19692:93;:::i;:::-;19810:2;19805:3;19801:12;19794:19;;19453:366;;;:::o;19825:419::-;19991:4;20029:2;20018:9;20014:18;20006:26;;20078:9;20072:4;20068:20;20064:1;20053:9;20049:17;20042:47;20106:131;20232:4;20106:131;:::i;:::-;20098:139;;19825:419;;;:::o;20250:179::-;20390:31;20386:1;20378:6;20374:14;20367:55;20250:179;:::o;20435:366::-;20577:3;20598:67;20662:2;20657:3;20598:67;:::i;:::-;20591:74;;20674:93;20763:3;20674:93;:::i;:::-;20792:2;20787:3;20783:12;20776:19;;20435:366;;;:::o;20807:419::-;20973:4;21011:2;21000:9;20996:18;20988:26;;21060:9;21054:4;21050:20;21046:1;21035:9;21031:17;21024:47;21088:131;21214:4;21088:131;:::i;:::-;21080:139;;20807:419;;;:::o;21232:224::-;21372:34;21368:1;21360:6;21356:14;21349:58;21441:7;21436:2;21428:6;21424:15;21417:32;21232:224;:::o;21462:366::-;21604:3;21625:67;21689:2;21684:3;21625:67;:::i;:::-;21618:74;;21701:93;21790:3;21701:93;:::i;:::-;21819:2;21814:3;21810:12;21803:19;;21462:366;;;:::o;21834:419::-;22000:4;22038:2;22027:9;22023:18;22015:26;;22087:9;22081:4;22077:20;22073:1;22062:9;22058:17;22051:47;22115:131;22241:4;22115:131;:::i;:::-;22107:139;;21834:419;;;:::o;22259:222::-;22399:34;22395:1;22387:6;22383:14;22376:58;22468:5;22463:2;22455:6;22451:15;22444:30;22259:222;:::o;22487:366::-;22629:3;22650:67;22714:2;22709:3;22650:67;:::i;:::-;22643:74;;22726:93;22815:3;22726:93;:::i;:::-;22844:2;22839:3;22835:12;22828:19;;22487:366;;;:::o;22859:419::-;23025:4;23063:2;23052:9;23048:18;23040:26;;23112:9;23106:4;23102:20;23098:1;23087:9;23083:17;23076:47;23140:131;23266:4;23140:131;:::i;:::-;23132:139;;22859:419;;;:::o;23284:179::-;23424:31;23420:1;23412:6;23408:14;23401:55;23284:179;:::o;23469:366::-;23611:3;23632:67;23696:2;23691:3;23632:67;:::i;:::-;23625:74;;23708:93;23797:3;23708:93;:::i;:::-;23826:2;23821:3;23817:12;23810:19;;23469:366;;;:::o;23841:419::-;24007:4;24045:2;24034:9;24030:18;24022:26;;24094:9;24088:4;24084:20;24080:1;24069:9;24065:17;24058:47;24122:131;24248:4;24122:131;:::i;:::-;24114:139;;23841:419;;;:::o;24266:247::-;24406:34;24402:1;24394:6;24390:14;24383:58;24475:30;24470:2;24462:6;24458:15;24451:55;24266:247;:::o;24519:366::-;24661:3;24682:67;24746:2;24741:3;24682:67;:::i;:::-;24675:74;;24758:93;24847:3;24758:93;:::i;:::-;24876:2;24871:3;24867:12;24860:19;;24519:366;;;:::o;24891:419::-;25057:4;25095:2;25084:9;25080:18;25072:26;;25144:9;25138:4;25134:20;25130:1;25119:9;25115:17;25108:47;25172:131;25298:4;25172:131;:::i;:::-;25164:139;;24891:419;;;:::o;25316:176::-;25456:28;25452:1;25444:6;25440:14;25433:52;25316:176;:::o;25498:366::-;25640:3;25661:67;25725:2;25720:3;25661:67;:::i;:::-;25654:74;;25737:93;25826:3;25737:93;:::i;:::-;25855:2;25850:3;25846:12;25839:19;;25498:366;;;:::o;25870:419::-;26036:4;26074:2;26063:9;26059:18;26051:26;;26123:9;26117:4;26113:20;26109:1;26098:9;26094:17;26087:47;26151:131;26277:4;26151:131;:::i;:::-;26143:139;;25870:419;;;:::o;26295:248::-;26435:34;26431:1;26423:6;26419:14;26412:58;26504:31;26499:2;26491:6;26487:15;26480:56;26295:248;:::o;26549:366::-;26691:3;26712:67;26776:2;26771:3;26712:67;:::i;:::-;26705:74;;26788:93;26877:3;26788:93;:::i;:::-;26906:2;26901:3;26897:12;26890:19;;26549:366;;;:::o;26921:419::-;27087:4;27125:2;27114:9;27110:18;27102:26;;27174:9;27168:4;27164:20;27160:1;27149:9;27145:17;27138:47;27202:131;27328:4;27202:131;:::i;:::-;27194:139;;26921:419;;;:::o;27346:410::-;27386:7;27409:20;27427:1;27409:20;:::i;:::-;27404:25;;27443:20;27461:1;27443:20;:::i;:::-;27438:25;;27498:1;27495;27491:9;27520:30;27538:11;27520:30;:::i;:::-;27509:41;;27699:1;27690:7;27686:15;27683:1;27680:22;27660:1;27653:9;27633:83;27610:139;;27729:18;;:::i;:::-;27610:139;27394:362;27346:410;;;;:::o;27762:180::-;27810:77;27807:1;27800:88;27907:4;27904:1;27897:15;27931:4;27928:1;27921:15;27948:185;27988:1;28005:20;28023:1;28005:20;:::i;:::-;28000:25;;28039:20;28057:1;28039:20;:::i;:::-;28034:25;;28078:1;28068:35;;28083:18;;:::i;:::-;28068:35;28125:1;28122;28118:9;28113:14;;27948:185;;;;:::o;28139:194::-;28179:4;28199:20;28217:1;28199:20;:::i;:::-;28194:25;;28233:20;28251:1;28233:20;:::i;:::-;28228:25;;28277:1;28274;28270:9;28262:17;;28301:1;28295:4;28292:11;28289:37;;;28306:18;;:::i;:::-;28289:37;28139:194;;;;:::o;28339:220::-;28479:34;28475:1;28467:6;28463:14;28456:58;28548:3;28543:2;28535:6;28531:15;28524:28;28339:220;:::o;28565:366::-;28707:3;28728:67;28792:2;28787:3;28728:67;:::i;:::-;28721:74;;28804:93;28893:3;28804:93;:::i;:::-;28922:2;28917:3;28913:12;28906:19;;28565:366;;;:::o;28937:419::-;29103:4;29141:2;29130:9;29126:18;29118:26;;29190:9;29184:4;29180:20;29176:1;29165:9;29161:17;29154:47;29218:131;29344:4;29218:131;:::i;:::-;29210:139;;28937:419;;;:::o;29362:221::-;29502:34;29498:1;29490:6;29486:14;29479:58;29571:4;29566:2;29558:6;29554:15;29547:29;29362:221;:::o;29589:366::-;29731:3;29752:67;29816:2;29811:3;29752:67;:::i;:::-;29745:74;;29828:93;29917:3;29828:93;:::i;:::-;29946:2;29941:3;29937:12;29930:19;;29589:366;;;:::o;29961:419::-;30127:4;30165:2;30154:9;30150:18;30142:26;;30214:9;30208:4;30204:20;30200:1;30189:9;30185:17;30178:47;30242:131;30368:4;30242:131;:::i;:::-;30234:139;;29961:419;;;:::o;30386:225::-;30526:34;30522:1;30514:6;30510:14;30503:58;30595:8;30590:2;30582:6;30578:15;30571:33;30386:225;:::o;30617:366::-;30759:3;30780:67;30844:2;30839:3;30780:67;:::i;:::-;30773:74;;30856:93;30945:3;30856:93;:::i;:::-;30974:2;30969:3;30965:12;30958:19;;30617:366;;;:::o;30989:419::-;31155:4;31193:2;31182:9;31178:18;31170:26;;31242:9;31236:4;31232:20;31228:1;31217:9;31213:17;31206:47;31270:131;31396:4;31270:131;:::i;:::-;31262:139;;30989:419;;;:::o;31414:147::-;31515:11;31552:3;31537:18;;31414:147;;;;:::o;31567:114::-;;:::o;31687:398::-;31846:3;31867:83;31948:1;31943:3;31867:83;:::i;:::-;31860:90;;31959:93;32048:3;31959:93;:::i;:::-;32077:1;32072:3;32068:11;32061:18;;31687:398;;;:::o;32091:379::-;32275:3;32297:147;32440:3;32297:147;:::i;:::-;32290:154;;32461:3;32454:10;;32091:379;;;:::o;32476:180::-;32524:77;32521:1;32514:88;32621:4;32618:1;32611:15;32645:4;32642:1;32635:15;32662:180;32710:77;32707:1;32700:88;32807:4;32804:1;32797:15;32831:4;32828:1;32821:15;32848:114;32915:6;32949:5;32943:12;32933:22;;32848:114;;;:::o;32968:184::-;33067:11;33101:6;33096:3;33089:19;33141:4;33136:3;33132:14;33117:29;;32968:184;;;;:::o;33158:132::-;33225:4;33248:3;33240:11;;33278:4;33273:3;33269:14;33261:22;;33158:132;;;:::o;33296:108::-;33373:24;33391:5;33373:24;:::i;:::-;33368:3;33361:37;33296:108;;:::o;33410:179::-;33479:10;33500:46;33542:3;33534:6;33500:46;:::i;:::-;33578:4;33573:3;33569:14;33555:28;;33410:179;;;;:::o;33595:113::-;33665:4;33697;33692:3;33688:14;33680:22;;33595:113;;;:::o;33744:732::-;33863:3;33892:54;33940:5;33892:54;:::i;:::-;33962:86;34041:6;34036:3;33962:86;:::i;:::-;33955:93;;34072:56;34122:5;34072:56;:::i;:::-;34151:7;34182:1;34167:284;34192:6;34189:1;34186:13;34167:284;;;34268:6;34262:13;34295:63;34354:3;34339:13;34295:63;:::i;:::-;34288:70;;34381:60;34434:6;34381:60;:::i;:::-;34371:70;;34227:224;34214:1;34211;34207:9;34202:14;;34167:284;;;34171:14;34467:3;34460:10;;33868:608;;;33744:732;;;;:::o;34482:831::-;34745:4;34783:3;34772:9;34768:19;34760:27;;34797:71;34865:1;34854:9;34850:17;34841:6;34797:71;:::i;:::-;34878:80;34954:2;34943:9;34939:18;34930:6;34878:80;:::i;:::-;35005:9;34999:4;34995:20;34990:2;34979:9;34975:18;34968:48;35033:108;35136:4;35127:6;35033:108;:::i;:::-;35025:116;;35151:72;35219:2;35208:9;35204:18;35195:6;35151:72;:::i;:::-;35233:73;35301:3;35290:9;35286:19;35277:6;35233:73;:::i;:::-;34482:831;;;;;;;;:::o

Swarm Source

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