ETH Price: $2,399.27 (-4.22%)
Gas: 1.55 Gwei

Token

Pepe is real (Pepe)
 

Overview

Max Total Supply

100,000,000 Pepe

Holders

54

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
634,006.069382840160364812 Pepe

Value
$0.00
0x4cb94b844cb572c632a00d8833880869b99a6240
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:
Pepe

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-25
*/

/*

https://pepeisreal.vip/

*/

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

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

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

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 recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

    function _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 {
            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 IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

    function 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 Pepe is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address private taxWallet1;
    address private taxWallet2;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

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

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 public deadBlocks;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event walletOneUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
    event walletTwoUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("Pepe is real", "Pepe") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);

        uniswapV2Router = _uniswapV2Router;

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

        excludeFromMaxTransaction(address(uniswapV2Pair), true);

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 100_000_000 * 1e18;

        maxTransactionAmount = (totalSupply * 2) / 100;

        maxWallet = (totalSupply * 2) / 100;

        swapTokensAtAmount = (totalSupply * 2) / 10000;

        taxWallet1 = msg.sender;

        taxWallet2 = msg.sender;

        excludeFromFees(owner(), true);

        excludeFromFees(address(this), true);

        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);

        excludeFromMaxTransaction(address(this), true);

        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        deadBlocks = _deadBlocks;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

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

    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

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

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

    function whitelistContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;

        _isExcludedFromFees[_whitelist] = isWL;
    }

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

    function manualSwap(uint256 amount) external {
        require(_msgSender() == taxWallet1);
        require(
            amount <= balanceOf(address(this)) && amount > 0,
            "Wrong amount"
        );
        swapTokensForEth(amount);
    }

    function manualSend() external {
        bool success;
        (success, ) = address(taxWallet1).call{value: address(this).balance}(
            ""
        );
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyTotalFees = buyMarketingFee;
        require(buyTotalFees <= 10, "Must keep fees at 5% or less");
    }

    function updateSellFees(uint256 _marketingFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellTotalFees = sellMarketingFee;
        require(sellTotalFees <= 10, "Must keep fees at 5% or less");
    }

    function updateWallets(
        address newWalletOne,
        address newWalletTwo
    ) external onlyOwner {
        emit walletOneUpdated(newWalletOne, taxWallet1);
        emit walletTwoUpdated(newWalletTwo, taxWallet2);
        taxWallet1 = newWalletOne;
        taxWallet2 = newWalletTwo;
    }

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

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

        uint256 blockNum = block.number;

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if ((launchedAt + deadBlocks) >= blockNum) {
                    buyMarketingFee = 25;
                    buyTotalFees = buyMarketingFee;

                    sellMarketingFee = 45;
                    sellTotalFees = sellMarketingFee;
                } else {
                    buyMarketingFee = 2;
                    buyTotalFees = buyMarketingFee;

                    sellMarketingFee = 2;
                    sellTotalFees = sellMarketingFee;
                }

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            (swapInBlock[blockNum] < 2) &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            ++swapInBlock[blockNum];

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
            }

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        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, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

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

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        (success, ) = address(taxWallet1).call{
            value: address(this).balance / 2
        }("");
        (success, ) = address(taxWallet2).call{value: address(this).balance}(
            ""
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"walletOneUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"walletTwoUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWalletOne","type":"address"},{"internalType":"address","name":"newWalletTwo","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff0219169083151502179055505f600b60026101000a81548160ff0219169083151502179055503480156200005e575f80fd5b506040518060400160405280600c81526020017f50657065206973207265616c00000000000000000000000000000000000000008152506040518060400160405280600481526020017f50657065000000000000000000000000000000000000000000000000000000008152508160039081620000dc919062000c5e565b508060049081620000ee919062000c5e565b5050506200011162000105620004d260201b60201c565b620004d960201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013c8160016200059c60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e0919062000da7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026c919062000da7565b6040518363ffffffff1660e01b81526004016200028b92919062000de8565b6020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000da7565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031660a05160016200059c60201b60201c565b6200032b60a05160016200068360201b60201c565b5f6a52b7d2dcc80cd2e4000000905060646002826200034b919062000e40565b62000357919062000eb7565b60088190555060646002826200036e919062000e40565b6200037a919062000eb7565b600a8190555061271060028262000392919062000e40565b6200039e919062000eb7565b6009819055503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000446620004386200072160201b60201c565b60016200074960201b60201c565b620004593060016200074960201b60201c565b6200046e61dead60016200074960201b60201c565b62000490620004826200072160201b60201c565b60016200059c60201b60201c565b620004a33060016200059c60201b60201c565b620004b861dead60016200059c60201b60201c565b620004ca33826200088060201b60201c565b505062001077565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ac620004d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005d26200072160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200062b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006229062000f4c565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000759620004d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200077f6200072160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007cf9062000f4c565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000874919062000f88565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e89062000ff1565b60405180910390fd5b620009045f8383620009f060201b60201c565b8060025f82825462000917919062001011565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200096b919062001011565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009d191906200105c565b60405180910390a3620009ec5f8383620009f560201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a7657607f821691505b60208210810362000a8c5762000a8b62000a31565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000af07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ab3565b62000afc868362000ab3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b4662000b4062000b3a8462000b14565b62000b1d565b62000b14565b9050919050565b5f819050919050565b62000b618362000b26565b62000b7962000b708262000b4d565b84845462000abf565b825550505050565b5f90565b62000b8f62000b81565b62000b9c81848462000b56565b505050565b5b8181101562000bc35762000bb75f8262000b85565b60018101905062000ba2565b5050565b601f82111562000c125762000bdc8162000a92565b62000be78462000aa4565b8101602085101562000bf7578190505b62000c0f62000c068562000aa4565b83018262000ba1565b50505b505050565b5f82821c905092915050565b5f62000c345f198460080262000c17565b1980831691505092915050565b5f62000c4e838362000c23565b9150826002028217905092915050565b62000c6982620009fa565b67ffffffffffffffff81111562000c855762000c8462000a04565b5b62000c91825462000a5e565b62000c9e82828562000bc7565b5f60209050601f83116001811462000cd4575f841562000cbf578287015190505b62000ccb858262000c41565b86555062000d3a565b601f19841662000ce48662000a92565b5f5b8281101562000d0d5784890151825560018201915060208501945060208101905062000ce6565b8683101562000d2d578489015162000d29601f89168262000c23565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d718262000d46565b9050919050565b62000d838162000d65565b811462000d8e575f80fd5b50565b5f8151905062000da18162000d78565b92915050565b5f6020828403121562000dbf5762000dbe62000d42565b5b5f62000dce8482850162000d91565b91505092915050565b62000de28162000d65565b82525050565b5f60408201905062000dfd5f83018562000dd7565b62000e0c602083018462000dd7565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e4c8262000b14565b915062000e598362000b14565b925082820262000e698162000b14565b9150828204841483151762000e835762000e8262000e13565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000ec38262000b14565b915062000ed08362000b14565b92508262000ee35762000ee262000e8a565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f3460208362000eee565b915062000f418262000efe565b602082019050919050565b5f6020820190508181035f83015262000f658162000f26565b9050919050565b5f8115159050919050565b62000f828162000f6c565b82525050565b5f60208201905062000f9d5f83018462000f77565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000fd9601f8362000eee565b915062000fe68262000fa3565b602082019050919050565b5f6020820190508181035f8301526200100a8162000fcb565b9050919050565b5f6200101d8262000b14565b91506200102a8362000b14565b925082820190508082111562001045576200104462000e13565b5b92915050565b620010568162000b14565b82525050565b5f602082019050620010715f8301846200104b565b92915050565b60805160a05161461f620010b55f395f8181610dce01526113cc01525f8181610aeb01528181612dc801528181612ea70152612ece015261461f5ff3fe60806040526004361061026a575f3560e01c8063924de9b711610143578063c8c8ebe4116100b5578063e8ba854f11610079578063e8ba854f1461093d578063eba4c33314610965578063f2fde38b1461098d578063f4293890146109b5578063f8b45b05146109cb578063fabb0b4f146109f557610271565b8063c8c8ebe414610847578063d257b34f14610871578063d85ba063146108ad578063dd62ed3e146108d7578063e2f456051461091357610271565b8063a9059cbb11610107578063a9059cbb1461072d578063b62496f514610769578063b70143c9146107a5578063bbc0c742146107cd578063c0246668146107f7578063c18bc1951461081f57610271565b8063924de9b71461064f57806395d89b41146106775780639a7a23d6146106a1578063a457c2d7146106c9578063a672990c1461070557610271565b80634a62bb65116101dc57806371fc4688116101a057806371fc468814610559578063751039fc146105815780637571336a146105ab57806382aa7c68146105d35780638da5cb5b146105fb578063921369131461062557610271565b80634a62bb65146104895780636a486a8e146104b35780636ddd1713146104dd57806370a0823114610507578063715018a61461054357610271565b8063203e727e1161022e578063203e727e1461036b57806323b872dd1461039357806327c8f835146103cf578063313ce567146103f9578063395093511461042357806349bd5a5e1461045f57610271565b806306fdde0314610275578063095ea7b31461029f57806310d5de53146102db5780631694505e1461031757806318160ddd1461034157610271565b3661027157005b5f80fd5b348015610280575f80fd5b50610289610a1f565b6040516102969190613407565b60405180910390f35b3480156102aa575f80fd5b506102c560048036038101906102c091906134b8565b610aaf565b6040516102d29190613510565b60405180910390f35b3480156102e6575f80fd5b5061030160048036038101906102fc9190613529565b610acc565b60405161030e9190613510565b60405180910390f35b348015610322575f80fd5b5061032b610ae9565b60405161033891906135af565b60405180910390f35b34801561034c575f80fd5b50610355610b0d565b60405161036291906135d7565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906135f0565b610b16565b005b34801561039e575f80fd5b506103b960048036038101906103b4919061361b565b610c25565b6040516103c69190613510565b60405180910390f35b3480156103da575f80fd5b506103e3610d17565b6040516103f0919061367a565b60405180910390f35b348015610404575f80fd5b5061040d610d1d565b60405161041a91906136ae565b60405180910390f35b34801561042e575f80fd5b50610449600480360381019061044491906134b8565b610d25565b6040516104569190613510565b60405180910390f35b34801561046a575f80fd5b50610473610dcc565b604051610480919061367a565b60405180910390f35b348015610494575f80fd5b5061049d610df0565b6040516104aa9190613510565b60405180910390f35b3480156104be575f80fd5b506104c7610e02565b6040516104d491906135d7565b60405180910390f35b3480156104e8575f80fd5b506104f1610e08565b6040516104fe9190613510565b60405180910390f35b348015610512575f80fd5b5061052d60048036038101906105289190613529565b610e1b565b60405161053a91906135d7565b60405180910390f35b34801561054e575f80fd5b50610557610e60565b005b348015610564575f80fd5b5061057f600480360381019061057a91906135f0565b610ee7565b005b34801561058c575f80fd5b50610595610fbc565b6040516105a29190613510565b60405180910390f35b3480156105b6575f80fd5b506105d160048036038101906105cc91906136f1565b611059565b005b3480156105de575f80fd5b506105f960048036038101906105f491906135f0565b61112d565b005b348015610606575f80fd5b5061060f6111f7565b60405161061c919061367a565b60405180910390f35b348015610630575f80fd5b5061063961121f565b60405161064691906135d7565b60405180910390f35b34801561065a575f80fd5b506106756004803603810190610670919061372f565b611225565b005b348015610682575f80fd5b5061068b6112be565b6040516106989190613407565b60405180910390f35b3480156106ac575f80fd5b506106c760048036038101906106c291906136f1565b61134e565b005b3480156106d4575f80fd5b506106ef60048036038101906106ea91906134b8565b611466565b6040516106fc9190613510565b60405180910390f35b348015610710575f80fd5b5061072b600480360381019061072691906136f1565b61154c565b005b348015610738575f80fd5b50610753600480360381019061074e91906134b8565b611674565b6040516107609190613510565b60405180910390f35b348015610774575f80fd5b5061078f600480360381019061078a9190613529565b611691565b60405161079c9190613510565b60405180910390f35b3480156107b0575f80fd5b506107cb60048036038101906107c691906135f0565b6116ae565b005b3480156107d8575f80fd5b506107e161176f565b6040516107ee9190613510565b60405180910390f35b348015610802575f80fd5b5061081d600480360381019061081891906136f1565b611782565b005b34801561082a575f80fd5b50610845600480360381019061084091906135f0565b6118a4565b005b348015610852575f80fd5b5061085b6119b3565b60405161086891906135d7565b60405180910390f35b34801561087c575f80fd5b50610897600480360381019061089291906135f0565b6119b9565b6040516108a49190613510565b60405180910390f35b3480156108b8575f80fd5b506108c1611b0d565b6040516108ce91906135d7565b60405180910390f35b3480156108e2575f80fd5b506108fd60048036038101906108f8919061375a565b611b13565b60405161090a91906135d7565b60405180910390f35b34801561091e575f80fd5b50610927611b95565b60405161093491906135d7565b60405180910390f35b348015610948575f80fd5b50610963600480360381019061095e919061375a565b611b9b565b005b348015610970575f80fd5b5061098b600480360381019061098691906135f0565b611d91565b005b348015610998575f80fd5b506109b360048036038101906109ae9190613529565b611e66565b005b3480156109c0575f80fd5b506109c9611f5c565b005b3480156109d6575f80fd5b506109df611fea565b6040516109ec91906135d7565b60405180910390f35b348015610a00575f80fd5b50610a09611ff0565b604051610a1691906135d7565b60405180910390f35b606060038054610a2e906137c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5a906137c5565b8015610aa55780601f10610a7c57610100808354040283529160200191610aa5565b820191905f5260205f20905b815481529060010190602001808311610a8857829003601f168201915b5050505050905090565b5f610ac2610abb611ff6565b8484611ffd565b6001905092915050565b6015602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610b1e611ff6565b73ffffffffffffffffffffffffffffffffffffffff16610b3c6111f7565b73ffffffffffffffffffffffffffffffffffffffff1614610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b899061383f565b60405180910390fd5b670de0b6b3a76400006103e86001610ba8610b0d565b610bb2919061388a565b610bbc91906138f8565b610bc691906138f8565b811015610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90613998565b60405180910390fd5b670de0b6b3a764000081610c1c919061388a565b60088190555050565b5f610c318484846121c0565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c78611ff6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90613a26565b60405180910390fd5b610d0b85610d03611ff6565b858403611ffd565b60019150509392505050565b61dead81565b5f6012905090565b5f610dc2610d31611ff6565b848460015f610d3e611ff6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dbd9190613a44565b611ffd565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5f9054906101000a900460ff1681565b60115481565b600b60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e68611ff6565b73ffffffffffffffffffffffffffffffffffffffff16610e866111f7565b73ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed39061383f565b60405180910390fd5b610ee55f612bca565b565b610eef611ff6565b73ffffffffffffffffffffffffffffffffffffffff16610f0d6111f7565b73ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a9061383f565b60405180910390fd5b80601081905550601054600f81905550600a600f541115610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb090613ac1565b60405180910390fd5b50565b5f610fc5611ff6565b73ffffffffffffffffffffffffffffffffffffffff16610fe36111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110309061383f565b60405180910390fd5b5f600b5f6101000a81548160ff0219169083151502179055506001905090565b611061611ff6565b73ffffffffffffffffffffffffffffffffffffffff1661107f6111f7565b73ffffffffffffffffffffffffffffffffffffffff16146110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc9061383f565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611135611ff6565b73ffffffffffffffffffffffffffffffffffffffff166111536111f7565b73ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a09061383f565b60405180910390fd5b80600e819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043600c8190555042600d8190555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b61122d611ff6565b73ffffffffffffffffffffffffffffffffffffffff1661124b6111f7565b73ffffffffffffffffffffffffffffffffffffffff16146112a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112989061383f565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546112cd906137c5565b80601f01602080910402602001604051908101604052809291908181526020018280546112f9906137c5565b80156113445780601f1061131b57610100808354040283529160200191611344565b820191905f5260205f20905b81548152906001019060200180831161132757829003601f168201915b5050505050905090565b611356611ff6565b73ffffffffffffffffffffffffffffffffffffffff166113746111f7565b73ffffffffffffffffffffffffffffffffffffffff16146113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c19061383f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90613b4f565b60405180910390fd5b6114628282612c8d565b5050565b5f8060015f611473611ff6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613bdd565b60405180910390fd5b611541611538611ff6565b85858403611ffd565b600191505092915050565b611554611ff6565b73ffffffffffffffffffffffffffffffffffffffff166115726111f7565b73ffffffffffffffffffffffffffffffffffffffff16146115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf9061383f565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611687611680611ff6565b84846121c0565b6001905092915050565b6016602052805f5260405f205f915054906101000a900460ff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ee611ff6565b73ffffffffffffffffffffffffffffffffffffffff161461170d575f80fd5b61171630610e1b565b811115801561172457505f81115b611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a90613c45565b60405180910390fd5b61176c81612d2b565b50565b600b60019054906101000a900460ff1681565b61178a611ff6565b73ffffffffffffffffffffffffffffffffffffffff166117a86111f7565b73ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061383f565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118989190613510565b60405180910390a25050565b6118ac611ff6565b73ffffffffffffffffffffffffffffffffffffffff166118ca6111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119179061383f565b60405180910390fd5b670de0b6b3a76400006103e86005611936610b0d565b611940919061388a565b61194a91906138f8565b61195491906138f8565b811015611996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198d90613cd3565b60405180910390fd5b670de0b6b3a7640000816119aa919061388a565b600a8190555050565b60085481565b5f6119c2611ff6565b73ffffffffffffffffffffffffffffffffffffffff166119e06111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d9061383f565b60405180910390fd5b620186a06001611a44610b0d565b611a4e919061388a565b611a5891906138f8565b821015611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613d61565b60405180910390fd5b6103e86005611aa7610b0d565b611ab1919061388a565b611abb91906138f8565b821115611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af490613def565b60405180910390fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b611ba3611ff6565b73ffffffffffffffffffffffffffffffffffffffff16611bc16111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e9061383f565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa99dead445593e0ad945143dc1b0f9b10d5ff5356d423a8428b064c9c9b3f50760405160405180910390a360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffc6e5ad4b1cc83c1340fc759e88f86ea75ce690eaf188413d0cf6b5290cc633460405160405180910390a38160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611d99611ff6565b73ffffffffffffffffffffffffffffffffffffffff16611db76111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e049061383f565b60405180910390fd5b80601281905550601254601181905550600a6011541115611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90613ac1565b60405180910390fd5b50565b611e6e611ff6565b73ffffffffffffffffffffffffffffffffffffffff16611e8c6111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed99061383f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4790613e7d565b60405180910390fd5b611f5981612bca565b50565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611fa290613ec8565b5f6040518083038185875af1925050503d805f8114611fdc576040519150601f19603f3d011682016040523d82523d5f602084013e611fe1565b606091505b50508091505050565b600a5481565b600e5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290613f4c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d090613fda565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121b391906135d7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222590614068565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361229c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612293906140f6565b60405180910390fd5b5f81036122b3576122ae83835f612f5e565b612bc5565b5f439050600b5f9054906101000a900460ff16156127fb576122d36111f7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561234157506123116111f7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561237957505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123b3575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123cc5750600560149054906101000a900460ff16155b156127fa5780600e54600c546123e29190613a44565b1061240e576019601081905550601054600f81905550602d601281905550601254601181905550612431565b6002601081905550601054600f8190555060026012819055506012546011819055505b600b60019054906101000a900460ff166125205760135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124e0575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61251f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125169061415e565b60405180910390fd5b5b60165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125bd575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561266457600854821115612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe906141ec565b60405180910390fd5b600a5461261384610e1b565b8361261e9190613a44565b111561265f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265690614254565b60405180910390fd5b6127f9565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612701575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127505760085482111561274b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612742906142e2565b60405180910390fd5b6127f8565b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127f757600a546127aa84610e1b565b836127b59190613a44565b11156127f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ed90614254565b60405180910390fd5b5b5b5b5b5b5f61280530610e1b565b90505f60095482101590508080156128295750600b60029054906101000a900460ff165b80156128425750600560149054906101000a900460ff16155b801561285f5750600260145f8581526020019081526020015f2054105b80156128b2575060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612905575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612958575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129bf576001600560146101000a81548160ff0219169083151502179055506129806131d3565b60145f8481526020019081526020015f205f815461299d90614300565b919050819055505f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a6e575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a77575f90505b5f8115612bb45760165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ad557505f601154115b15612b0957612b026064612af46011548961334990919063ffffffff16565b61335e90919063ffffffff16565b9050612b91565b60165f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b6057505f600f54115b15612b9057612b8d6064612b7f600f548961334990919063ffffffff16565b61335e90919063ffffffff16565b90505b5b5f811115612ba557612ba4883083612f5e565b5b8086612bb19190614347565b95505b612bbf888888612f5e565b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff811115612d4757612d4661437a565b5b604051908082528060200260200182016040528015612d755781602001602082028036833780820191505090505b50905030815f81518110612d8c57612d8b6143a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e5391906143e8565b81600181518110612e6757612e666143a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ecc307f000000000000000000000000000000000000000000000000000000000000000084611ffd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f2d959493929190614503565b5f604051808303815f87803b158015612f44575f80fd5b505af1158015612f56573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc390614068565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361303a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613031906140f6565b60405180910390fd5b613045838383613373565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156130c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bf906145cb565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546131569190613a44565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131ba91906135d7565b60405180910390a36131cd848484613378565b50505050565b5f6131dd30610e1b565b90505f8082036131ee575050613347565b60146009546131fd919061388a565b821115613216576014600954613213919061388a565b91505b5f82905061322381612d2b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660024761326891906138f8565b60405161327490613ec8565b5f6040518083038185875af1925050503d805f81146132ae576040519150601f19603f3d011682016040523d82523d5f602084013e6132b3565b606091505b50508092505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516132fe90613ec8565b5f6040518083038185875af1925050503d805f8114613338576040519150601f19603f3d011682016040523d82523d5f602084013e61333d565b606091505b5050809250505050505b565b5f8183613356919061388a565b905092915050565b5f818361336b91906138f8565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133b4578082015181840152602081019050613399565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6133d98261337d565b6133e38185613387565b93506133f3818560208601613397565b6133fc816133bf565b840191505092915050565b5f6020820190508181035f83015261341f81846133cf565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134548261342b565b9050919050565b6134648161344a565b811461346e575f80fd5b50565b5f8135905061347f8161345b565b92915050565b5f819050919050565b61349781613485565b81146134a1575f80fd5b50565b5f813590506134b28161348e565b92915050565b5f80604083850312156134ce576134cd613427565b5b5f6134db85828601613471565b92505060206134ec858286016134a4565b9150509250929050565b5f8115159050919050565b61350a816134f6565b82525050565b5f6020820190506135235f830184613501565b92915050565b5f6020828403121561353e5761353d613427565b5b5f61354b84828501613471565b91505092915050565b5f819050919050565b5f61357761357261356d8461342b565b613554565b61342b565b9050919050565b5f6135888261355d565b9050919050565b5f6135998261357e565b9050919050565b6135a98161358f565b82525050565b5f6020820190506135c25f8301846135a0565b92915050565b6135d181613485565b82525050565b5f6020820190506135ea5f8301846135c8565b92915050565b5f6020828403121561360557613604613427565b5b5f613612848285016134a4565b91505092915050565b5f805f6060848603121561363257613631613427565b5b5f61363f86828701613471565b935050602061365086828701613471565b9250506040613661868287016134a4565b9150509250925092565b6136748161344a565b82525050565b5f60208201905061368d5f83018461366b565b92915050565b5f60ff82169050919050565b6136a881613693565b82525050565b5f6020820190506136c15f83018461369f565b92915050565b6136d0816134f6565b81146136da575f80fd5b50565b5f813590506136eb816136c7565b92915050565b5f806040838503121561370757613706613427565b5b5f61371485828601613471565b9250506020613725858286016136dd565b9150509250929050565b5f6020828403121561374457613743613427565b5b5f613751848285016136dd565b91505092915050565b5f80604083850312156137705761376f613427565b5b5f61377d85828601613471565b925050602061378e85828601613471565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806137dc57607f821691505b6020821081036137ef576137ee613798565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613829602083613387565b9150613834826137f5565b602082019050919050565b5f6020820190508181035f8301526138568161381d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61389482613485565b915061389f83613485565b92508282026138ad81613485565b915082820484148315176138c4576138c361385d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61390282613485565b915061390d83613485565b92508261391d5761391c6138cb565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613982602f83613387565b915061398d82613928565b604082019050919050565b5f6020820190508181035f8301526139af81613976565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a10602883613387565b9150613a1b826139b6565b604082019050919050565b5f6020820190508181035f830152613a3d81613a04565b9050919050565b5f613a4e82613485565b9150613a5983613485565b9250828201905080821115613a7157613a7061385d565b5b92915050565b7f4d757374206b6565702066656573206174203525206f72206c657373000000005f82015250565b5f613aab601c83613387565b9150613ab682613a77565b602082019050919050565b5f6020820190508181035f830152613ad881613a9f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613b39603983613387565b9150613b4482613adf565b604082019050919050565b5f6020820190508181035f830152613b6681613b2d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613bc7602583613387565b9150613bd282613b6d565b604082019050919050565b5f6020820190508181035f830152613bf481613bbb565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613c2f600c83613387565b9150613c3a82613bfb565b602082019050919050565b5f6020820190508181035f830152613c5c81613c23565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613cbd602483613387565b9150613cc882613c63565b604082019050919050565b5f6020820190508181035f830152613cea81613cb1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613d4b603583613387565b9150613d5682613cf1565b604082019050919050565b5f6020820190508181035f830152613d7881613d3f565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613dd9603483613387565b9150613de482613d7f565b604082019050919050565b5f6020820190508181035f830152613e0681613dcd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613e67602683613387565b9150613e7282613e0d565b604082019050919050565b5f6020820190508181035f830152613e9481613e5b565b9050919050565b5f81905092915050565b50565b5f613eb35f83613e9b565b9150613ebe82613ea5565b5f82019050919050565b5f613ed282613ea8565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613f36602483613387565b9150613f4182613edc565b604082019050919050565b5f6020820190508181035f830152613f6381613f2a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fc4602283613387565b9150613fcf82613f6a565b604082019050919050565b5f6020820190508181035f830152613ff181613fb8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614052602583613387565b915061405d82613ff8565b604082019050919050565b5f6020820190508181035f83015261407f81614046565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6140e0602383613387565b91506140eb82614086565b604082019050919050565b5f6020820190508181035f83015261410d816140d4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614148601683613387565b915061415382614114565b602082019050919050565b5f6020820190508181035f8301526141758161413c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6141d6603583613387565b91506141e18261417c565b604082019050919050565b5f6020820190508181035f830152614203816141ca565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61423e601383613387565b91506142498261420a565b602082019050919050565b5f6020820190508181035f83015261426b81614232565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6142cc603683613387565b91506142d782614272565b604082019050919050565b5f6020820190508181035f8301526142f9816142c0565b9050919050565b5f61430a82613485565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361433c5761433b61385d565b5b600182019050919050565b5f61435182613485565b915061435c83613485565b92508282039050818111156143745761437361385d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506143e28161345b565b92915050565b5f602082840312156143fd576143fc613427565b5b5f61440a848285016143d4565b91505092915050565b5f819050919050565b5f61443661443161442c84614413565b613554565b613485565b9050919050565b6144468161441c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61447e8161344a565b82525050565b5f61448f8383614475565b60208301905092915050565b5f602082019050919050565b5f6144b18261444c565b6144bb8185614456565b93506144c683614466565b805f5b838110156144f65781516144dd8882614484565b97506144e88361449b565b9250506001810190506144c9565b5085935050505092915050565b5f60a0820190506145165f8301886135c8565b614523602083018761443d565b818103604083015261453581866144a7565b9050614544606083018561366b565b61455160808301846135c8565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6145b5602683613387565b91506145c08261455b565b604082019050919050565b5f6020820190508181035f8301526145e2816145a9565b905091905056fea264697066735822122039f6b57106cbe33effd4d8cf7eeb58df284c3fb3a45b19a54accee6924eb4fa764736f6c63430008150033

Deployed Bytecode

0x60806040526004361061026a575f3560e01c8063924de9b711610143578063c8c8ebe4116100b5578063e8ba854f11610079578063e8ba854f1461093d578063eba4c33314610965578063f2fde38b1461098d578063f4293890146109b5578063f8b45b05146109cb578063fabb0b4f146109f557610271565b8063c8c8ebe414610847578063d257b34f14610871578063d85ba063146108ad578063dd62ed3e146108d7578063e2f456051461091357610271565b8063a9059cbb11610107578063a9059cbb1461072d578063b62496f514610769578063b70143c9146107a5578063bbc0c742146107cd578063c0246668146107f7578063c18bc1951461081f57610271565b8063924de9b71461064f57806395d89b41146106775780639a7a23d6146106a1578063a457c2d7146106c9578063a672990c1461070557610271565b80634a62bb65116101dc57806371fc4688116101a057806371fc468814610559578063751039fc146105815780637571336a146105ab57806382aa7c68146105d35780638da5cb5b146105fb578063921369131461062557610271565b80634a62bb65146104895780636a486a8e146104b35780636ddd1713146104dd57806370a0823114610507578063715018a61461054357610271565b8063203e727e1161022e578063203e727e1461036b57806323b872dd1461039357806327c8f835146103cf578063313ce567146103f9578063395093511461042357806349bd5a5e1461045f57610271565b806306fdde0314610275578063095ea7b31461029f57806310d5de53146102db5780631694505e1461031757806318160ddd1461034157610271565b3661027157005b5f80fd5b348015610280575f80fd5b50610289610a1f565b6040516102969190613407565b60405180910390f35b3480156102aa575f80fd5b506102c560048036038101906102c091906134b8565b610aaf565b6040516102d29190613510565b60405180910390f35b3480156102e6575f80fd5b5061030160048036038101906102fc9190613529565b610acc565b60405161030e9190613510565b60405180910390f35b348015610322575f80fd5b5061032b610ae9565b60405161033891906135af565b60405180910390f35b34801561034c575f80fd5b50610355610b0d565b60405161036291906135d7565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906135f0565b610b16565b005b34801561039e575f80fd5b506103b960048036038101906103b4919061361b565b610c25565b6040516103c69190613510565b60405180910390f35b3480156103da575f80fd5b506103e3610d17565b6040516103f0919061367a565b60405180910390f35b348015610404575f80fd5b5061040d610d1d565b60405161041a91906136ae565b60405180910390f35b34801561042e575f80fd5b50610449600480360381019061044491906134b8565b610d25565b6040516104569190613510565b60405180910390f35b34801561046a575f80fd5b50610473610dcc565b604051610480919061367a565b60405180910390f35b348015610494575f80fd5b5061049d610df0565b6040516104aa9190613510565b60405180910390f35b3480156104be575f80fd5b506104c7610e02565b6040516104d491906135d7565b60405180910390f35b3480156104e8575f80fd5b506104f1610e08565b6040516104fe9190613510565b60405180910390f35b348015610512575f80fd5b5061052d60048036038101906105289190613529565b610e1b565b60405161053a91906135d7565b60405180910390f35b34801561054e575f80fd5b50610557610e60565b005b348015610564575f80fd5b5061057f600480360381019061057a91906135f0565b610ee7565b005b34801561058c575f80fd5b50610595610fbc565b6040516105a29190613510565b60405180910390f35b3480156105b6575f80fd5b506105d160048036038101906105cc91906136f1565b611059565b005b3480156105de575f80fd5b506105f960048036038101906105f491906135f0565b61112d565b005b348015610606575f80fd5b5061060f6111f7565b60405161061c919061367a565b60405180910390f35b348015610630575f80fd5b5061063961121f565b60405161064691906135d7565b60405180910390f35b34801561065a575f80fd5b506106756004803603810190610670919061372f565b611225565b005b348015610682575f80fd5b5061068b6112be565b6040516106989190613407565b60405180910390f35b3480156106ac575f80fd5b506106c760048036038101906106c291906136f1565b61134e565b005b3480156106d4575f80fd5b506106ef60048036038101906106ea91906134b8565b611466565b6040516106fc9190613510565b60405180910390f35b348015610710575f80fd5b5061072b600480360381019061072691906136f1565b61154c565b005b348015610738575f80fd5b50610753600480360381019061074e91906134b8565b611674565b6040516107609190613510565b60405180910390f35b348015610774575f80fd5b5061078f600480360381019061078a9190613529565b611691565b60405161079c9190613510565b60405180910390f35b3480156107b0575f80fd5b506107cb60048036038101906107c691906135f0565b6116ae565b005b3480156107d8575f80fd5b506107e161176f565b6040516107ee9190613510565b60405180910390f35b348015610802575f80fd5b5061081d600480360381019061081891906136f1565b611782565b005b34801561082a575f80fd5b50610845600480360381019061084091906135f0565b6118a4565b005b348015610852575f80fd5b5061085b6119b3565b60405161086891906135d7565b60405180910390f35b34801561087c575f80fd5b50610897600480360381019061089291906135f0565b6119b9565b6040516108a49190613510565b60405180910390f35b3480156108b8575f80fd5b506108c1611b0d565b6040516108ce91906135d7565b60405180910390f35b3480156108e2575f80fd5b506108fd60048036038101906108f8919061375a565b611b13565b60405161090a91906135d7565b60405180910390f35b34801561091e575f80fd5b50610927611b95565b60405161093491906135d7565b60405180910390f35b348015610948575f80fd5b50610963600480360381019061095e919061375a565b611b9b565b005b348015610970575f80fd5b5061098b600480360381019061098691906135f0565b611d91565b005b348015610998575f80fd5b506109b360048036038101906109ae9190613529565b611e66565b005b3480156109c0575f80fd5b506109c9611f5c565b005b3480156109d6575f80fd5b506109df611fea565b6040516109ec91906135d7565b60405180910390f35b348015610a00575f80fd5b50610a09611ff0565b604051610a1691906135d7565b60405180910390f35b606060038054610a2e906137c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5a906137c5565b8015610aa55780601f10610a7c57610100808354040283529160200191610aa5565b820191905f5260205f20905b815481529060010190602001808311610a8857829003601f168201915b5050505050905090565b5f610ac2610abb611ff6565b8484611ffd565b6001905092915050565b6015602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610b1e611ff6565b73ffffffffffffffffffffffffffffffffffffffff16610b3c6111f7565b73ffffffffffffffffffffffffffffffffffffffff1614610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b899061383f565b60405180910390fd5b670de0b6b3a76400006103e86001610ba8610b0d565b610bb2919061388a565b610bbc91906138f8565b610bc691906138f8565b811015610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90613998565b60405180910390fd5b670de0b6b3a764000081610c1c919061388a565b60088190555050565b5f610c318484846121c0565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c78611ff6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90613a26565b60405180910390fd5b610d0b85610d03611ff6565b858403611ffd565b60019150509392505050565b61dead81565b5f6012905090565b5f610dc2610d31611ff6565b848460015f610d3e611ff6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dbd9190613a44565b611ffd565b6001905092915050565b7f00000000000000000000000063df3de0be85279e06ac0d4e9be2203a37219b5a81565b600b5f9054906101000a900460ff1681565b60115481565b600b60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e68611ff6565b73ffffffffffffffffffffffffffffffffffffffff16610e866111f7565b73ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed39061383f565b60405180910390fd5b610ee55f612bca565b565b610eef611ff6565b73ffffffffffffffffffffffffffffffffffffffff16610f0d6111f7565b73ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a9061383f565b60405180910390fd5b80601081905550601054600f81905550600a600f541115610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb090613ac1565b60405180910390fd5b50565b5f610fc5611ff6565b73ffffffffffffffffffffffffffffffffffffffff16610fe36111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110309061383f565b60405180910390fd5b5f600b5f6101000a81548160ff0219169083151502179055506001905090565b611061611ff6565b73ffffffffffffffffffffffffffffffffffffffff1661107f6111f7565b73ffffffffffffffffffffffffffffffffffffffff16146110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc9061383f565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611135611ff6565b73ffffffffffffffffffffffffffffffffffffffff166111536111f7565b73ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a09061383f565b60405180910390fd5b80600e819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043600c8190555042600d8190555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b61122d611ff6565b73ffffffffffffffffffffffffffffffffffffffff1661124b6111f7565b73ffffffffffffffffffffffffffffffffffffffff16146112a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112989061383f565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546112cd906137c5565b80601f01602080910402602001604051908101604052809291908181526020018280546112f9906137c5565b80156113445780601f1061131b57610100808354040283529160200191611344565b820191905f5260205f20905b81548152906001019060200180831161132757829003601f168201915b5050505050905090565b611356611ff6565b73ffffffffffffffffffffffffffffffffffffffff166113746111f7565b73ffffffffffffffffffffffffffffffffffffffff16146113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c19061383f565b60405180910390fd5b7f00000000000000000000000063df3de0be85279e06ac0d4e9be2203a37219b5a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90613b4f565b60405180910390fd5b6114628282612c8d565b5050565b5f8060015f611473611ff6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613bdd565b60405180910390fd5b611541611538611ff6565b85858403611ffd565b600191505092915050565b611554611ff6565b73ffffffffffffffffffffffffffffffffffffffff166115726111f7565b73ffffffffffffffffffffffffffffffffffffffff16146115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf9061383f565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611687611680611ff6565b84846121c0565b6001905092915050565b6016602052805f5260405f205f915054906101000a900460ff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ee611ff6565b73ffffffffffffffffffffffffffffffffffffffff161461170d575f80fd5b61171630610e1b565b811115801561172457505f81115b611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a90613c45565b60405180910390fd5b61176c81612d2b565b50565b600b60019054906101000a900460ff1681565b61178a611ff6565b73ffffffffffffffffffffffffffffffffffffffff166117a86111f7565b73ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061383f565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118989190613510565b60405180910390a25050565b6118ac611ff6565b73ffffffffffffffffffffffffffffffffffffffff166118ca6111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119179061383f565b60405180910390fd5b670de0b6b3a76400006103e86005611936610b0d565b611940919061388a565b61194a91906138f8565b61195491906138f8565b811015611996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198d90613cd3565b60405180910390fd5b670de0b6b3a7640000816119aa919061388a565b600a8190555050565b60085481565b5f6119c2611ff6565b73ffffffffffffffffffffffffffffffffffffffff166119e06111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d9061383f565b60405180910390fd5b620186a06001611a44610b0d565b611a4e919061388a565b611a5891906138f8565b821015611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613d61565b60405180910390fd5b6103e86005611aa7610b0d565b611ab1919061388a565b611abb91906138f8565b821115611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af490613def565b60405180910390fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b611ba3611ff6565b73ffffffffffffffffffffffffffffffffffffffff16611bc16111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e9061383f565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa99dead445593e0ad945143dc1b0f9b10d5ff5356d423a8428b064c9c9b3f50760405160405180910390a360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffc6e5ad4b1cc83c1340fc759e88f86ea75ce690eaf188413d0cf6b5290cc633460405160405180910390a38160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611d99611ff6565b73ffffffffffffffffffffffffffffffffffffffff16611db76111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e049061383f565b60405180910390fd5b80601281905550601254601181905550600a6011541115611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90613ac1565b60405180910390fd5b50565b611e6e611ff6565b73ffffffffffffffffffffffffffffffffffffffff16611e8c6111f7565b73ffffffffffffffffffffffffffffffffffffffff1614611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed99061383f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4790613e7d565b60405180910390fd5b611f5981612bca565b50565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611fa290613ec8565b5f6040518083038185875af1925050503d805f8114611fdc576040519150601f19603f3d011682016040523d82523d5f602084013e611fe1565b606091505b50508091505050565b600a5481565b600e5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290613f4c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d090613fda565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121b391906135d7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361222e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222590614068565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361229c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612293906140f6565b60405180910390fd5b5f81036122b3576122ae83835f612f5e565b612bc5565b5f439050600b5f9054906101000a900460ff16156127fb576122d36111f7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561234157506123116111f7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561237957505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123b3575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123cc5750600560149054906101000a900460ff16155b156127fa5780600e54600c546123e29190613a44565b1061240e576019601081905550601054600f81905550602d601281905550601254601181905550612431565b6002601081905550601054600f8190555060026012819055506012546011819055505b600b60019054906101000a900460ff166125205760135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124e0575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61251f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125169061415e565b60405180910390fd5b5b60165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125bd575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561266457600854821115612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe906141ec565b60405180910390fd5b600a5461261384610e1b565b8361261e9190613a44565b111561265f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265690614254565b60405180910390fd5b6127f9565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612701575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127505760085482111561274b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612742906142e2565b60405180910390fd5b6127f8565b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127f757600a546127aa84610e1b565b836127b59190613a44565b11156127f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ed90614254565b60405180910390fd5b5b5b5b5b5b5f61280530610e1b565b90505f60095482101590508080156128295750600b60029054906101000a900460ff165b80156128425750600560149054906101000a900460ff16155b801561285f5750600260145f8581526020019081526020015f2054105b80156128b2575060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612905575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612958575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129bf576001600560146101000a81548160ff0219169083151502179055506129806131d3565b60145f8481526020019081526020015f205f815461299d90614300565b919050819055505f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a6e575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a77575f90505b5f8115612bb45760165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ad557505f601154115b15612b0957612b026064612af46011548961334990919063ffffffff16565b61335e90919063ffffffff16565b9050612b91565b60165f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b6057505f600f54115b15612b9057612b8d6064612b7f600f548961334990919063ffffffff16565b61335e90919063ffffffff16565b90505b5b5f811115612ba557612ba4883083612f5e565b5b8086612bb19190614347565b95505b612bbf888888612f5e565b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff811115612d4757612d4661437a565b5b604051908082528060200260200182016040528015612d755781602001602082028036833780820191505090505b50905030815f81518110612d8c57612d8b6143a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e5391906143e8565b81600181518110612e6757612e666143a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ecc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ffd565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f2d959493929190614503565b5f604051808303815f87803b158015612f44575f80fd5b505af1158015612f56573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc390614068565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361303a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613031906140f6565b60405180910390fd5b613045838383613373565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156130c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bf906145cb565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546131569190613a44565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131ba91906135d7565b60405180910390a36131cd848484613378565b50505050565b5f6131dd30610e1b565b90505f8082036131ee575050613347565b60146009546131fd919061388a565b821115613216576014600954613213919061388a565b91505b5f82905061322381612d2b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660024761326891906138f8565b60405161327490613ec8565b5f6040518083038185875af1925050503d805f81146132ae576040519150601f19603f3d011682016040523d82523d5f602084013e6132b3565b606091505b50508092505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516132fe90613ec8565b5f6040518083038185875af1925050503d805f8114613338576040519150601f19603f3d011682016040523d82523d5f602084013e61333d565b606091505b5050809250505050505b565b5f8183613356919061388a565b905092915050565b5f818361336b91906138f8565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133b4578082015181840152602081019050613399565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6133d98261337d565b6133e38185613387565b93506133f3818560208601613397565b6133fc816133bf565b840191505092915050565b5f6020820190508181035f83015261341f81846133cf565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134548261342b565b9050919050565b6134648161344a565b811461346e575f80fd5b50565b5f8135905061347f8161345b565b92915050565b5f819050919050565b61349781613485565b81146134a1575f80fd5b50565b5f813590506134b28161348e565b92915050565b5f80604083850312156134ce576134cd613427565b5b5f6134db85828601613471565b92505060206134ec858286016134a4565b9150509250929050565b5f8115159050919050565b61350a816134f6565b82525050565b5f6020820190506135235f830184613501565b92915050565b5f6020828403121561353e5761353d613427565b5b5f61354b84828501613471565b91505092915050565b5f819050919050565b5f61357761357261356d8461342b565b613554565b61342b565b9050919050565b5f6135888261355d565b9050919050565b5f6135998261357e565b9050919050565b6135a98161358f565b82525050565b5f6020820190506135c25f8301846135a0565b92915050565b6135d181613485565b82525050565b5f6020820190506135ea5f8301846135c8565b92915050565b5f6020828403121561360557613604613427565b5b5f613612848285016134a4565b91505092915050565b5f805f6060848603121561363257613631613427565b5b5f61363f86828701613471565b935050602061365086828701613471565b9250506040613661868287016134a4565b9150509250925092565b6136748161344a565b82525050565b5f60208201905061368d5f83018461366b565b92915050565b5f60ff82169050919050565b6136a881613693565b82525050565b5f6020820190506136c15f83018461369f565b92915050565b6136d0816134f6565b81146136da575f80fd5b50565b5f813590506136eb816136c7565b92915050565b5f806040838503121561370757613706613427565b5b5f61371485828601613471565b9250506020613725858286016136dd565b9150509250929050565b5f6020828403121561374457613743613427565b5b5f613751848285016136dd565b91505092915050565b5f80604083850312156137705761376f613427565b5b5f61377d85828601613471565b925050602061378e85828601613471565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806137dc57607f821691505b6020821081036137ef576137ee613798565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613829602083613387565b9150613834826137f5565b602082019050919050565b5f6020820190508181035f8301526138568161381d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61389482613485565b915061389f83613485565b92508282026138ad81613485565b915082820484148315176138c4576138c361385d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61390282613485565b915061390d83613485565b92508261391d5761391c6138cb565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613982602f83613387565b915061398d82613928565b604082019050919050565b5f6020820190508181035f8301526139af81613976565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a10602883613387565b9150613a1b826139b6565b604082019050919050565b5f6020820190508181035f830152613a3d81613a04565b9050919050565b5f613a4e82613485565b9150613a5983613485565b9250828201905080821115613a7157613a7061385d565b5b92915050565b7f4d757374206b6565702066656573206174203525206f72206c657373000000005f82015250565b5f613aab601c83613387565b9150613ab682613a77565b602082019050919050565b5f6020820190508181035f830152613ad881613a9f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613b39603983613387565b9150613b4482613adf565b604082019050919050565b5f6020820190508181035f830152613b6681613b2d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613bc7602583613387565b9150613bd282613b6d565b604082019050919050565b5f6020820190508181035f830152613bf481613bbb565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613c2f600c83613387565b9150613c3a82613bfb565b602082019050919050565b5f6020820190508181035f830152613c5c81613c23565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613cbd602483613387565b9150613cc882613c63565b604082019050919050565b5f6020820190508181035f830152613cea81613cb1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613d4b603583613387565b9150613d5682613cf1565b604082019050919050565b5f6020820190508181035f830152613d7881613d3f565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613dd9603483613387565b9150613de482613d7f565b604082019050919050565b5f6020820190508181035f830152613e0681613dcd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613e67602683613387565b9150613e7282613e0d565b604082019050919050565b5f6020820190508181035f830152613e9481613e5b565b9050919050565b5f81905092915050565b50565b5f613eb35f83613e9b565b9150613ebe82613ea5565b5f82019050919050565b5f613ed282613ea8565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613f36602483613387565b9150613f4182613edc565b604082019050919050565b5f6020820190508181035f830152613f6381613f2a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fc4602283613387565b9150613fcf82613f6a565b604082019050919050565b5f6020820190508181035f830152613ff181613fb8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614052602583613387565b915061405d82613ff8565b604082019050919050565b5f6020820190508181035f83015261407f81614046565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6140e0602383613387565b91506140eb82614086565b604082019050919050565b5f6020820190508181035f83015261410d816140d4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614148601683613387565b915061415382614114565b602082019050919050565b5f6020820190508181035f8301526141758161413c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6141d6603583613387565b91506141e18261417c565b604082019050919050565b5f6020820190508181035f830152614203816141ca565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61423e601383613387565b91506142498261420a565b602082019050919050565b5f6020820190508181035f83015261426b81614232565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6142cc603683613387565b91506142d782614272565b604082019050919050565b5f6020820190508181035f8301526142f9816142c0565b9050919050565b5f61430a82613485565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361433c5761433b61385d565b5b600182019050919050565b5f61435182613485565b915061435c83613485565b92508282039050818111156143745761437361385d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506143e28161345b565b92915050565b5f602082840312156143fd576143fc613427565b5b5f61440a848285016143d4565b91505092915050565b5f819050919050565b5f61443661443161442c84614413565b613554565b613485565b9050919050565b6144468161441c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61447e8161344a565b82525050565b5f61448f8383614475565b60208301905092915050565b5f602082019050919050565b5f6144b18261444c565b6144bb8185614456565b93506144c683614466565b805f5b838110156144f65781516144dd8882614484565b97506144e88361449b565b9250506001810190506144c9565b5085935050505092915050565b5f60a0820190506145165f8301886135c8565b614523602083018761443d565b818103604083015261453581866144a7565b9050614544606083018561366b565b61455160808301846135c8565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6145b5602683613387565b91506145c08261455b565b604082019050919050565b5f6020820190508181035f8301526145e2816145a9565b905091905056fea264697066735822122039f6b57106cbe33effd4d8cf7eeb58df284c3fb3a45b19a54accee6924eb4fa764736f6c63430008150033

Deployed Bytecode Sourcemap

15391:12102:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2830:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3810:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16327:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15465:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3151:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19095:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4012:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15568:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3050:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4549:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15523:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15843:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16139:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15923:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3267:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;835:103;;;;;;;;;;;;;:::i;:::-;;21362:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18477:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19849:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18226:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;612:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16174:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20114:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2938:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20852:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4847:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19646:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3418:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16397:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20412:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15883:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20222:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19380:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15728:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18606:481;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16065:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3626:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15770:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21835:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21596:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;946:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20675:169;;;;;;;;;;;;;:::i;:::-;;15810:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16031:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2830:100;2884:13;2917:5;2910:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2830:100;:::o;3810:194::-;3918:4;3935:39;3944:12;:10;:12::i;:::-;3958:7;3967:6;3935:8;:39::i;:::-;3992:4;3985:11;;3810:194;;;;:::o;16327:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15465:51::-;;;:::o;3151:108::-;3212:7;3239:12;;3232:19;;3151:108;:::o;19095:277::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19232:4:::1;19224;19219:1;19203:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19202:26;;;;:::i;:::-;19201:35;;;;:::i;:::-;19191:6;:45;;19169:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;19355:8;19345:6;:19;;;;:::i;:::-;19322:20;:42;;;;19095:277:::0;:::o;4012:529::-;4152:4;4169:36;4179:6;4187:9;4198:6;4169:9;:36::i;:::-;4218:24;4245:11;:19;4257:6;4245:19;;;;;;;;;;;;;;;:33;4265:12;:10;:12::i;:::-;4245:33;;;;;;;;;;;;;;;;4218:60;;4331:6;4311:16;:26;;4289:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4441:57;4450:6;4458:12;:10;:12::i;:::-;4491:6;4472:16;:25;4441:8;:57::i;:::-;4529:4;4522:11;;;4012:529;;;;;:::o;15568:53::-;15614:6;15568:53;:::o;3050:93::-;3108:5;3133:2;3126:9;;3050:93;:::o;4549:290::-;4662:4;4679:130;4702:12;:10;:12::i;:::-;4729:7;4788:10;4751:11;:25;4763:12;:10;:12::i;:::-;4751:25;;;;;;;;;;;;;;;:34;4777:7;4751:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4679:8;:130::i;:::-;4827:4;4820:11;;4549:290;;;;:::o;15523:38::-;;;:::o;15843:33::-;;;;;;;;;;;;;:::o;16139:28::-;;;;:::o;15923:31::-;;;;;;;;;;;;;:::o;3267:143::-;3357:7;3384:9;:18;3394:7;3384:18;;;;;;;;;;;;;;;;3377:25;;3267:143;;;:::o;835:103::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;900:30:::1;927:1;900:18;:30::i;:::-;835:103::o:0;21362:226::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21456:13:::1;21438:15;:31;;;;21495:15;;21480:12;:30;;;;21545:2;21529:12;;:18;;21521:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;21362:226:::0;:::o;18477:121::-;18529:4;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18563:5:::1;18546:14;;:22;;;;;;;;;;;;;;;;;;18586:4;18579:11;;18477:121:::0;:::o;19849:169::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20006:4:::1;19964:31;:39;19996:6;19964:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19849:169:::0;;:::o;18226:243::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18313:11:::1;18300:10;:24;;;;18351:4;18335:13;;:20;;;;;;;;;;;;;;;;;;18380:4;18366:11;;:18;;;;;;;;;;;;;;;;;;18408:12;18395:10;:25;;;;18446:15;18431:12;:30;;;;18226:243:::0;:::o;612:87::-;658:7;685:6;;;;;;;;;;;678:13;;612:87;:::o;16174:31::-;;;;:::o;20114:100::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20199:7:::1;20185:11;;:21;;;;;;;;;;;;;;;;;;20114:100:::0;:::o;2938:104::-;2994:13;3027:7;3020:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2938:104;:::o;20852:306::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20998:13:::1;20990:21;;:4;:21;;::::0;20968:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21109:41;21138:4;21144:5;21109:28;:41::i;:::-;20852:306:::0;;:::o;4847:475::-;4965:4;4982:24;5009:11;:25;5021:12;:10;:12::i;:::-;5009:25;;;;;;;;;;;;;;;:34;5035:7;5009:34;;;;;;;;;;;;;;;;4982:61;;5096:15;5076:16;:35;;5054:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5212:67;5221:12;:10;:12::i;:::-;5235:7;5263:15;5244:16;:34;5212:8;:67::i;:::-;5310:4;5303:11;;;4847:475;;;;:::o;19646:195::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19778:4:::1;19732:31;:43;19764:10;19732:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;19829:4;19795:19;:31;19815:10;19795:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19646:195:::0;;:::o;3418:200::-;3529:4;3546:42;3556:12;:10;:12::i;:::-;3570:9;3581:6;3546:9;:42::i;:::-;3606:4;3599:11;;3418:200;;;;:::o;16397:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20412:255::-;20492:10;;;;;;;;;;;20476:26;;:12;:10;:12::i;:::-;:26;;;20468:35;;;;;;20546:24;20564:4;20546:9;:24::i;:::-;20536:6;:34;;:48;;;;;20583:1;20574:6;:10;20536:48;20514:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;20635:24;20652:6;20635:16;:24::i;:::-;20412:255;:::o;15883:33::-;;;;;;;;;;;;;:::o;20222:182::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20338:8:::1;20307:19;:28;20327:7;20307:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20378:7;20362:34;;;20387:8;20362:34;;;;;;:::i;:::-;;;;;;;;20222:182:::0;;:::o;19380:258::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19520:4:::1;19512;19507:1;19491:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19490:26;;;;:::i;:::-;19489:35;;;;:::i;:::-;19479:6;:45;;19457:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;19621:8;19611:6;:19;;;;:::i;:::-;19599:9;:31;;;;19380:258:::0;:::o;15728:35::-;;;;:::o;18606:481::-;18703:4;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18777:6:::1;18772:1;18756:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18755:28;;;;:::i;:::-;18742:9;:41;;18720:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18932:4;18927:1;18911:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18910:26;;;;:::i;:::-;18897:9;:39;;18875:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19048:9;19027:18;:30;;;;19075:4;19068:11;;18606:481:::0;;;:::o;16065:27::-;;;;:::o;3626:176::-;3740:7;3767:11;:18;3779:5;3767:18;;;;;;;;;;;;;;;:27;3786:7;3767:27;;;;;;;;;;;;;;;;3760:34;;3626:176;;;;:::o;15770:33::-;;;;:::o;21835:307::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21993:10:::1;;;;;;;;;;;21962:42;;21979:12;21962:42;;;;;;;;;;;;22051:10;;;;;;;;;;;22020:42;;22037:12;22020:42;;;;;;;;;;;;22086:12;22073:10;;:25;;;;;;;;;;;;;;;;;;22122:12;22109:10;;:25;;;;;;;;;;;;;;;;;;21835:307:::0;;:::o;21596:231::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21692:13:::1;21673:16;:32;;;;21732:16;;21716:13;:32;;;;21784:2;21767:13;;:19;;21759:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21596:231:::0;:::o;946:238::-;758:12;:10;:12::i;:::-;747:23;;:7;:5;:7::i;:::-;:23;;;739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1069:1:::1;1049:22;;:8;:22;;::::0;1027:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1148:28;1167:8;1148:18;:28::i;:::-;946:238:::0;:::o;20675:169::-;20717:12;20762:10;;;;;;;;;;;20754:24;;20786:21;20754:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20740:96;;;;;20706:138;20675:169::o;15810:24::-;;;;:::o;16031:25::-;;;;:::o;133:98::-;186:7;213:10;206:17;;133:98;:::o;7114:380::-;7267:1;7250:19;;:5;:19;;;7242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7348:1;7329:21;;:7;:21;;;7321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7432:6;7402:11;:18;7414:5;7402:18;;;;;;;;;;;;;;;:27;7421:7;7402:27;;;;;;;;;;;;;;;:36;;;;7470:7;7454:32;;7463:5;7454:32;;;7479:6;7454:32;;;;;;:::i;:::-;;;;;;;;7114:380;;;:::o;22150:4091::-;22298:1;22282:18;;:4;:18;;;22274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22375:1;22361:16;;:2;:16;;;22353:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22444:1;22434:6;:11;22430:93;;22462:28;22478:4;22484:2;22488:1;22462:15;:28::i;:::-;22505:7;;22430:93;22535:16;22554:12;22535:31;;22583:14;;;;;;;;;;;22579:2195;;;22644:7;:5;:7::i;:::-;22636:15;;:4;:15;;;;:49;;;;;22678:7;:5;:7::i;:::-;22672:13;;:2;:13;;;;22636:49;:86;;;;;22720:1;22706:16;;:2;:16;;;;22636:86;:128;;;;;22757:6;22743:21;;:2;:21;;;;22636:128;:158;;;;;22786:8;;;;;;;;;;;22785:9;22636:158;22614:2149;;;22862:8;22847:10;;22834;;:23;;;;:::i;:::-;22833:37;22829:481;;22913:2;22895:15;:20;;;;22953:15;;22938:12;:30;;;;23012:2;22993:16;:21;;;;23053:16;;23037:13;:32;;;;22829:481;;;23136:1;23118:15;:19;;;;23175:15;;23160:12;:30;;;;23234:1;23215:16;:20;;;;23274:16;;23258:13;:32;;;;22829:481;23335:13;;;;;;;;;;;23330:223;;23407:19;:25;23427:4;23407:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23436:19;:23;23456:2;23436:23;;;;;;;;;;;;;;;;;;;;;;;;;23407:52;23373:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;23330:223;23627:25;:31;23653:4;23627:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23684:31;:35;23716:2;23684:35;;;;;;;;;;;;;;;;;;;;;;;;;23683:36;23627:92;23601:1147;;;23806:20;;23796:6;:30;;23762:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;24014:9;;23997:13;24007:2;23997:9;:13::i;:::-;23988:6;:22;;;;:::i;:::-;:35;;23954:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23601:1147;;;24192:25;:29;24218:2;24192:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;24247:31;:37;24279:4;24247:37;;;;;;;;;;;;;;;;;;;;;;;;;24246:38;24192:92;24166:582;;;24371:20;;24361:6;:30;;24327:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;24166:582;;;24528:31;:35;24560:2;24528:35;;;;;;;;;;;;;;;;;;;;;;;;;24523:225;;24648:9;;24631:13;24641:2;24631:9;:13::i;:::-;24622:6;:22;;;;:::i;:::-;:35;;24588:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24523:225;24166:582;23601:1147;22614:2149;22579:2195;24786:28;24817:24;24835:4;24817:9;:24::i;:::-;24786:55;;24854:12;24893:18;;24869:20;:42;;24854:57;;24942:7;:35;;;;;24966:11;;;;;;;;;;;24942:35;:61;;;;;24995:8;;;;;;;;;;;24994:9;24942:61;:105;;;;;25045:1;25021:11;:21;25033:8;25021:21;;;;;;;;;;;;:25;24942:105;:154;;;;;25065:25;:31;25091:4;25065:31;;;;;;;;;;;;;;;;;;;;;;;;;25064:32;24942:154;:197;;;;;25114:19;:25;25134:4;25114:25;;;;;;;;;;;;;;;;;;;;;;;;;25113:26;24942:197;:238;;;;;25157:19;:23;25177:2;25157:23;;;;;;;;;;;;;;;;;;;;;;;;;25156:24;24942:238;24924:410;;;25218:4;25207:8;;:15;;;;;;;;;;;;;;;;;;25239:10;:8;:10::i;:::-;25268:11;:21;25280:8;25268:21;;;;;;;;;;;;25266:23;;;;;:::i;:::-;;;;;;;;25317:5;25306:8;;:16;;;;;;;;;;;;;;;;;;24924:410;25346:12;25362:8;;;;;;;;;;;25361:9;25346:24;;25472:19;:25;25492:4;25472:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25501:19;:23;25521:2;25501:23;;;;;;;;;;;;;;;;;;;;;;;;;25472:52;25468:100;;;25551:5;25541:15;;25468:100;25580:12;25685:7;25681:507;;;25737:25;:29;25763:2;25737:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25786:1;25770:13;;:17;25737:50;25733:306;;;25815:34;25845:3;25815:25;25826:13;;25815:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25808:41;;25733:306;;;25911:25;:31;25937:4;25911:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25961:1;25946:12;;:16;25911:51;25907:132;;;25990:33;26019:3;25990:24;26001:12;;25990:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25983:40;;25907:132;25733:306;26066:1;26059:4;:8;26055:91;;;26088:42;26104:4;26118;26125;26088:15;:42::i;:::-;26055:91;26172:4;26162:14;;;;;:::i;:::-;;;25681:507;26200:33;26216:4;26222:2;26226:6;26200:15;:33::i;:::-;22263:3978;;;;;22150:4091;;;;:::o;1192:191::-;1266:16;1285:6;;;;;;;;;;;1266:25;;1311:8;1302:6;;:17;;;;;;;;;;;;;;;;;;1366:8;1335:40;;1356:8;1335:40;;;;;;;;;;;;1255:128;1192:191;:::o;21166:188::-;21283:5;21249:25;:31;21275:4;21249:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21340:5;21306:40;;21334:4;21306:40;;;;;;;;;;;;21166:188;;:::o;26249:589::-;26375:21;26413:1;26399:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26375:40;;26444:4;26426;26431:1;26426:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26470:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26460:4;26465:1;26460:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26505:62;26522:4;26537:15;26555:11;26505:8;:62::i;:::-;26606:15;:66;;;26687:11;26713:1;26757:4;26784;26804:15;26606:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26304:534;26249:589;:::o;5330:770::-;5488:1;5470:20;;:6;:20;;;5462:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5572:1;5551:23;;:9;:23;;;5543:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5627:47;5648:6;5656:9;5667:6;5627:20;:47::i;:::-;5687:21;5711:9;:17;5721:6;5711:17;;;;;;;;;;;;;;;;5687:41;;5778:6;5761:13;:23;;5739:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;5922:6;5906:13;:22;5886:9;:17;5896:6;5886:17;;;;;;;;;;;;;;;:42;;;;5974:6;5950:9;:20;5960:9;5950:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6015:9;5998:35;;6007:6;5998:35;;;6026:6;5998:35;;;;;;:::i;:::-;;;;;;;;6046:46;6066:6;6074:9;6085:6;6046:19;:46::i;:::-;5451:649;5330:770;;;:::o;26846:644::-;26885:23;26911:24;26929:4;26911:9;:24::i;:::-;26885:50;;26946:12;26994:1;26975:15;:20;26971:59;;27012:7;;;;26971:59;27085:2;27064:18;;:23;;;;:::i;:::-;27046:15;:41;27042:115;;;27143:2;27122:18;;:23;;;;:::i;:::-;27104:41;;27042:115;27169:26;27198:15;27169:44;;27226:36;27243:18;27226:16;:36::i;:::-;27297:10;;;;;;;;;;;27289:24;;27359:1;27335:21;:25;;;;:::i;:::-;27289:86;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27275:100;;;;;27408:10;;;;;;;;;;;27400:24;;27432:21;27400:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27386:96;;;;;26874:616;;;26846:644;:::o;9243:98::-;9301:7;9332:1;9328;:5;;;;:::i;:::-;9321:12;;9243:98;;;;:::o;9349:::-;9407:7;9438:1;9434;:5;;;;:::i;:::-;9427:12;;9349:98;;;;:::o;7502:125::-;;;;:::o;7635:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:323::-;7644:6;7693:2;7681:9;7672:7;7668:23;7664:32;7661:119;;;7699:79;;:::i;:::-;7661:119;7819:1;7844:50;7886:7;7877:6;7866:9;7862:22;7844:50;:::i;:::-;7834:60;;7790:114;7588:323;;;;:::o;7917:474::-;7985:6;7993;8042:2;8030:9;8021:7;8017:23;8013:32;8010:119;;;8048:79;;:::i;:::-;8010:119;8168:1;8193:53;8238:7;8229:6;8218:9;8214:22;8193:53;:::i;:::-;8183:63;;8139:117;8295:2;8321:53;8366:7;8357:6;8346:9;8342:22;8321:53;:::i;:::-;8311:63;;8266:118;7917:474;;;;;:::o;8397:180::-;8445:77;8442:1;8435:88;8542:4;8539:1;8532:15;8566:4;8563:1;8556:15;8583:320;8627:6;8664:1;8658:4;8654:12;8644:22;;8711:1;8705:4;8701:12;8732:18;8722:81;;8788:4;8780:6;8776:17;8766:27;;8722:81;8850:2;8842:6;8839:14;8819:18;8816:38;8813:84;;8869:18;;:::i;:::-;8813:84;8634:269;8583:320;;;:::o;8909:182::-;9049:34;9045:1;9037:6;9033:14;9026:58;8909:182;:::o;9097:366::-;9239:3;9260:67;9324:2;9319:3;9260:67;:::i;:::-;9253:74;;9336:93;9425:3;9336:93;:::i;:::-;9454:2;9449:3;9445:12;9438:19;;9097:366;;;:::o;9469:419::-;9635:4;9673:2;9662:9;9658:18;9650:26;;9722:9;9716:4;9712:20;9708:1;9697:9;9693:17;9686:47;9750:131;9876:4;9750:131;:::i;:::-;9742:139;;9469:419;;;:::o;9894:180::-;9942:77;9939:1;9932:88;10039:4;10036:1;10029:15;10063:4;10060:1;10053:15;10080:410;10120:7;10143:20;10161:1;10143:20;:::i;:::-;10138:25;;10177:20;10195:1;10177:20;:::i;:::-;10172:25;;10232:1;10229;10225:9;10254:30;10272:11;10254:30;:::i;:::-;10243:41;;10433:1;10424:7;10420:15;10417:1;10414:22;10394:1;10387:9;10367:83;10344:139;;10463:18;;:::i;:::-;10344:139;10128:362;10080:410;;;;:::o;10496:180::-;10544:77;10541:1;10534:88;10641:4;10638:1;10631:15;10665:4;10662:1;10655:15;10682:185;10722:1;10739:20;10757:1;10739:20;:::i;:::-;10734:25;;10773:20;10791:1;10773:20;:::i;:::-;10768:25;;10812:1;10802:35;;10817:18;;:::i;:::-;10802:35;10859:1;10856;10852:9;10847:14;;10682:185;;;;:::o;10873:234::-;11013:34;11009:1;11001:6;10997:14;10990:58;11082:17;11077:2;11069:6;11065:15;11058:42;10873:234;:::o;11113:366::-;11255:3;11276:67;11340:2;11335:3;11276:67;:::i;:::-;11269:74;;11352:93;11441:3;11352:93;:::i;:::-;11470:2;11465:3;11461:12;11454:19;;11113:366;;;:::o;11485:419::-;11651:4;11689:2;11678:9;11674:18;11666:26;;11738:9;11732:4;11728:20;11724:1;11713:9;11709:17;11702:47;11766:131;11892:4;11766:131;:::i;:::-;11758:139;;11485:419;;;:::o;11910:227::-;12050:34;12046:1;12038:6;12034:14;12027:58;12119:10;12114:2;12106:6;12102:15;12095:35;11910:227;:::o;12143:366::-;12285:3;12306:67;12370:2;12365:3;12306:67;:::i;:::-;12299:74;;12382:93;12471:3;12382:93;:::i;:::-;12500:2;12495:3;12491:12;12484:19;;12143:366;;;:::o;12515:419::-;12681:4;12719:2;12708:9;12704:18;12696:26;;12768:9;12762:4;12758:20;12754:1;12743:9;12739:17;12732:47;12796:131;12922:4;12796:131;:::i;:::-;12788:139;;12515:419;;;:::o;12940:191::-;12980:3;12999:20;13017:1;12999:20;:::i;:::-;12994:25;;13033:20;13051:1;13033:20;:::i;:::-;13028:25;;13076:1;13073;13069:9;13062:16;;13097:3;13094:1;13091:10;13088:36;;;13104:18;;:::i;:::-;13088:36;12940:191;;;;:::o;13137:178::-;13277:30;13273:1;13265:6;13261:14;13254:54;13137:178;:::o;13321:366::-;13463:3;13484:67;13548:2;13543:3;13484:67;:::i;:::-;13477:74;;13560:93;13649:3;13560:93;:::i;:::-;13678:2;13673:3;13669:12;13662:19;;13321:366;;;:::o;13693:419::-;13859:4;13897:2;13886:9;13882:18;13874:26;;13946:9;13940:4;13936:20;13932:1;13921:9;13917:17;13910:47;13974:131;14100:4;13974:131;:::i;:::-;13966:139;;13693:419;;;:::o;14118:244::-;14258:34;14254:1;14246:6;14242:14;14235:58;14327:27;14322:2;14314:6;14310:15;14303:52;14118:244;:::o;14368:366::-;14510:3;14531:67;14595:2;14590:3;14531:67;:::i;:::-;14524:74;;14607:93;14696:3;14607:93;:::i;:::-;14725:2;14720:3;14716:12;14709:19;;14368:366;;;:::o;14740:419::-;14906:4;14944:2;14933:9;14929:18;14921:26;;14993:9;14987:4;14983:20;14979:1;14968:9;14964:17;14957:47;15021:131;15147:4;15021:131;:::i;:::-;15013:139;;14740:419;;;:::o;15165:224::-;15305:34;15301:1;15293:6;15289:14;15282:58;15374:7;15369:2;15361:6;15357:15;15350:32;15165:224;:::o;15395:366::-;15537:3;15558:67;15622:2;15617:3;15558:67;:::i;:::-;15551:74;;15634:93;15723:3;15634:93;:::i;:::-;15752:2;15747:3;15743:12;15736:19;;15395:366;;;:::o;15767:419::-;15933:4;15971:2;15960:9;15956:18;15948:26;;16020:9;16014:4;16010:20;16006:1;15995:9;15991:17;15984:47;16048:131;16174:4;16048:131;:::i;:::-;16040:139;;15767:419;;;:::o;16192:162::-;16332:14;16328:1;16320:6;16316:14;16309:38;16192:162;:::o;16360:366::-;16502:3;16523:67;16587:2;16582:3;16523:67;:::i;:::-;16516:74;;16599:93;16688:3;16599:93;:::i;:::-;16717:2;16712:3;16708:12;16701:19;;16360:366;;;:::o;16732:419::-;16898:4;16936:2;16925:9;16921:18;16913:26;;16985:9;16979:4;16975:20;16971:1;16960:9;16956:17;16949:47;17013:131;17139:4;17013:131;:::i;:::-;17005:139;;16732:419;;;:::o;17157:223::-;17297:34;17293:1;17285:6;17281:14;17274:58;17366:6;17361:2;17353:6;17349:15;17342:31;17157:223;:::o;17386:366::-;17528:3;17549:67;17613:2;17608:3;17549:67;:::i;:::-;17542:74;;17625:93;17714:3;17625:93;:::i;:::-;17743:2;17738:3;17734:12;17727:19;;17386:366;;;:::o;17758:419::-;17924:4;17962:2;17951:9;17947:18;17939:26;;18011:9;18005:4;18001:20;17997:1;17986:9;17982:17;17975:47;18039:131;18165:4;18039:131;:::i;:::-;18031:139;;17758:419;;;:::o;18183:240::-;18323:34;18319:1;18311:6;18307:14;18300:58;18392:23;18387:2;18379:6;18375:15;18368:48;18183:240;:::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:239::-;19366:34;19362:1;19354:6;19350:14;19343:58;19435:22;19430:2;19422:6;19418:15;19411:47;19226:239;:::o;19471:366::-;19613:3;19634:67;19698:2;19693:3;19634:67;:::i;:::-;19627:74;;19710:93;19799:3;19710:93;:::i;:::-;19828:2;19823:3;19819:12;19812:19;;19471:366;;;:::o;19843:419::-;20009:4;20047:2;20036:9;20032:18;20024:26;;20096:9;20090:4;20086:20;20082:1;20071:9;20067:17;20060:47;20124:131;20250:4;20124:131;:::i;:::-;20116:139;;19843:419;;;:::o;20268:225::-;20408:34;20404:1;20396:6;20392:14;20385:58;20477:8;20472:2;20464:6;20460:15;20453:33;20268:225;:::o;20499:366::-;20641:3;20662:67;20726:2;20721:3;20662:67;:::i;:::-;20655:74;;20738:93;20827:3;20738:93;:::i;:::-;20856:2;20851:3;20847:12;20840:19;;20499:366;;;:::o;20871:419::-;21037:4;21075:2;21064:9;21060:18;21052:26;;21124:9;21118:4;21114:20;21110:1;21099:9;21095:17;21088:47;21152:131;21278:4;21152:131;:::i;:::-;21144:139;;20871:419;;;:::o;21296:147::-;21397:11;21434:3;21419:18;;21296:147;;;;:::o;21449:114::-;;:::o;21569:398::-;21728:3;21749:83;21830:1;21825:3;21749:83;:::i;:::-;21742:90;;21841:93;21930:3;21841:93;:::i;:::-;21959:1;21954:3;21950:11;21943:18;;21569:398;;;:::o;21973:379::-;22157:3;22179:147;22322:3;22179:147;:::i;:::-;22172:154;;22343:3;22336:10;;21973:379;;;:::o;22358:223::-;22498:34;22494:1;22486:6;22482:14;22475:58;22567:6;22562:2;22554:6;22550:15;22543:31;22358:223;:::o;22587:366::-;22729:3;22750:67;22814:2;22809:3;22750:67;:::i;:::-;22743:74;;22826:93;22915:3;22826:93;:::i;:::-;22944:2;22939:3;22935:12;22928:19;;22587:366;;;:::o;22959:419::-;23125:4;23163:2;23152:9;23148:18;23140:26;;23212:9;23206:4;23202:20;23198:1;23187:9;23183:17;23176:47;23240:131;23366:4;23240:131;:::i;:::-;23232:139;;22959:419;;;:::o;23384:221::-;23524:34;23520:1;23512:6;23508:14;23501:58;23593:4;23588:2;23580:6;23576:15;23569:29;23384:221;:::o;23611:366::-;23753:3;23774:67;23838:2;23833:3;23774:67;:::i;:::-;23767:74;;23850:93;23939:3;23850:93;:::i;:::-;23968:2;23963:3;23959:12;23952:19;;23611:366;;;:::o;23983:419::-;24149:4;24187:2;24176:9;24172:18;24164:26;;24236:9;24230:4;24226:20;24222:1;24211:9;24207:17;24200:47;24264:131;24390:4;24264:131;:::i;:::-;24256:139;;23983:419;;;:::o;24408:224::-;24548:34;24544:1;24536:6;24532:14;24525:58;24617:7;24612:2;24604:6;24600:15;24593:32;24408:224;:::o;24638:366::-;24780:3;24801:67;24865:2;24860:3;24801:67;:::i;:::-;24794:74;;24877:93;24966:3;24877:93;:::i;:::-;24995:2;24990:3;24986:12;24979:19;;24638:366;;;:::o;25010:419::-;25176:4;25214:2;25203:9;25199:18;25191:26;;25263:9;25257:4;25253:20;25249:1;25238:9;25234:17;25227:47;25291:131;25417:4;25291:131;:::i;:::-;25283:139;;25010:419;;;:::o;25435:222::-;25575:34;25571:1;25563:6;25559:14;25552:58;25644:5;25639:2;25631:6;25627:15;25620:30;25435:222;:::o;25663:366::-;25805:3;25826:67;25890:2;25885:3;25826:67;:::i;:::-;25819:74;;25902:93;25991:3;25902:93;:::i;:::-;26020:2;26015:3;26011:12;26004:19;;25663:366;;;:::o;26035:419::-;26201:4;26239:2;26228:9;26224:18;26216:26;;26288:9;26282:4;26278:20;26274:1;26263:9;26259:17;26252:47;26316:131;26442:4;26316:131;:::i;:::-;26308:139;;26035:419;;;:::o;26460:172::-;26600:24;26596:1;26588:6;26584:14;26577:48;26460:172;:::o;26638:366::-;26780:3;26801:67;26865:2;26860:3;26801:67;:::i;:::-;26794:74;;26877:93;26966:3;26877:93;:::i;:::-;26995:2;26990:3;26986:12;26979:19;;26638:366;;;:::o;27010:419::-;27176:4;27214:2;27203:9;27199:18;27191:26;;27263:9;27257:4;27253:20;27249:1;27238:9;27234:17;27227:47;27291:131;27417:4;27291:131;:::i;:::-;27283:139;;27010:419;;;:::o;27435:240::-;27575:34;27571:1;27563:6;27559:14;27552:58;27644:23;27639:2;27631:6;27627:15;27620:48;27435:240;:::o;27681:366::-;27823:3;27844:67;27908:2;27903:3;27844:67;:::i;:::-;27837:74;;27920:93;28009:3;27920:93;:::i;:::-;28038:2;28033:3;28029:12;28022:19;;27681:366;;;:::o;28053:419::-;28219:4;28257:2;28246:9;28242:18;28234:26;;28306:9;28300:4;28296:20;28292:1;28281:9;28277:17;28270:47;28334:131;28460:4;28334:131;:::i;:::-;28326:139;;28053:419;;;:::o;28478:169::-;28618:21;28614:1;28606:6;28602:14;28595:45;28478:169;:::o;28653:366::-;28795:3;28816:67;28880:2;28875:3;28816:67;:::i;:::-;28809:74;;28892:93;28981:3;28892:93;:::i;:::-;29010:2;29005:3;29001:12;28994:19;;28653:366;;;:::o;29025:419::-;29191:4;29229:2;29218:9;29214:18;29206:26;;29278:9;29272:4;29268:20;29264:1;29253:9;29249:17;29242:47;29306:131;29432:4;29306:131;:::i;:::-;29298:139;;29025:419;;;:::o;29450:241::-;29590:34;29586:1;29578:6;29574:14;29567:58;29659:24;29654:2;29646:6;29642:15;29635:49;29450:241;:::o;29697:366::-;29839:3;29860:67;29924:2;29919:3;29860:67;:::i;:::-;29853:74;;29936:93;30025:3;29936:93;:::i;:::-;30054:2;30049:3;30045:12;30038:19;;29697:366;;;:::o;30069:419::-;30235:4;30273:2;30262:9;30258:18;30250:26;;30322:9;30316:4;30312:20;30308:1;30297:9;30293:17;30286:47;30350:131;30476:4;30350:131;:::i;:::-;30342:139;;30069:419;;;:::o;30494:233::-;30533:3;30556:24;30574:5;30556:24;:::i;:::-;30547:33;;30602:66;30595:5;30592:77;30589:103;;30672:18;;:::i;:::-;30589:103;30719:1;30712:5;30708:13;30701:20;;30494:233;;;:::o;30733:194::-;30773:4;30793:20;30811:1;30793:20;:::i;:::-;30788:25;;30827:20;30845:1;30827:20;:::i;:::-;30822:25;;30871:1;30868;30864:9;30856:17;;30895:1;30889:4;30886:11;30883:37;;;30900:18;;:::i;:::-;30883:37;30733:194;;;;:::o;30933:180::-;30981:77;30978:1;30971:88;31078:4;31075:1;31068:15;31102:4;31099:1;31092:15;31119:180;31167:77;31164:1;31157:88;31264:4;31261:1;31254:15;31288:4;31285:1;31278:15;31305:143;31362:5;31393:6;31387:13;31378:22;;31409:33;31436:5;31409:33;:::i;:::-;31305:143;;;;:::o;31454:351::-;31524:6;31573:2;31561:9;31552:7;31548:23;31544:32;31541:119;;;31579:79;;:::i;:::-;31541:119;31699:1;31724:64;31780:7;31771:6;31760:9;31756:22;31724:64;:::i;:::-;31714:74;;31670:128;31454:351;;;;:::o;31811:85::-;31856:7;31885:5;31874:16;;31811:85;;;:::o;31902:158::-;31960:9;31993:61;32011:42;32020:32;32046:5;32020:32;:::i;:::-;32011:42;:::i;:::-;31993:61;:::i;:::-;31980:74;;31902:158;;;:::o;32066:147::-;32161:45;32200:5;32161:45;:::i;:::-;32156:3;32149:58;32066:147;;:::o;32219:114::-;32286:6;32320:5;32314:12;32304:22;;32219:114;;;:::o;32339:184::-;32438:11;32472:6;32467:3;32460:19;32512:4;32507:3;32503:14;32488:29;;32339:184;;;;:::o;32529:132::-;32596:4;32619:3;32611:11;;32649:4;32644:3;32640:14;32632:22;;32529:132;;;:::o;32667:108::-;32744:24;32762:5;32744:24;:::i;:::-;32739:3;32732:37;32667:108;;:::o;32781:179::-;32850:10;32871:46;32913:3;32905:6;32871:46;:::i;:::-;32949:4;32944:3;32940:14;32926:28;;32781:179;;;;:::o;32966:113::-;33036:4;33068;33063:3;33059:14;33051:22;;32966:113;;;:::o;33115:732::-;33234:3;33263:54;33311:5;33263:54;:::i;:::-;33333:86;33412:6;33407:3;33333:86;:::i;:::-;33326:93;;33443:56;33493:5;33443:56;:::i;:::-;33522:7;33553:1;33538:284;33563:6;33560:1;33557:13;33538:284;;;33639:6;33633:13;33666:63;33725:3;33710:13;33666:63;:::i;:::-;33659:70;;33752:60;33805:6;33752:60;:::i;:::-;33742:70;;33598:224;33585:1;33582;33578:9;33573:14;;33538:284;;;33542:14;33838:3;33831:10;;33239:608;;;33115:732;;;;:::o;33853:831::-;34116:4;34154:3;34143:9;34139:19;34131:27;;34168:71;34236:1;34225:9;34221:17;34212:6;34168:71;:::i;:::-;34249:80;34325:2;34314:9;34310:18;34301:6;34249:80;:::i;:::-;34376:9;34370:4;34366:20;34361:2;34350:9;34346:18;34339:48;34404:108;34507:4;34498:6;34404:108;:::i;:::-;34396:116;;34522:72;34590:2;34579:9;34575:18;34566:6;34522:72;:::i;:::-;34604:73;34672:3;34661:9;34657:19;34648:6;34604:73;:::i;:::-;33853:831;;;;;;;;:::o;34690:225::-;34830:34;34826:1;34818:6;34814:14;34807:58;34899:8;34894:2;34886:6;34882:15;34875:33;34690:225;:::o;34921:366::-;35063:3;35084:67;35148:2;35143:3;35084:67;:::i;:::-;35077:74;;35160:93;35249:3;35160:93;:::i;:::-;35278:2;35273:3;35269:12;35262:19;;34921:366;;;:::o;35293:419::-;35459:4;35497:2;35486:9;35482:18;35474:26;;35546:9;35540:4;35536:20;35532:1;35521:9;35517:17;35510:47;35574:131;35700:4;35574:131;:::i;:::-;35566:139;;35293:419;;;:::o

Swarm Source

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