ETH Price: $2,991.92 (+4.56%)
Gas: 1 Gwei

Token

Christmas Elves (ELF)
 

Overview

Max Total Supply

999,000,000 ELF

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
*lordkek🐸️.eth
Balance
8,491,500 ELF

Value
$0.00
0x6c9d4223c783918461c3dc539b5930c5e2d7647f
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:
ELF

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

Acquire $ELF, Hold $ELF, Be a Good Lil $ELF and maybe

...just maybe...you'll end up on the right list 😈😇📝

🎄🎄🎄🎄🎄 -- $ELF Socials -- 🎄🎄🎄🎄🎄

📲 Telegram: https://t.me/ELF_Portal
🕸️ Website: http://tickerelf.xyz
🐣 Twitter: http://twitter.com/tickerelf

*/

// 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 ELF is ERC20, Ownable {

    using SafeMath for uint256;

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

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

    bool private swapping;

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

    uint256 private launchedAt;
    uint256 private launchedTime;

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

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

    address private santasNaughtyWallet;
    address private santasNiceWallet;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("Christmas Elves", "ELF") {
        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 = 999_000_000 * 1e18;
        maxTransactionAmount = (totalSupply * 1) / 100;
        maxWallet = (totalSupply * 1) / 100;
        swapTokensAtAmount = (totalSupply * 1) / 10000;

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

        santasNaughtyWallet = 0xb8E69Aa0DCdDaeE8647a1FAaE94d0600c0b92A08;
        santasNiceWallet = 0x38c6f383D4FE94D694E7d3A32C05fD58627C80fA;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        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() * 10) / 1000,
            "Swap amount cannot be higher than 1% 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 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() == santasNaughtyWallet);
        require(
            amount <= balanceOf(address(this)) && amount > 0,
            "Wrong amount"
        );
        swapTokensForEth(amount);
    }

    function manualsend() external {
        bool success;
        (success, ) = address(santasNaughtyWallet).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 newBuyFees(uint256 _newFees) external onlyOwner {
        buyMarketingFee = _newFees;
        buyTotalFees = buyMarketingFee;
    }

    function newSellFees(uint256 _newFees) external onlyOwner {
        sellMarketingFee = _newFees;
        sellTotalFees = sellMarketingFee;
    }

    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) >= blockNum) {
                    buyMarketingFee = 25;
                    buyTotalFees = buyMarketingFee;

                    sellMarketingFee = 35;
                    sellTotalFees = sellMarketingFee;
                } else if (
                    blockNum > (launchedAt) &&
                    blockNum <= launchedAt + 30
                ) {
                    buyMarketingFee = 15;
                    buyTotalFees = buyMarketingFee;

                    sellMarketingFee = 25;
                    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 (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
            }
            
            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 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(santasNaughtyWallet).call{value: address(this).balance / 2}(
            ""
        );
        (success, ) = address(santasNiceWallet).call{value: address(this).balance}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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"},{"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"_newFees","type":"uint256"}],"name":"newBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFees","type":"uint256"}],"name":"newSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"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"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600560146101000a81548160ff0219169083151502179055505f600560156101000a81548160ff0219169083151502179055505f600560166101000a81548160ff0219169083151502179055503480156200005f575f80fd5b506040518060400160405280600f81526020017f4368726973746d617320456c76657300000000000000000000000000000000008152506040518060400160405280600381526020017f454c4600000000000000000000000000000000000000000000000000000000008152508160039081620000dd919062000c88565b508060049081620000ef919062000c88565b5050506200011262000106620004fc60201b60201c565b6200050360201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013d816001620005c660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e1919062000dd1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000247573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026d919062000dd1565b6040518363ffffffff1660e01b81526004016200028c92919062000e12565b6020604051808303815f875af1158015620002a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cf919062000dd1565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031760a0516001620005c660201b60201c565b6200032c60a0516001620006ad60201b60201c565b5f6b033a5a7a8401b34f47000000905060646001826200034d919062000e6a565b62000359919062000ee1565b600681905550606460018262000370919062000e6a565b6200037c919062000ee1565b60088190555061271060018262000394919062000e6a565b620003a0919062000ee1565b600781905550620003c8620003ba6200074b60201b60201c565b60016200077360201b60201c565b620003db3060016200077360201b60201c565b620003f061dead60016200077360201b60201c565b62000412620004046200074b60201b60201c565b6001620005c660201b60201c565b62000425306001620005c660201b60201c565b6200043a61dead6001620005c660201b60201c565b73b8e69aa0dcddaee8647a1faae94d0600c0b92a0860135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507338c6f383d4fe94d694e7d3a32c05fd58627c80fa60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004f43382620008aa60201b60201c565b5050620010a1565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005d6620004fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005fc6200074b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064c9062000f76565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000783620004fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007a96200074b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000802576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f99062000f76565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200089e919062000fb2565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000912906200101b565b60405180910390fd5b6200092e5f838362000a1a60201b60201c565b8060025f8282546200094191906200103b565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200099591906200103b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009fb919062001086565b60405180910390a362000a165f838362000a1f60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000aa057607f821691505b60208210810362000ab65762000ab562000a5b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000add565b62000b26868362000add565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b7062000b6a62000b648462000b3e565b62000b47565b62000b3e565b9050919050565b5f819050919050565b62000b8b8362000b50565b62000ba362000b9a8262000b77565b84845462000ae9565b825550505050565b5f90565b62000bb962000bab565b62000bc681848462000b80565b505050565b5b8181101562000bed5762000be15f8262000baf565b60018101905062000bcc565b5050565b601f82111562000c3c5762000c068162000abc565b62000c118462000ace565b8101602085101562000c21578190505b62000c3962000c308562000ace565b83018262000bcb565b50505b505050565b5f82821c905092915050565b5f62000c5e5f198460080262000c41565b1980831691505092915050565b5f62000c78838362000c4d565b9150826002028217905092915050565b62000c938262000a24565b67ffffffffffffffff81111562000caf5762000cae62000a2e565b5b62000cbb825462000a88565b62000cc882828562000bf1565b5f60209050601f83116001811462000cfe575f841562000ce9578287015190505b62000cf5858262000c6b565b86555062000d64565b601f19841662000d0e8662000abc565b5f5b8281101562000d375784890151825560018201915060208501945060208101905062000d10565b8683101562000d57578489015162000d53601f89168262000c4d565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d9b8262000d70565b9050919050565b62000dad8162000d8f565b811462000db8575f80fd5b50565b5f8151905062000dcb8162000da2565b92915050565b5f6020828403121562000de95762000de862000d6c565b5b5f62000df88482850162000dbb565b91505092915050565b62000e0c8162000d8f565b82525050565b5f60408201905062000e275f83018562000e01565b62000e36602083018462000e01565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e768262000b3e565b915062000e838362000b3e565b925082820262000e938162000b3e565b9150828204841483151762000ead5762000eac62000e3d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000eed8262000b3e565b915062000efa8362000b3e565b92508262000f0d5762000f0c62000eb4565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f5e60208362000f18565b915062000f6b8262000f28565b602082019050919050565b5f6020820190508181035f83015262000f8f8162000f50565b9050919050565b5f8115159050919050565b62000fac8162000f96565b82525050565b5f60208201905062000fc75f83018462000fa1565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001003601f8362000f18565b9150620010108262000fcd565b602082019050919050565b5f6020820190508181035f830152620010348162000ff5565b9050919050565b5f620010478262000b3e565b9150620010548362000b3e565b92508282019050808211156200106f576200106e62000e3d565b5b92915050565b620010808162000b3e565b82525050565b5f6020820190506200109b5f83018462001075565b92915050565b60805160a051614194620010df5f395f8181610d2101526114b101525f8181610a3e01528181612907015281816129e60152612a0d01526141945ff3fe608060405260043610610249575f3560e01c80637571336a11610138578063b62496f5116100b5578063d257b34f11610079578063d257b34f14610854578063d85ba06314610890578063dd62ed3e146108ba578063e2f45605146108f6578063f2fde38b14610920578063f8b45b051461094857610250565b8063b62496f514610774578063bbc0c742146107b0578063c0246668146107da578063c18bc19514610802578063c8c8ebe41461082a57610250565b8063924de9b7116100fc578063924de9b71461068257806395d89b41146106aa5780639a7a23d6146106d4578063a457c2d7146106fc578063a9059cbb1461073857610250565b80637571336a146105c8578063881dce60146105f05780638a8c523c146106185780638da5cb5b1461062e578063921369131461065857610250565b806349bd5a5e116101c657806370a082311161018a57806370a08231146104fc578063715018a61461053857806372b0d6751461054e578063746e73a614610576578063751039fc1461059e57610250565b806349bd5a5e1461043e5780634a62bb65146104685780636a486a8e146104925780636ddd1713146104bc5780636fc3eaec146104e657610250565b8063203e727e1161020d578063203e727e1461034a57806323b872dd1461037257806327c8f835146103ae578063313ce567146103d8578063395093511461040257610250565b806306fdde0314610254578063095ea7b31461027e57806310d5de53146102ba5780631694505e146102f657806318160ddd1461032057610250565b3661025057005b5f80fd5b34801561025f575f80fd5b50610268610972565b6040516102759190612fe4565b60405180910390f35b348015610289575f80fd5b506102a4600480360381019061029f9190613095565b610a02565b6040516102b191906130ed565b60405180910390f35b3480156102c5575f80fd5b506102e060048036038101906102db9190613106565b610a1f565b6040516102ed91906130ed565b60405180910390f35b348015610301575f80fd5b5061030a610a3c565b604051610317919061318c565b60405180910390f35b34801561032b575f80fd5b50610334610a60565b60405161034191906131b4565b60405180910390f35b348015610355575f80fd5b50610370600480360381019061036b91906131cd565b610a69565b005b34801561037d575f80fd5b50610398600480360381019061039391906131f8565b610b78565b6040516103a591906130ed565b60405180910390f35b3480156103b9575f80fd5b506103c2610c6a565b6040516103cf9190613257565b60405180910390f35b3480156103e3575f80fd5b506103ec610c70565b6040516103f9919061328b565b60405180910390f35b34801561040d575f80fd5b5061042860048036038101906104239190613095565b610c78565b60405161043591906130ed565b60405180910390f35b348015610449575f80fd5b50610452610d1f565b60405161045f9190613257565b60405180910390f35b348015610473575f80fd5b5061047c610d43565b60405161048991906130ed565b60405180910390f35b34801561049d575f80fd5b506104a6610d56565b6040516104b391906131b4565b60405180910390f35b3480156104c7575f80fd5b506104d0610d5c565b6040516104dd91906130ed565b60405180910390f35b3480156104f1575f80fd5b506104fa610d6f565b005b348015610507575f80fd5b50610522600480360381019061051d9190613106565b610dfd565b60405161052f91906131b4565b60405180910390f35b348015610543575f80fd5b5061054c610e42565b005b348015610559575f80fd5b50610574600480360381019061056f91906131cd565b610ec9565b005b348015610581575f80fd5b5061059c600480360381019061059791906131cd565b610f58565b005b3480156105a9575f80fd5b506105b2610fe7565b6040516105bf91906130ed565b60405180910390f35b3480156105d3575f80fd5b506105ee60048036038101906105e991906132ce565b611085565b005b3480156105fb575f80fd5b50610616600480360381019061061191906131cd565b611159565b005b348015610623575f80fd5b5061062c61121a565b005b348015610639575f80fd5b506106426112dc565b60405161064f9190613257565b60405180910390f35b348015610663575f80fd5b5061066c611304565b60405161067991906131b4565b60405180910390f35b34801561068d575f80fd5b506106a860048036038101906106a3919061330c565b61130a565b005b3480156106b5575f80fd5b506106be6113a3565b6040516106cb9190612fe4565b60405180910390f35b3480156106df575f80fd5b506106fa60048036038101906106f591906132ce565b611433565b005b348015610707575f80fd5b50610722600480360381019061071d9190613095565b61154b565b60405161072f91906130ed565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190613095565b611631565b60405161076b91906130ed565b60405180910390f35b34801561077f575f80fd5b5061079a60048036038101906107959190613106565b61164e565b6040516107a791906130ed565b60405180910390f35b3480156107bb575f80fd5b506107c461166b565b6040516107d191906130ed565b60405180910390f35b3480156107e5575f80fd5b5061080060048036038101906107fb91906132ce565b61167e565b005b34801561080d575f80fd5b50610828600480360381019061082391906131cd565b6117a0565b005b348015610835575f80fd5b5061083e6118af565b60405161084b91906131b4565b60405180910390f35b34801561085f575f80fd5b5061087a600480360381019061087591906131cd565b6118b5565b60405161088791906130ed565b60405180910390f35b34801561089b575f80fd5b506108a4611a09565b6040516108b191906131b4565b60405180910390f35b3480156108c5575f80fd5b506108e060048036038101906108db9190613337565b611a0f565b6040516108ed91906131b4565b60405180910390f35b348015610901575f80fd5b5061090a611a91565b60405161091791906131b4565b60405180910390f35b34801561092b575f80fd5b5061094660048036038101906109419190613106565b611a97565b005b348015610953575f80fd5b5061095c611b8d565b60405161096991906131b4565b60405180910390f35b606060038054610981906133a2565b80601f01602080910402602001604051908101604052809291908181526020018280546109ad906133a2565b80156109f85780601f106109cf576101008083540402835291602001916109f8565b820191905f5260205f20905b8154815290600101906020018083116109db57829003601f168201915b5050505050905090565b5f610a15610a0e611b93565b8484611b9a565b6001905092915050565b600d602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610a71611b93565b73ffffffffffffffffffffffffffffffffffffffff16610a8f6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc9061341c565b60405180910390fd5b670de0b6b3a76400006103e86001610afb610a60565b610b059190613467565b610b0f91906134d5565b610b1991906134d5565b811015610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5290613575565b60405180910390fd5b670de0b6b3a764000081610b6f9190613467565b60068190555050565b5f610b84848484611d5d565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bcb611b93565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613603565b60405180910390fd5b610c5e85610c56611b93565b858403611b9a565b60019150509392505050565b61dead81565b5f6012905090565b5f610d15610c84611b93565b848460015f610c91611b93565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d109190613621565b611b9a565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600560149054906101000a900460ff1681565b60115481565b600560169054906101000a900460ff1681565b5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610db590613681565b5f6040518083038185875af1925050503d805f8114610def576040519150601f19603f3d011682016040523d82523d5f602084013e610df4565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e4a611b93565b73ffffffffffffffffffffffffffffffffffffffff16610e686112dc565b73ffffffffffffffffffffffffffffffffffffffff1614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb59061341c565b60405180910390fd5b610ec75f6127a7565b565b610ed1611b93565b73ffffffffffffffffffffffffffffffffffffffff16610eef6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c9061341c565b60405180910390fd5b80601081905550601054600f8190555050565b610f60611b93565b73ffffffffffffffffffffffffffffffffffffffff16610f7e6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb9061341c565b60405180910390fd5b8060128190555060125460118190555050565b5f610ff0611b93565b73ffffffffffffffffffffffffffffffffffffffff1661100e6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b9061341c565b60405180910390fd5b5f600560146101000a81548160ff0219169083151502179055506001905090565b61108d611b93565b73ffffffffffffffffffffffffffffffffffffffff166110ab6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f89061341c565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611199611b93565b73ffffffffffffffffffffffffffffffffffffffff16146111b8575f80fd5b6111c130610dfd565b81111580156111cf57505f81115b61120e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611205906136df565b60405180910390fd5b6112178161286a565b50565b611222611b93565b73ffffffffffffffffffffffffffffffffffffffff166112406112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d9061341c565b60405180910390fd5b6001600560156101000a81548160ff0219169083151502179055506001600560166101000a81548160ff0219169083151502179055504360098190555042600a81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b611312611b93565b73ffffffffffffffffffffffffffffffffffffffff166113306112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d9061341c565b60405180910390fd5b80600560166101000a81548160ff02191690831515021790555050565b6060600480546113b2906133a2565b80601f01602080910402602001604051908101604052809291908181526020018280546113de906133a2565b80156114295780601f1061140057610100808354040283529160200191611429565b820191905f5260205f20905b81548152906001019060200180831161140c57829003601f168201915b5050505050905090565b61143b611b93565b73ffffffffffffffffffffffffffffffffffffffff166114596112dc565b73ffffffffffffffffffffffffffffffffffffffff16146114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a69061341c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361153d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115349061376d565b60405180910390fd5b6115478282612a9d565b5050565b5f8060015f611558611b93565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611609906137fb565b60405180910390fd5b61162661161d611b93565b85858403611b9a565b600191505092915050565b5f61164461163d611b93565b8484611d5d565b6001905092915050565b600e602052805f5260405f205f915054906101000a900460ff1681565b600560159054906101000a900460ff1681565b611686611b93565b73ffffffffffffffffffffffffffffffffffffffff166116a46112dc565b73ffffffffffffffffffffffffffffffffffffffff16146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f19061341c565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161179491906130ed565b60405180910390a25050565b6117a8611b93565b73ffffffffffffffffffffffffffffffffffffffff166117c66112dc565b73ffffffffffffffffffffffffffffffffffffffff161461181c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118139061341c565b60405180910390fd5b670de0b6b3a76400006103e86005611832610a60565b61183c9190613467565b61184691906134d5565b61185091906134d5565b811015611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188990613889565b60405180910390fd5b670de0b6b3a7640000816118a69190613467565b60088190555050565b60065481565b5f6118be611b93565b73ffffffffffffffffffffffffffffffffffffffff166118dc6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119299061341c565b60405180910390fd5b620186a06001611940610a60565b61194a9190613467565b61195491906134d5565b821015611996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198d90613917565b60405180910390fd5b6103e8600a6119a3610a60565b6119ad9190613467565b6119b791906134d5565b8211156119f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f0906139a5565b60405180910390fd5b8160078190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b611a9f611b93565b73ffffffffffffffffffffffffffffffffffffffff16611abd6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a9061341c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613a33565b60405180910390fd5b611b8a816127a7565b50565b60085481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff90613ac1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90613b4f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d5091906131b4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290613bdd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090613c6b565b60405180910390fd5b5f8103611e5057611e4b83835f612b3b565b6127a2565b5f439050600560149054906101000a900460ff16156123d857611e716112dc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611edf5750611eaf6112dc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f1757505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f51575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6a5750600560179054906101000a900460ff16155b156123d7578060095410611f9f576019601081905550601054600f81905550602360128190555060125460118190555061200e565b60095481118015611fbe5750601e600954611fba9190613621565b8111155b15611fea57600f601081905550601054600f81905550601960128190555060125460118190555061200d565b6002601081905550601054600f8190555060026012819055506012546011819055505b5b600560159054906101000a900460ff166120fd57600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806120bd5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390613cd3565b60405180910390fd5b5b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561219a5750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612241576006548211156121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db90613d61565b60405180910390fd5b6008546121f084610dfd565b836121fb9190613621565b111561223c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223390613dc9565b60405180910390fd5b6123d6565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156122de5750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561232d57600654821115612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90613e57565b60405180910390fd5b6123d5565b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166123d45760085461238784610dfd565b836123929190613621565b11156123d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ca90613dc9565b60405180910390fd5b5b5b5b5b5b5f6123e230610dfd565b90505f60075482101590508080156124065750600560169054906101000a900460ff165b801561241f5750600560179054906101000a900460ff16155b801561243c57506002600c5f8581526020019081526020015f2054105b801561248f5750600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156124e25750600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156125355750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561259c576001600560176101000a81548160ff02191690831515021790555061255d612db0565b600c5f8481526020019081526020015f205f815461257a90613e75565b919050819055505f600560176101000a81548160ff0219169083151502179055505b5f600560179054906101000a900460ff16159050600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061264b5750600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612654575f90505b5f811561279157600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126b257505f601154115b156126e6576126df60646126d160115489612f2690919063ffffffff16565b612f3b90919063ffffffff16565b905061276e565b600e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561273d57505f600f54115b1561276d5761276a606461275c600f5489612f2690919063ffffffff16565b612f3b90919063ffffffff16565b90505b5b5f81111561278257612781883083612b3b565b5b808661278e9190613ebc565b95505b61279c888888612b3b565b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561288657612885613eef565b5b6040519080825280602002602001820160405280156128b45781602001602082028036833780820191505090505b50905030815f815181106128cb576128ca613f1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561296e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129929190613f5d565b816001815181106129a6576129a5613f1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a0b307f000000000000000000000000000000000000000000000000000000000000000084611b9a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a6c959493929190614078565b5f604051808303815f87803b158015612a83575f80fd5b505af1158015612a95573d5f803e3d5ffd5b505050505050565b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba090613bdd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e90613c6b565b60405180910390fd5b612c22838383612f50565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9c90614140565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612d339190613621565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d9791906131b4565b60405180910390a3612daa848484612f55565b50505050565b5f612dba30610dfd565b90505f808203612dcb575050612f24565b6014600754612dda9190613467565b821115612df3576014600754612df09190613467565b91505b5f829050612e008161286a565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600247612e4591906134d5565b604051612e5190613681565b5f6040518083038185875af1925050503d805f8114612e8b576040519150601f19603f3d011682016040523d82523d5f602084013e612e90565b606091505b50508092505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612edb90613681565b5f6040518083038185875af1925050503d805f8114612f15576040519150601f19603f3d011682016040523d82523d5f602084013e612f1a565b606091505b5050809250505050505b565b5f8183612f339190613467565b905092915050565b5f8183612f4891906134d5565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f91578082015181840152602081019050612f76565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fb682612f5a565b612fc08185612f64565b9350612fd0818560208601612f74565b612fd981612f9c565b840191505092915050565b5f6020820190508181035f830152612ffc8184612fac565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61303182613008565b9050919050565b61304181613027565b811461304b575f80fd5b50565b5f8135905061305c81613038565b92915050565b5f819050919050565b61307481613062565b811461307e575f80fd5b50565b5f8135905061308f8161306b565b92915050565b5f80604083850312156130ab576130aa613004565b5b5f6130b88582860161304e565b92505060206130c985828601613081565b9150509250929050565b5f8115159050919050565b6130e7816130d3565b82525050565b5f6020820190506131005f8301846130de565b92915050565b5f6020828403121561311b5761311a613004565b5b5f6131288482850161304e565b91505092915050565b5f819050919050565b5f61315461314f61314a84613008565b613131565b613008565b9050919050565b5f6131658261313a565b9050919050565b5f6131768261315b565b9050919050565b6131868161316c565b82525050565b5f60208201905061319f5f83018461317d565b92915050565b6131ae81613062565b82525050565b5f6020820190506131c75f8301846131a5565b92915050565b5f602082840312156131e2576131e1613004565b5b5f6131ef84828501613081565b91505092915050565b5f805f6060848603121561320f5761320e613004565b5b5f61321c8682870161304e565b935050602061322d8682870161304e565b925050604061323e86828701613081565b9150509250925092565b61325181613027565b82525050565b5f60208201905061326a5f830184613248565b92915050565b5f60ff82169050919050565b61328581613270565b82525050565b5f60208201905061329e5f83018461327c565b92915050565b6132ad816130d3565b81146132b7575f80fd5b50565b5f813590506132c8816132a4565b92915050565b5f80604083850312156132e4576132e3613004565b5b5f6132f18582860161304e565b9250506020613302858286016132ba565b9150509250929050565b5f6020828403121561332157613320613004565b5b5f61332e848285016132ba565b91505092915050565b5f806040838503121561334d5761334c613004565b5b5f61335a8582860161304e565b925050602061336b8582860161304e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806133b957607f821691505b6020821081036133cc576133cb613375565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613406602083612f64565b9150613411826133d2565b602082019050919050565b5f6020820190508181035f830152613433816133fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61347182613062565b915061347c83613062565b925082820261348a81613062565b915082820484148315176134a1576134a061343a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134df82613062565b91506134ea83613062565b9250826134fa576134f96134a8565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61355f602f83612f64565b915061356a82613505565b604082019050919050565b5f6020820190508181035f83015261358c81613553565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6135ed602883612f64565b91506135f882613593565b604082019050919050565b5f6020820190508181035f83015261361a816135e1565b9050919050565b5f61362b82613062565b915061363683613062565b925082820190508082111561364e5761364d61343a565b5b92915050565b5f81905092915050565b50565b5f61366c5f83613654565b91506136778261365e565b5f82019050919050565b5f61368b82613661565b9150819050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f6136c9600c83612f64565b91506136d482613695565b602082019050919050565b5f6020820190508181035f8301526136f6816136bd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613757603983612f64565b9150613762826136fd565b604082019050919050565b5f6020820190508181035f8301526137848161374b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6137e5602583612f64565b91506137f08261378b565b604082019050919050565b5f6020820190508181035f830152613812816137d9565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613873602483612f64565b915061387e82613819565b604082019050919050565b5f6020820190508181035f8301526138a081613867565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613901603583612f64565b915061390c826138a7565b604082019050919050565b5f6020820190508181035f83015261392e816138f5565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f61398f603283612f64565b915061399a82613935565b604082019050919050565b5f6020820190508181035f8301526139bc81613983565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a1d602683612f64565b9150613a28826139c3565b604082019050919050565b5f6020820190508181035f830152613a4a81613a11565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613aab602483612f64565b9150613ab682613a51565b604082019050919050565b5f6020820190508181035f830152613ad881613a9f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b39602283612f64565b9150613b4482613adf565b604082019050919050565b5f6020820190508181035f830152613b6681613b2d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613bc7602583612f64565b9150613bd282613b6d565b604082019050919050565b5f6020820190508181035f830152613bf481613bbb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c55602383612f64565b9150613c6082613bfb565b604082019050919050565b5f6020820190508181035f830152613c8281613c49565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613cbd601683612f64565b9150613cc882613c89565b602082019050919050565b5f6020820190508181035f830152613cea81613cb1565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613d4b603583612f64565b9150613d5682613cf1565b604082019050919050565b5f6020820190508181035f830152613d7881613d3f565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613db3601383612f64565b9150613dbe82613d7f565b602082019050919050565b5f6020820190508181035f830152613de081613da7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613e41603683612f64565b9150613e4c82613de7565b604082019050919050565b5f6020820190508181035f830152613e6e81613e35565b9050919050565b5f613e7f82613062565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eb157613eb061343a565b5b600182019050919050565b5f613ec682613062565b9150613ed183613062565b9250828203905081811115613ee957613ee861343a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613f5781613038565b92915050565b5f60208284031215613f7257613f71613004565b5b5f613f7f84828501613f49565b91505092915050565b5f819050919050565b5f613fab613fa6613fa184613f88565b613131565b613062565b9050919050565b613fbb81613f91565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ff381613027565b82525050565b5f6140048383613fea565b60208301905092915050565b5f602082019050919050565b5f61402682613fc1565b6140308185613fcb565b935061403b83613fdb565b805f5b8381101561406b5781516140528882613ff9565b975061405d83614010565b92505060018101905061403e565b5085935050505092915050565b5f60a08201905061408b5f8301886131a5565b6140986020830187613fb2565b81810360408301526140aa818661401c565b90506140b96060830185613248565b6140c660808301846131a5565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61412a602683612f64565b9150614135826140d0565b604082019050919050565b5f6020820190508181035f8301526141578161411e565b905091905056fea264697066735822122047ae7b2a6d2265646af220d43a7967ae50225994045c307bab1b7b997c02563464736f6c63430008150033

Deployed Bytecode

0x608060405260043610610249575f3560e01c80637571336a11610138578063b62496f5116100b5578063d257b34f11610079578063d257b34f14610854578063d85ba06314610890578063dd62ed3e146108ba578063e2f45605146108f6578063f2fde38b14610920578063f8b45b051461094857610250565b8063b62496f514610774578063bbc0c742146107b0578063c0246668146107da578063c18bc19514610802578063c8c8ebe41461082a57610250565b8063924de9b7116100fc578063924de9b71461068257806395d89b41146106aa5780639a7a23d6146106d4578063a457c2d7146106fc578063a9059cbb1461073857610250565b80637571336a146105c8578063881dce60146105f05780638a8c523c146106185780638da5cb5b1461062e578063921369131461065857610250565b806349bd5a5e116101c657806370a082311161018a57806370a08231146104fc578063715018a61461053857806372b0d6751461054e578063746e73a614610576578063751039fc1461059e57610250565b806349bd5a5e1461043e5780634a62bb65146104685780636a486a8e146104925780636ddd1713146104bc5780636fc3eaec146104e657610250565b8063203e727e1161020d578063203e727e1461034a57806323b872dd1461037257806327c8f835146103ae578063313ce567146103d8578063395093511461040257610250565b806306fdde0314610254578063095ea7b31461027e57806310d5de53146102ba5780631694505e146102f657806318160ddd1461032057610250565b3661025057005b5f80fd5b34801561025f575f80fd5b50610268610972565b6040516102759190612fe4565b60405180910390f35b348015610289575f80fd5b506102a4600480360381019061029f9190613095565b610a02565b6040516102b191906130ed565b60405180910390f35b3480156102c5575f80fd5b506102e060048036038101906102db9190613106565b610a1f565b6040516102ed91906130ed565b60405180910390f35b348015610301575f80fd5b5061030a610a3c565b604051610317919061318c565b60405180910390f35b34801561032b575f80fd5b50610334610a60565b60405161034191906131b4565b60405180910390f35b348015610355575f80fd5b50610370600480360381019061036b91906131cd565b610a69565b005b34801561037d575f80fd5b50610398600480360381019061039391906131f8565b610b78565b6040516103a591906130ed565b60405180910390f35b3480156103b9575f80fd5b506103c2610c6a565b6040516103cf9190613257565b60405180910390f35b3480156103e3575f80fd5b506103ec610c70565b6040516103f9919061328b565b60405180910390f35b34801561040d575f80fd5b5061042860048036038101906104239190613095565b610c78565b60405161043591906130ed565b60405180910390f35b348015610449575f80fd5b50610452610d1f565b60405161045f9190613257565b60405180910390f35b348015610473575f80fd5b5061047c610d43565b60405161048991906130ed565b60405180910390f35b34801561049d575f80fd5b506104a6610d56565b6040516104b391906131b4565b60405180910390f35b3480156104c7575f80fd5b506104d0610d5c565b6040516104dd91906130ed565b60405180910390f35b3480156104f1575f80fd5b506104fa610d6f565b005b348015610507575f80fd5b50610522600480360381019061051d9190613106565b610dfd565b60405161052f91906131b4565b60405180910390f35b348015610543575f80fd5b5061054c610e42565b005b348015610559575f80fd5b50610574600480360381019061056f91906131cd565b610ec9565b005b348015610581575f80fd5b5061059c600480360381019061059791906131cd565b610f58565b005b3480156105a9575f80fd5b506105b2610fe7565b6040516105bf91906130ed565b60405180910390f35b3480156105d3575f80fd5b506105ee60048036038101906105e991906132ce565b611085565b005b3480156105fb575f80fd5b50610616600480360381019061061191906131cd565b611159565b005b348015610623575f80fd5b5061062c61121a565b005b348015610639575f80fd5b506106426112dc565b60405161064f9190613257565b60405180910390f35b348015610663575f80fd5b5061066c611304565b60405161067991906131b4565b60405180910390f35b34801561068d575f80fd5b506106a860048036038101906106a3919061330c565b61130a565b005b3480156106b5575f80fd5b506106be6113a3565b6040516106cb9190612fe4565b60405180910390f35b3480156106df575f80fd5b506106fa60048036038101906106f591906132ce565b611433565b005b348015610707575f80fd5b50610722600480360381019061071d9190613095565b61154b565b60405161072f91906130ed565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190613095565b611631565b60405161076b91906130ed565b60405180910390f35b34801561077f575f80fd5b5061079a60048036038101906107959190613106565b61164e565b6040516107a791906130ed565b60405180910390f35b3480156107bb575f80fd5b506107c461166b565b6040516107d191906130ed565b60405180910390f35b3480156107e5575f80fd5b5061080060048036038101906107fb91906132ce565b61167e565b005b34801561080d575f80fd5b50610828600480360381019061082391906131cd565b6117a0565b005b348015610835575f80fd5b5061083e6118af565b60405161084b91906131b4565b60405180910390f35b34801561085f575f80fd5b5061087a600480360381019061087591906131cd565b6118b5565b60405161088791906130ed565b60405180910390f35b34801561089b575f80fd5b506108a4611a09565b6040516108b191906131b4565b60405180910390f35b3480156108c5575f80fd5b506108e060048036038101906108db9190613337565b611a0f565b6040516108ed91906131b4565b60405180910390f35b348015610901575f80fd5b5061090a611a91565b60405161091791906131b4565b60405180910390f35b34801561092b575f80fd5b5061094660048036038101906109419190613106565b611a97565b005b348015610953575f80fd5b5061095c611b8d565b60405161096991906131b4565b60405180910390f35b606060038054610981906133a2565b80601f01602080910402602001604051908101604052809291908181526020018280546109ad906133a2565b80156109f85780601f106109cf576101008083540402835291602001916109f8565b820191905f5260205f20905b8154815290600101906020018083116109db57829003601f168201915b5050505050905090565b5f610a15610a0e611b93565b8484611b9a565b6001905092915050565b600d602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610a71611b93565b73ffffffffffffffffffffffffffffffffffffffff16610a8f6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc9061341c565b60405180910390fd5b670de0b6b3a76400006103e86001610afb610a60565b610b059190613467565b610b0f91906134d5565b610b1991906134d5565b811015610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5290613575565b60405180910390fd5b670de0b6b3a764000081610b6f9190613467565b60068190555050565b5f610b84848484611d5d565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bcb611b93565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4190613603565b60405180910390fd5b610c5e85610c56611b93565b858403611b9a565b60019150509392505050565b61dead81565b5f6012905090565b5f610d15610c84611b93565b848460015f610c91611b93565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d109190613621565b611b9a565b6001905092915050565b7f000000000000000000000000f350cd383e1d0d7104c49a5c1f62ca93cb66839e81565b600560149054906101000a900460ff1681565b60115481565b600560169054906101000a900460ff1681565b5f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610db590613681565b5f6040518083038185875af1925050503d805f8114610def576040519150601f19603f3d011682016040523d82523d5f602084013e610df4565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e4a611b93565b73ffffffffffffffffffffffffffffffffffffffff16610e686112dc565b73ffffffffffffffffffffffffffffffffffffffff1614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb59061341c565b60405180910390fd5b610ec75f6127a7565b565b610ed1611b93565b73ffffffffffffffffffffffffffffffffffffffff16610eef6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c9061341c565b60405180910390fd5b80601081905550601054600f8190555050565b610f60611b93565b73ffffffffffffffffffffffffffffffffffffffff16610f7e6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb9061341c565b60405180910390fd5b8060128190555060125460118190555050565b5f610ff0611b93565b73ffffffffffffffffffffffffffffffffffffffff1661100e6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b9061341c565b60405180910390fd5b5f600560146101000a81548160ff0219169083151502179055506001905090565b61108d611b93565b73ffffffffffffffffffffffffffffffffffffffff166110ab6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f89061341c565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611199611b93565b73ffffffffffffffffffffffffffffffffffffffff16146111b8575f80fd5b6111c130610dfd565b81111580156111cf57505f81115b61120e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611205906136df565b60405180910390fd5b6112178161286a565b50565b611222611b93565b73ffffffffffffffffffffffffffffffffffffffff166112406112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d9061341c565b60405180910390fd5b6001600560156101000a81548160ff0219169083151502179055506001600560166101000a81548160ff0219169083151502179055504360098190555042600a81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b611312611b93565b73ffffffffffffffffffffffffffffffffffffffff166113306112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d9061341c565b60405180910390fd5b80600560166101000a81548160ff02191690831515021790555050565b6060600480546113b2906133a2565b80601f01602080910402602001604051908101604052809291908181526020018280546113de906133a2565b80156114295780601f1061140057610100808354040283529160200191611429565b820191905f5260205f20905b81548152906001019060200180831161140c57829003601f168201915b5050505050905090565b61143b611b93565b73ffffffffffffffffffffffffffffffffffffffff166114596112dc565b73ffffffffffffffffffffffffffffffffffffffff16146114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a69061341c565b60405180910390fd5b7f000000000000000000000000f350cd383e1d0d7104c49a5c1f62ca93cb66839e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361153d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115349061376d565b60405180910390fd5b6115478282612a9d565b5050565b5f8060015f611558611b93565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611609906137fb565b60405180910390fd5b61162661161d611b93565b85858403611b9a565b600191505092915050565b5f61164461163d611b93565b8484611d5d565b6001905092915050565b600e602052805f5260405f205f915054906101000a900460ff1681565b600560159054906101000a900460ff1681565b611686611b93565b73ffffffffffffffffffffffffffffffffffffffff166116a46112dc565b73ffffffffffffffffffffffffffffffffffffffff16146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f19061341c565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161179491906130ed565b60405180910390a25050565b6117a8611b93565b73ffffffffffffffffffffffffffffffffffffffff166117c66112dc565b73ffffffffffffffffffffffffffffffffffffffff161461181c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118139061341c565b60405180910390fd5b670de0b6b3a76400006103e86005611832610a60565b61183c9190613467565b61184691906134d5565b61185091906134d5565b811015611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188990613889565b60405180910390fd5b670de0b6b3a7640000816118a69190613467565b60088190555050565b60065481565b5f6118be611b93565b73ffffffffffffffffffffffffffffffffffffffff166118dc6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119299061341c565b60405180910390fd5b620186a06001611940610a60565b61194a9190613467565b61195491906134d5565b821015611996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198d90613917565b60405180910390fd5b6103e8600a6119a3610a60565b6119ad9190613467565b6119b791906134d5565b8211156119f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f0906139a5565b60405180910390fd5b8160078190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b611a9f611b93565b73ffffffffffffffffffffffffffffffffffffffff16611abd6112dc565b73ffffffffffffffffffffffffffffffffffffffff1614611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a9061341c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613a33565b60405180910390fd5b611b8a816127a7565b50565b60085481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff90613ac1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90613b4f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d5091906131b4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290613bdd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090613c6b565b60405180910390fd5b5f8103611e5057611e4b83835f612b3b565b6127a2565b5f439050600560149054906101000a900460ff16156123d857611e716112dc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611edf5750611eaf6112dc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f1757505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f51575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6a5750600560179054906101000a900460ff16155b156123d7578060095410611f9f576019601081905550601054600f81905550602360128190555060125460118190555061200e565b60095481118015611fbe5750601e600954611fba9190613621565b8111155b15611fea57600f601081905550601054600f81905550601960128190555060125460118190555061200d565b6002601081905550601054600f8190555060026012819055506012546011819055505b5b600560159054906101000a900460ff166120fd57600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806120bd5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6120fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390613cd3565b60405180910390fd5b5b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561219a5750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612241576006548211156121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db90613d61565b60405180910390fd5b6008546121f084610dfd565b836121fb9190613621565b111561223c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223390613dc9565b60405180910390fd5b6123d6565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156122de5750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561232d57600654821115612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90613e57565b60405180910390fd5b6123d5565b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166123d45760085461238784610dfd565b836123929190613621565b11156123d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ca90613dc9565b60405180910390fd5b5b5b5b5b5b5f6123e230610dfd565b90505f60075482101590508080156124065750600560169054906101000a900460ff165b801561241f5750600560179054906101000a900460ff16155b801561243c57506002600c5f8581526020019081526020015f2054105b801561248f5750600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156124e25750600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156125355750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561259c576001600560176101000a81548160ff02191690831515021790555061255d612db0565b600c5f8481526020019081526020015f205f815461257a90613e75565b919050819055505f600560176101000a81548160ff0219169083151502179055505b5f600560179054906101000a900460ff16159050600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061264b5750600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612654575f90505b5f811561279157600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126b257505f601154115b156126e6576126df60646126d160115489612f2690919063ffffffff16565b612f3b90919063ffffffff16565b905061276e565b600e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561273d57505f600f54115b1561276d5761276a606461275c600f5489612f2690919063ffffffff16565b612f3b90919063ffffffff16565b90505b5b5f81111561278257612781883083612b3b565b5b808661278e9190613ebc565b95505b61279c888888612b3b565b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561288657612885613eef565b5b6040519080825280602002602001820160405280156128b45781602001602082028036833780820191505090505b50905030815f815181106128cb576128ca613f1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561296e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129929190613f5d565b816001815181106129a6576129a5613f1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a0b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b9a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a6c959493929190614078565b5f604051808303815f87803b158015612a83575f80fd5b505af1158015612a95573d5f803e3d5ffd5b505050505050565b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba090613bdd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e90613c6b565b60405180910390fd5b612c22838383612f50565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9c90614140565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612d339190613621565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d9791906131b4565b60405180910390a3612daa848484612f55565b50505050565b5f612dba30610dfd565b90505f808203612dcb575050612f24565b6014600754612dda9190613467565b821115612df3576014600754612df09190613467565b91505b5f829050612e008161286a565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600247612e4591906134d5565b604051612e5190613681565b5f6040518083038185875af1925050503d805f8114612e8b576040519150601f19603f3d011682016040523d82523d5f602084013e612e90565b606091505b50508092505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612edb90613681565b5f6040518083038185875af1925050503d805f8114612f15576040519150601f19603f3d011682016040523d82523d5f602084013e612f1a565b606091505b5050809250505050505b565b5f8183612f339190613467565b905092915050565b5f8183612f4891906134d5565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f91578082015181840152602081019050612f76565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fb682612f5a565b612fc08185612f64565b9350612fd0818560208601612f74565b612fd981612f9c565b840191505092915050565b5f6020820190508181035f830152612ffc8184612fac565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61303182613008565b9050919050565b61304181613027565b811461304b575f80fd5b50565b5f8135905061305c81613038565b92915050565b5f819050919050565b61307481613062565b811461307e575f80fd5b50565b5f8135905061308f8161306b565b92915050565b5f80604083850312156130ab576130aa613004565b5b5f6130b88582860161304e565b92505060206130c985828601613081565b9150509250929050565b5f8115159050919050565b6130e7816130d3565b82525050565b5f6020820190506131005f8301846130de565b92915050565b5f6020828403121561311b5761311a613004565b5b5f6131288482850161304e565b91505092915050565b5f819050919050565b5f61315461314f61314a84613008565b613131565b613008565b9050919050565b5f6131658261313a565b9050919050565b5f6131768261315b565b9050919050565b6131868161316c565b82525050565b5f60208201905061319f5f83018461317d565b92915050565b6131ae81613062565b82525050565b5f6020820190506131c75f8301846131a5565b92915050565b5f602082840312156131e2576131e1613004565b5b5f6131ef84828501613081565b91505092915050565b5f805f6060848603121561320f5761320e613004565b5b5f61321c8682870161304e565b935050602061322d8682870161304e565b925050604061323e86828701613081565b9150509250925092565b61325181613027565b82525050565b5f60208201905061326a5f830184613248565b92915050565b5f60ff82169050919050565b61328581613270565b82525050565b5f60208201905061329e5f83018461327c565b92915050565b6132ad816130d3565b81146132b7575f80fd5b50565b5f813590506132c8816132a4565b92915050565b5f80604083850312156132e4576132e3613004565b5b5f6132f18582860161304e565b9250506020613302858286016132ba565b9150509250929050565b5f6020828403121561332157613320613004565b5b5f61332e848285016132ba565b91505092915050565b5f806040838503121561334d5761334c613004565b5b5f61335a8582860161304e565b925050602061336b8582860161304e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806133b957607f821691505b6020821081036133cc576133cb613375565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613406602083612f64565b9150613411826133d2565b602082019050919050565b5f6020820190508181035f830152613433816133fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61347182613062565b915061347c83613062565b925082820261348a81613062565b915082820484148315176134a1576134a061343a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134df82613062565b91506134ea83613062565b9250826134fa576134f96134a8565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61355f602f83612f64565b915061356a82613505565b604082019050919050565b5f6020820190508181035f83015261358c81613553565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6135ed602883612f64565b91506135f882613593565b604082019050919050565b5f6020820190508181035f83015261361a816135e1565b9050919050565b5f61362b82613062565b915061363683613062565b925082820190508082111561364e5761364d61343a565b5b92915050565b5f81905092915050565b50565b5f61366c5f83613654565b91506136778261365e565b5f82019050919050565b5f61368b82613661565b9150819050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f6136c9600c83612f64565b91506136d482613695565b602082019050919050565b5f6020820190508181035f8301526136f6816136bd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613757603983612f64565b9150613762826136fd565b604082019050919050565b5f6020820190508181035f8301526137848161374b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6137e5602583612f64565b91506137f08261378b565b604082019050919050565b5f6020820190508181035f830152613812816137d9565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613873602483612f64565b915061387e82613819565b604082019050919050565b5f6020820190508181035f8301526138a081613867565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613901603583612f64565b915061390c826138a7565b604082019050919050565b5f6020820190508181035f83015261392e816138f5565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f61398f603283612f64565b915061399a82613935565b604082019050919050565b5f6020820190508181035f8301526139bc81613983565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a1d602683612f64565b9150613a28826139c3565b604082019050919050565b5f6020820190508181035f830152613a4a81613a11565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613aab602483612f64565b9150613ab682613a51565b604082019050919050565b5f6020820190508181035f830152613ad881613a9f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b39602283612f64565b9150613b4482613adf565b604082019050919050565b5f6020820190508181035f830152613b6681613b2d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613bc7602583612f64565b9150613bd282613b6d565b604082019050919050565b5f6020820190508181035f830152613bf481613bbb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c55602383612f64565b9150613c6082613bfb565b604082019050919050565b5f6020820190508181035f830152613c8281613c49565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613cbd601683612f64565b9150613cc882613c89565b602082019050919050565b5f6020820190508181035f830152613cea81613cb1565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613d4b603583612f64565b9150613d5682613cf1565b604082019050919050565b5f6020820190508181035f830152613d7881613d3f565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613db3601383612f64565b9150613dbe82613d7f565b602082019050919050565b5f6020820190508181035f830152613de081613da7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613e41603683612f64565b9150613e4c82613de7565b604082019050919050565b5f6020820190508181035f830152613e6e81613e35565b9050919050565b5f613e7f82613062565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eb157613eb061343a565b5b600182019050919050565b5f613ec682613062565b9150613ed183613062565b9250828203905081811115613ee957613ee861343a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613f5781613038565b92915050565b5f60208284031215613f7257613f71613004565b5b5f613f7f84828501613f49565b91505092915050565b5f819050919050565b5f613fab613fa6613fa184613f88565b613131565b613062565b9050919050565b613fbb81613f91565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ff381613027565b82525050565b5f6140048383613fea565b60208301905092915050565b5f602082019050919050565b5f61402682613fc1565b6140308185613fcb565b935061403b83613fdb565b805f5b8381101561406b5781516140528882613ff9565b975061405d83614010565b92505060018101905061403e565b5085935050505092915050565b5f60a08201905061408b5f8301886131a5565b6140986020830187613fb2565b81810360408301526140aa818661401c565b90506140b96060830185613248565b6140c660808301846131a5565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61412a602683612f64565b9150614135826140d0565b604082019050919050565b5f6020820190508181035f8301526141578161411e565b905091905056fea264697066735822122047ae7b2a6d2265646af220d43a7967ae50225994045c307bab1b7b997c02563464736f6c63430008150033

Deployed Bytecode Sourcemap

15676:11236:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3115:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4095:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16364:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15751:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3436:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19152:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4297:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15854:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3335:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4834:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15809:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15916:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16574:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15996:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20538:154;;;;;;;;;;;;;:::i;:::-;;3552:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1120:103;;;;;;;;;;;;;:::i;:::-;;21210:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21361:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18535:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19703:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20266:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18338:189;;;;;;;;;;;;;:::i;:::-;;897:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16609:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19968:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3223:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20700:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5132:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3703:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16434:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15956:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20076:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19437:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16066:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18664:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16500:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3911:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16108:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1231:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16148:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3115:100;3169:13;3202:5;3195:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3115:100;:::o;4095:194::-;4203:4;4220:39;4229:12;:10;:12::i;:::-;4243:7;4252:6;4220:8;:39::i;:::-;4277:4;4270:11;;4095:194;;;;:::o;16364:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15751:51::-;;;:::o;3436:108::-;3497:7;3524:12;;3517:19;;3436:108;:::o;19152:277::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19289:4:::1;19281;19276:1;19260:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19259:26;;;;:::i;:::-;19258:35;;;;:::i;:::-;19248:6;:45;;19226:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;19412:8;19402:6;:19;;;;:::i;:::-;19379:20;:42;;;;19152:277:::0;:::o;4297:529::-;4437:4;4454:36;4464:6;4472:9;4483:6;4454:9;:36::i;:::-;4503:24;4530:11;:19;4542:6;4530:19;;;;;;;;;;;;;;;:33;4550:12;:10;:12::i;:::-;4530:33;;;;;;;;;;;;;;;;4503:60;;4616:6;4596:16;:26;;4574:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4726:57;4735:6;4743:12;:10;:12::i;:::-;4776:6;4757:16;:25;4726:8;:57::i;:::-;4814:4;4807:11;;;4297:529;;;;;:::o;15854:53::-;15900:6;15854:53;:::o;3335:93::-;3393:5;3418:2;3411:9;;3335:93;:::o;4834:290::-;4947:4;4964:130;4987:12;:10;:12::i;:::-;5014:7;5073:10;5036:11;:25;5048:12;:10;:12::i;:::-;5036:25;;;;;;;;;;;;;;;:34;5062:7;5036:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4964:8;:130::i;:::-;5112:4;5105:11;;4834:290;;;;:::o;15809:38::-;;;:::o;15916:33::-;;;;;;;;;;;;;:::o;16574:28::-;;;;:::o;15996:31::-;;;;;;;;;;;;;:::o;20538:154::-;20580:12;20625:19;;;;;;;;;;;20617:33;;20658:21;20617:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20603:81;;;;;20569:123;20538:154::o;3552:143::-;3642:7;3669:9;:18;3679:7;3669:18;;;;;;;;;;;;;;;;3662:25;;3552:143;;;:::o;1120:103::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1185:30:::1;1212:1;1185:18;:30::i;:::-;1120:103::o:0;21210:143::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21296:8:::1;21278:15;:26;;;;21330:15;;21315:12;:30;;;;21210:143:::0;:::o;21361:147::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21449:8:::1;21430:16;:27;;;;21484:16;;21468:13;:32;;;;21361:147:::0;:::o;18535:121::-;18587:4;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18621:5:::1;18604:14;;:22;;;;;;;;;;;;;;;;;;18644:4;18637:11;;18535:121:::0;:::o;19703:169::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19860:4:::1;19818:31;:39;19850:6;19818:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19703:169:::0;;:::o;20266:264::-;20346:19;;;;;;;;;;;20330:35;;:12;:10;:12::i;:::-;:35;;;20322:44;;;;;;20409:24;20427:4;20409:9;:24::i;:::-;20399:6;:34;;:48;;;;;20446:1;20437:6;:10;20399:48;20377:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;20498:24;20515:6;20498:16;:24::i;:::-;20266:264;:::o;18338:189::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18409:4:::1;18393:13;;:20;;;;;;;;;;;;;;;;;;18438:4;18424:11;;:18;;;;;;;;;;;;;;;;;;18466:12;18453:10;:25;;;;18504:15;18489:12;:30;;;;18338:189::o:0;897:87::-;943:7;970:6;;;;;;;;;;;963:13;;897:87;:::o;16609:31::-;;;;:::o;19968:100::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20053:7:::1;20039:11;;:21;;;;;;;;;;;;;;;;;;19968:100:::0;:::o;3223:104::-;3279:13;3312:7;3305:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3223:104;:::o;20700:306::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20846:13:::1;20838:21;;:4;:21;;::::0;20816:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20957:41;20986:4;20992:5;20957:28;:41::i;:::-;20700:306:::0;;:::o;5132:475::-;5250:4;5267:24;5294:11;:25;5306:12;:10;:12::i;:::-;5294:25;;;;;;;;;;;;;;;:34;5320:7;5294:34;;;;;;;;;;;;;;;;5267:61;;5381:15;5361:16;:35;;5339:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5497:67;5506:12;:10;:12::i;:::-;5520:7;5548:15;5529:16;:34;5497:8;:67::i;:::-;5595:4;5588:11;;;5132:475;;;;:::o;3703:200::-;3814:4;3831:42;3841:12;:10;:12::i;:::-;3855:9;3866:6;3831:9;:42::i;:::-;3891:4;3884:11;;3703:200;;;;:::o;16434:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15956:33::-;;;;;;;;;;;;;:::o;20076:182::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20192:8:::1;20161:19;:28;20181:7;20161:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20232:7;20216:34;;;20241:8;20216:34;;;;;;:::i;:::-;;;;;;;;20076:182:::0;;:::o;19437:258::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19577:4:::1;19569;19564:1;19548:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19547:26;;;;:::i;:::-;19546:35;;;;:::i;:::-;19536:6;:45;;19514:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;19678:8;19668:6;:19;;;;:::i;:::-;19656:9;:31;;;;19437:258:::0;:::o;16066:35::-;;;;:::o;18664:480::-;18761:4;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18835:6:::1;18830:1;18814:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18813:28;;;;:::i;:::-;18800:9;:41;;18778:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18991:4;18985:2;18969:13;:11;:13::i;:::-;:18;;;;:::i;:::-;18968:27;;;;:::i;:::-;18955:9;:40;;18933:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19105:9;19084:18;:30;;;;19132:4;19125:11;;18664:480:::0;;;:::o;16500:27::-;;;;:::o;3911:176::-;4025:7;4052:11;:18;4064:5;4052:18;;;;;;;;;;;;;;;:27;4071:7;4052:27;;;;;;;;;;;;;;;;4045:34;;3911:176;;;;:::o;16108:33::-;;;;:::o;1231:238::-;1043:12;:10;:12::i;:::-;1032:23;;:7;:5;:7::i;:::-;:23;;;1024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1354:1:::1;1334:22;;:8;:22;;::::0;1312:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1433:28;1452:8;1433:18;:28::i;:::-;1231:238:::0;:::o;16148:24::-;;;;:::o;418:98::-;471:7;498:10;491:17;;418:98;:::o;7399:380::-;7552:1;7535:19;;:5;:19;;;7527:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7633:1;7614:21;;:7;:21;;;7606:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7717:6;7687:11;:18;7699:5;7687:18;;;;;;;;;;;;;;;:27;7706:7;7687:27;;;;;;;;;;;;;;;:36;;;;7755:7;7739:32;;7748:5;7739:32;;;7764:6;7739:32;;;;;;:::i;:::-;;;;;;;;7399:380;;;:::o;21516:4246::-;21664:1;21648:18;;:4;:18;;;21640:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21741:1;21727:16;;:2;:16;;;21719:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21810:1;21800:6;:11;21796:93;;21828:28;21844:4;21850:2;21854:1;21828:15;:28::i;:::-;21871:7;;21796:93;21901:16;21920:12;21901:31;;21949:14;;;;;;;;;;;21945:2526;;;22010:7;:5;:7::i;:::-;22002:15;;:4;:15;;;;:49;;;;;22044:7;:5;:7::i;:::-;22038:13;;:2;:13;;;;22002:49;:86;;;;;22086:1;22072:16;;:2;:16;;;;22002:86;:128;;;;;22123:6;22109:21;;:2;:21;;;;22002:128;:158;;;;;22152:8;;;;;;;;;;;22151:9;22002:158;21980:2480;;;22215:8;22200:10;;22199:24;22195:812;;22266:2;22248:15;:20;;;;22306:15;;22291:12;:30;;;;22365:2;22346:16;:21;;;;22406:16;;22390:13;:32;;;;22195:812;;;22486:10;;22474:8;:23;:75;;;;;22547:2;22534:10;;:15;;;;:::i;:::-;22522:8;:27;;22474:75;22448:559;;;22610:2;22592:15;:20;;;;22650:15;;22635:12;:30;;;;22709:2;22690:16;:21;;;;22750:16;;22734:13;:32;;;;22448:559;;;22833:1;22815:15;:19;;;;22872:15;;22857:12;:30;;;;22931:1;22912:16;:20;;;;22971:16;;22955:13;:32;;;;22448:559;22195:812;23032:13;;;;;;;;;;;23027:223;;23104:19;:25;23124:4;23104:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23133:19;:23;23153:2;23133:23;;;;;;;;;;;;;;;;;;;;;;;;;23104:52;23070:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;23027:223;23324:25;:31;23350:4;23324:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23381:31;:35;23413:2;23381:35;;;;;;;;;;;;;;;;;;;;;;;;;23380:36;23324:92;23298:1147;;;23503:20;;23493:6;:30;;23459:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;23711:9;;23694:13;23704:2;23694:9;:13::i;:::-;23685:6;:22;;;;:::i;:::-;:35;;23651:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23298:1147;;;23889:25;:29;23915:2;23889:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23944:31;:37;23976:4;23944:37;;;;;;;;;;;;;;;;;;;;;;;;;23943:38;23889:92;23863:582;;;24068:20;;24058:6;:30;;24024:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;23863:582;;;24225:31;:35;24257:2;24225:35;;;;;;;;;;;;;;;;;;;;;;;;;24220:225;;24345:9;;24328:13;24338:2;24328:9;:13::i;:::-;24319:6;:22;;;;:::i;:::-;:35;;24285:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24220:225;23863:582;23298:1147;21980:2480;21945:2526;24483:28;24514:24;24532:4;24514:9;:24::i;:::-;24483:55;;24551:12;24590:18;;24566:20;:42;;24551:57;;24639:7;:35;;;;;24663:11;;;;;;;;;;;24639:35;:61;;;;;24692:8;;;;;;;;;;;24691:9;24639:61;:105;;;;;24742:1;24718:11;:21;24730:8;24718:21;;;;;;;;;;;;:25;24639:105;:154;;;;;24762:25;:31;24788:4;24762:31;;;;;;;;;;;;;;;;;;;;;;;;;24761:32;24639:154;:197;;;;;24811:19;:25;24831:4;24811:25;;;;;;;;;;;;;;;;;;;;;;;;;24810:26;24639:197;:238;;;;;24854:19;:23;24874:2;24854:23;;;;;;;;;;;;;;;;;;;;;;;;;24853:24;24639:238;24621:410;;;24915:4;24904:8;;:15;;;;;;;;;;;;;;;;;;24936:10;:8;:10::i;:::-;24965:11;:21;24977:8;24965:21;;;;;;;;;;;;24963:23;;;;;:::i;:::-;;;;;;;;25014:5;25003:8;;:16;;;;;;;;;;;;;;;;;;24621:410;25043:12;25059:8;;;;;;;;;;;25058:9;25043:24;;25084:19;:25;25104:4;25084:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25113:19;:23;25133:2;25113:23;;;;;;;;;;;;;;;;;;;;;;;;;25084:52;25080:100;;;25163:5;25153:15;;25080:100;25192:12;25225:7;25221:488;;;25267:25;:29;25293:2;25267:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25316:1;25300:13;;:17;25267:50;25263:297;;;25345:34;25375:3;25345:25;25356:13;;25345:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25338:41;;25263:297;;;25432:25;:31;25458:4;25432:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25482:1;25467:12;;:16;25432:51;25428:132;;;25511:33;25540:3;25511:24;25522:12;;25511:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25504:40;;25428:132;25263:297;25587:1;25580:4;:8;25576:91;;;25609:42;25625:4;25639;25646;25609:15;:42::i;:::-;25576:91;25693:4;25683:14;;;;;:::i;:::-;;;25221:488;25721:33;25737:4;25743:2;25747:6;25721:15;:33::i;:::-;21629:4133;;;;;21516:4246;;;;:::o;1477:191::-;1551:16;1570:6;;;;;;;;;;;1551:25;;1596:8;1587:6;;:17;;;;;;;;;;;;;;;;;;1651:8;1620:40;;1641:8;1620:40;;;;;;;;;;;;1540:128;1477:191;:::o;26413:496::-;26489:21;26527:1;26513:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26489:40;;26558:4;26540;26545:1;26540:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26584:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26574:4;26579:1;26574:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26619:62;26636:4;26651:15;26669:11;26619:8;:62::i;:::-;26704:15;:66;;;26785:11;26811:1;26828:4;26855;26875:15;26704:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26468:441;26413:496;:::o;21014:188::-;21131:5;21097:25;:31;21123:4;21097:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21188:5;21154:40;;21182:4;21154:40;;;;;;;;;;;;21014:188;;:::o;5615:770::-;5773:1;5755:20;;:6;:20;;;5747:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5857:1;5836:23;;:9;:23;;;5828:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5912:47;5933:6;5941:9;5952:6;5912:20;:47::i;:::-;5972:21;5996:9;:17;6006:6;5996:17;;;;;;;;;;;;;;;;5972:41;;6063:6;6046:13;:23;;6024:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6207:6;6191:13;:22;6171:9;:17;6181:6;6171:17;;;;;;;;;;;;;;;:42;;;;6259:6;6235:9;:20;6245:9;6235:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6300:9;6283:35;;6292:6;6283:35;;;6311:6;6283:35;;;;;;:::i;:::-;;;;;;;;6331:46;6351:6;6359:9;6370:6;6331:19;:46::i;:::-;5736:649;5615:770;;;:::o;25770:635::-;25809:23;25835:24;25853:4;25835:9;:24::i;:::-;25809:50;;25870:12;25918:1;25899:15;:20;25895:59;;25936:7;;;;25895:59;26009:2;25988:18;;:23;;;;:::i;:::-;25970:15;:41;25966:115;;;26067:2;26046:18;;:23;;;;:::i;:::-;26028:41;;25966:115;26093:26;26122:15;26093:44;;26150:36;26167:18;26150:16;:36::i;:::-;26221:19;;;;;;;;;;;26213:33;;26278:1;26254:21;:25;;;;:::i;:::-;26213:95;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26199:109;;;;;26341:16;;;;;;;;;;;26333:30;;26371:21;26333:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26319:78;;;;;25798:607;;;25770:635;:::o;9528:98::-;9586:7;9617:1;9613;:5;;;;:::i;:::-;9606:12;;9528:98;;;;:::o;9634:::-;9692:7;9723:1;9719;:5;;;;:::i;:::-;9712:12;;9634:98;;;;:::o;7787:125::-;;;;:::o;7920: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:147::-;13238:11;13275:3;13260:18;;13137:147;;;;:::o;13290:114::-;;:::o;13410:398::-;13569:3;13590:83;13671:1;13666:3;13590:83;:::i;:::-;13583:90;;13682:93;13771:3;13682:93;:::i;:::-;13800:1;13795:3;13791:11;13784:18;;13410:398;;;:::o;13814:379::-;13998:3;14020:147;14163:3;14020:147;:::i;:::-;14013:154;;14184:3;14177:10;;13814:379;;;:::o;14199:162::-;14339:14;14335:1;14327:6;14323:14;14316:38;14199:162;:::o;14367:366::-;14509:3;14530:67;14594:2;14589:3;14530:67;:::i;:::-;14523:74;;14606:93;14695:3;14606:93;:::i;:::-;14724:2;14719:3;14715:12;14708:19;;14367:366;;;:::o;14739:419::-;14905:4;14943:2;14932:9;14928:18;14920:26;;14992:9;14986:4;14982:20;14978:1;14967:9;14963:17;14956:47;15020:131;15146:4;15020:131;:::i;:::-;15012:139;;14739:419;;;:::o;15164:244::-;15304:34;15300:1;15292:6;15288:14;15281:58;15373:27;15368:2;15360:6;15356:15;15349:52;15164:244;:::o;15414:366::-;15556:3;15577:67;15641:2;15636:3;15577:67;:::i;:::-;15570:74;;15653:93;15742:3;15653:93;:::i;:::-;15771:2;15766:3;15762:12;15755:19;;15414:366;;;:::o;15786:419::-;15952:4;15990:2;15979:9;15975:18;15967:26;;16039:9;16033:4;16029:20;16025:1;16014:9;16010:17;16003:47;16067:131;16193:4;16067:131;:::i;:::-;16059:139;;15786:419;;;:::o;16211:224::-;16351:34;16347:1;16339:6;16335:14;16328:58;16420:7;16415:2;16407:6;16403:15;16396:32;16211:224;:::o;16441:366::-;16583:3;16604:67;16668:2;16663:3;16604:67;:::i;:::-;16597:74;;16680:93;16769:3;16680:93;:::i;:::-;16798:2;16793:3;16789:12;16782:19;;16441:366;;;:::o;16813:419::-;16979:4;17017:2;17006:9;17002:18;16994:26;;17066:9;17060:4;17056:20;17052:1;17041:9;17037:17;17030:47;17094:131;17220:4;17094:131;:::i;:::-;17086:139;;16813:419;;;:::o;17238:223::-;17378:34;17374:1;17366:6;17362:14;17355:58;17447:6;17442:2;17434:6;17430:15;17423:31;17238:223;:::o;17467:366::-;17609:3;17630:67;17694:2;17689:3;17630:67;:::i;:::-;17623:74;;17706:93;17795:3;17706:93;:::i;:::-;17824:2;17819:3;17815:12;17808:19;;17467:366;;;:::o;17839:419::-;18005:4;18043:2;18032:9;18028:18;18020:26;;18092:9;18086:4;18082:20;18078:1;18067:9;18063:17;18056:47;18120:131;18246:4;18120:131;:::i;:::-;18112:139;;17839:419;;;:::o;18264:240::-;18404:34;18400:1;18392:6;18388:14;18381:58;18473:23;18468:2;18460:6;18456:15;18449:48;18264:240;:::o;18510:366::-;18652:3;18673:67;18737:2;18732:3;18673:67;:::i;:::-;18666:74;;18749:93;18838:3;18749:93;:::i;:::-;18867:2;18862:3;18858:12;18851:19;;18510:366;;;:::o;18882:419::-;19048:4;19086:2;19075:9;19071:18;19063:26;;19135:9;19129:4;19125:20;19121:1;19110:9;19106:17;19099:47;19163:131;19289:4;19163:131;:::i;:::-;19155:139;;18882:419;;;:::o;19307:237::-;19447:34;19443:1;19435:6;19431:14;19424:58;19516:20;19511:2;19503:6;19499:15;19492:45;19307:237;:::o;19550:366::-;19692:3;19713:67;19777:2;19772:3;19713:67;:::i;:::-;19706:74;;19789:93;19878:3;19789:93;:::i;:::-;19907:2;19902:3;19898:12;19891:19;;19550:366;;;:::o;19922:419::-;20088:4;20126:2;20115:9;20111:18;20103:26;;20175:9;20169:4;20165:20;20161:1;20150:9;20146:17;20139:47;20203:131;20329:4;20203:131;:::i;:::-;20195:139;;19922:419;;;:::o;20347:225::-;20487:34;20483:1;20475:6;20471:14;20464:58;20556:8;20551:2;20543:6;20539:15;20532:33;20347:225;:::o;20578:366::-;20720:3;20741:67;20805:2;20800:3;20741:67;:::i;:::-;20734:74;;20817:93;20906:3;20817:93;:::i;:::-;20935:2;20930:3;20926:12;20919:19;;20578:366;;;:::o;20950:419::-;21116:4;21154:2;21143:9;21139:18;21131:26;;21203:9;21197:4;21193:20;21189:1;21178:9;21174:17;21167:47;21231:131;21357:4;21231:131;:::i;:::-;21223:139;;20950:419;;;:::o;21375:223::-;21515:34;21511:1;21503:6;21499:14;21492:58;21584:6;21579:2;21571:6;21567:15;21560:31;21375:223;:::o;21604:366::-;21746:3;21767:67;21831:2;21826:3;21767:67;:::i;:::-;21760:74;;21843:93;21932:3;21843:93;:::i;:::-;21961:2;21956:3;21952:12;21945:19;;21604:366;;;:::o;21976:419::-;22142:4;22180:2;22169:9;22165:18;22157:26;;22229:9;22223:4;22219:20;22215:1;22204:9;22200:17;22193:47;22257:131;22383:4;22257:131;:::i;:::-;22249:139;;21976:419;;;:::o;22401:221::-;22541:34;22537:1;22529:6;22525:14;22518:58;22610:4;22605:2;22597:6;22593:15;22586:29;22401:221;:::o;22628:366::-;22770:3;22791:67;22855:2;22850:3;22791:67;:::i;:::-;22784:74;;22867:93;22956:3;22867:93;:::i;:::-;22985:2;22980:3;22976:12;22969:19;;22628:366;;;:::o;23000:419::-;23166:4;23204:2;23193:9;23189:18;23181:26;;23253:9;23247:4;23243:20;23239:1;23228:9;23224:17;23217:47;23281:131;23407:4;23281:131;:::i;:::-;23273:139;;23000:419;;;:::o;23425:224::-;23565:34;23561:1;23553:6;23549:14;23542:58;23634:7;23629:2;23621:6;23617:15;23610:32;23425:224;:::o;23655:366::-;23797:3;23818:67;23882:2;23877:3;23818:67;:::i;:::-;23811:74;;23894:93;23983:3;23894:93;:::i;:::-;24012:2;24007:3;24003:12;23996:19;;23655:366;;;:::o;24027:419::-;24193:4;24231:2;24220:9;24216:18;24208:26;;24280:9;24274:4;24270:20;24266:1;24255:9;24251:17;24244:47;24308:131;24434:4;24308:131;:::i;:::-;24300:139;;24027:419;;;:::o;24452:222::-;24592:34;24588:1;24580:6;24576:14;24569:58;24661:5;24656:2;24648:6;24644:15;24637:30;24452:222;:::o;24680:366::-;24822:3;24843:67;24907:2;24902:3;24843:67;:::i;:::-;24836:74;;24919:93;25008:3;24919:93;:::i;:::-;25037:2;25032:3;25028:12;25021:19;;24680:366;;;:::o;25052:419::-;25218:4;25256:2;25245:9;25241:18;25233:26;;25305:9;25299:4;25295:20;25291:1;25280:9;25276:17;25269:47;25333:131;25459:4;25333:131;:::i;:::-;25325:139;;25052:419;;;:::o;25477:172::-;25617:24;25613:1;25605:6;25601:14;25594:48;25477:172;:::o;25655:366::-;25797:3;25818:67;25882:2;25877:3;25818:67;:::i;:::-;25811:74;;25894:93;25983:3;25894:93;:::i;:::-;26012:2;26007:3;26003:12;25996:19;;25655:366;;;:::o;26027:419::-;26193:4;26231:2;26220:9;26216:18;26208:26;;26280:9;26274:4;26270:20;26266:1;26255:9;26251:17;26244:47;26308:131;26434:4;26308:131;:::i;:::-;26300:139;;26027:419;;;:::o;26452:240::-;26592:34;26588:1;26580:6;26576:14;26569:58;26661:23;26656:2;26648:6;26644:15;26637:48;26452:240;:::o;26698:366::-;26840:3;26861:67;26925:2;26920:3;26861:67;:::i;:::-;26854:74;;26937:93;27026:3;26937:93;:::i;:::-;27055:2;27050:3;27046:12;27039:19;;26698:366;;;:::o;27070:419::-;27236:4;27274:2;27263:9;27259:18;27251:26;;27323:9;27317:4;27313:20;27309:1;27298:9;27294:17;27287:47;27351:131;27477:4;27351:131;:::i;:::-;27343:139;;27070:419;;;:::o;27495:169::-;27635:21;27631:1;27623:6;27619:14;27612:45;27495:169;:::o;27670:366::-;27812:3;27833:67;27897:2;27892:3;27833:67;:::i;:::-;27826:74;;27909:93;27998:3;27909:93;:::i;:::-;28027:2;28022:3;28018:12;28011:19;;27670:366;;;:::o;28042:419::-;28208:4;28246:2;28235:9;28231:18;28223:26;;28295:9;28289:4;28285:20;28281:1;28270:9;28266:17;28259:47;28323:131;28449:4;28323:131;:::i;:::-;28315:139;;28042:419;;;:::o;28467:241::-;28607:34;28603:1;28595:6;28591:14;28584:58;28676:24;28671:2;28663:6;28659:15;28652:49;28467:241;:::o;28714:366::-;28856:3;28877:67;28941:2;28936:3;28877:67;:::i;:::-;28870:74;;28953:93;29042:3;28953:93;:::i;:::-;29071:2;29066:3;29062:12;29055:19;;28714:366;;;:::o;29086:419::-;29252:4;29290:2;29279:9;29275:18;29267:26;;29339:9;29333:4;29329:20;29325:1;29314:9;29310:17;29303:47;29367:131;29493:4;29367:131;:::i;:::-;29359:139;;29086:419;;;:::o;29511:233::-;29550:3;29573:24;29591:5;29573:24;:::i;:::-;29564:33;;29619:66;29612:5;29609:77;29606:103;;29689:18;;:::i;:::-;29606:103;29736:1;29729:5;29725:13;29718:20;;29511:233;;;:::o;29750:194::-;29790:4;29810:20;29828:1;29810:20;:::i;:::-;29805:25;;29844:20;29862:1;29844:20;:::i;:::-;29839:25;;29888:1;29885;29881:9;29873:17;;29912:1;29906:4;29903:11;29900:37;;;29917:18;;:::i;:::-;29900:37;29750:194;;;;:::o;29950:180::-;29998:77;29995:1;29988:88;30095:4;30092:1;30085:15;30119:4;30116:1;30109:15;30136:180;30184:77;30181:1;30174:88;30281:4;30278:1;30271:15;30305:4;30302:1;30295:15;30322:143;30379:5;30410:6;30404:13;30395:22;;30426:33;30453:5;30426:33;:::i;:::-;30322:143;;;;:::o;30471:351::-;30541:6;30590:2;30578:9;30569:7;30565:23;30561:32;30558:119;;;30596:79;;:::i;:::-;30558:119;30716:1;30741:64;30797:7;30788:6;30777:9;30773:22;30741:64;:::i;:::-;30731:74;;30687:128;30471:351;;;;:::o;30828:85::-;30873:7;30902:5;30891:16;;30828:85;;;:::o;30919:158::-;30977:9;31010:61;31028:42;31037:32;31063:5;31037:32;:::i;:::-;31028:42;:::i;:::-;31010:61;:::i;:::-;30997:74;;30919:158;;;:::o;31083:147::-;31178:45;31217:5;31178:45;:::i;:::-;31173:3;31166:58;31083:147;;:::o;31236:114::-;31303:6;31337:5;31331:12;31321:22;;31236:114;;;:::o;31356:184::-;31455:11;31489:6;31484:3;31477:19;31529:4;31524:3;31520:14;31505:29;;31356:184;;;;:::o;31546:132::-;31613:4;31636:3;31628:11;;31666:4;31661:3;31657:14;31649:22;;31546:132;;;:::o;31684:108::-;31761:24;31779:5;31761:24;:::i;:::-;31756:3;31749:37;31684:108;;:::o;31798:179::-;31867:10;31888:46;31930:3;31922:6;31888:46;:::i;:::-;31966:4;31961:3;31957:14;31943:28;;31798:179;;;;:::o;31983:113::-;32053:4;32085;32080:3;32076:14;32068:22;;31983:113;;;:::o;32132:732::-;32251:3;32280:54;32328:5;32280:54;:::i;:::-;32350:86;32429:6;32424:3;32350:86;:::i;:::-;32343:93;;32460:56;32510:5;32460:56;:::i;:::-;32539:7;32570:1;32555:284;32580:6;32577:1;32574:13;32555:284;;;32656:6;32650:13;32683:63;32742:3;32727:13;32683:63;:::i;:::-;32676:70;;32769:60;32822:6;32769:60;:::i;:::-;32759:70;;32615:224;32602:1;32599;32595:9;32590:14;;32555:284;;;32559:14;32855:3;32848:10;;32256:608;;;32132:732;;;;:::o;32870:831::-;33133:4;33171:3;33160:9;33156:19;33148:27;;33185:71;33253:1;33242:9;33238:17;33229:6;33185:71;:::i;:::-;33266:80;33342:2;33331:9;33327:18;33318:6;33266:80;:::i;:::-;33393:9;33387:4;33383:20;33378:2;33367:9;33363:18;33356:48;33421:108;33524:4;33515:6;33421:108;:::i;:::-;33413:116;;33539:72;33607:2;33596:9;33592:18;33583:6;33539:72;:::i;:::-;33621:73;33689:3;33678:9;33674:19;33665:6;33621:73;:::i;:::-;32870:831;;;;;;;;:::o;33707:225::-;33847:34;33843:1;33835:6;33831:14;33824:58;33916:8;33911:2;33903:6;33899:15;33892:33;33707:225;:::o;33938:366::-;34080:3;34101:67;34165:2;34160:3;34101:67;:::i;:::-;34094:74;;34177:93;34266:3;34177:93;:::i;:::-;34295:2;34290:3;34286:12;34279:19;;33938:366;;;:::o;34310:419::-;34476:4;34514:2;34503:9;34499:18;34491:26;;34563:9;34557:4;34553:20;34549:1;34538:9;34534:17;34527:47;34591:131;34717:4;34591:131;:::i;:::-;34583:139;;34310:419;;;:::o

Swarm Source

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